File CMakeLists.txt of Package failed_maim

cmake_minimum_required(VERSION 3.5)
project(maim VERSION 5.8.0 LANGUAGES CXX)

# Require a modern C++ standard so system headers (icu, string_view, etc.)
# that expect C++14/C++17 compile correctly.
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

# Use pkg-config when available for X11 / Xrender and fall back to Find modules.
include(FindPkgConfig)

# Try to acquire X11/Xrender via pkg-config (preferred)
pkg_check_modules(PKG_X11 QUIET x11)
pkg_check_modules(PKG_XRENDER QUIET xrender)

# Find PNG and JPEG with CMake modules
find_package(PNG REQUIRED)
find_package(JPEG REQUIRED)
find_package(Threads REQUIRED)

# Collect sources
file(GLOB_RECURSE MAIM_SOURCES
    "${CMAKE_SOURCE_DIR}/src/*.cpp"
    "${CMAKE_SOURCE_DIR}/src/*.c"
    "${CMAKE_SOURCE_DIR}/src/*.cc"
)

if (MAIM_SOURCES STREQUAL "")
    message(FATAL_ERROR "No source files found in src/ - cannot build maim.")
endif()

add_executable(maim ${MAIM_SOURCES})

# Include directories: prefer pkg-config variables if present
if (PKG_X11_FOUND)
    foreach(dir ${PKG_X11_INCLUDE_DIRS})
        target_include_directories(maim PRIVATE ${dir})
    endforeach()
    foreach(lib ${PKG_X11_LIBRARY_DIRS})
        link_directories(${lib})
    endforeach()
endif()

if (PKG_XRENDER_FOUND)
    foreach(dir ${PKG_XRENDER_INCLUDE_DIRS})
        target_include_directories(maim PRIVATE ${dir})
    endforeach()
    foreach(lib ${PKG_XRENDER_LIBRARY_DIRS})
        link_directories(${lib})
    endforeach()
endif()

# Add PNG/JPEG include dirs if provided by their find modules
if (PNG_FOUND)
    target_include_directories(maim PRIVATE ${PNG_INCLUDE_DIRS})
endif()
if (JPEG_FOUND)
    target_include_directories(maim PRIVATE ${JPEG_INCLUDE_DIRS})
endif()

# Link libraries: prefer pkg-config libs, fall back to standard variables
set(MAIM_LIBS "")
if (PKG_X11_FOUND)
    list(APPEND MAIM_LIBS ${PKG_X11_LIBRARIES})
endif()
if (PKG_XRENDER_FOUND)
    list(APPEND MAIM_LIBS ${PKG_XRENDER_LIBRARIES})
endif()

if (PNG_LIBRARY)
    list(APPEND MAIM_LIBS ${PNG_LIBRARY})
elseif (PNG_LIBRARIES)
    list(APPEND MAIM_LIBS ${PNG_LIBRARIES})
endif()

if (JPEG_LIBRARY)
    list(APPEND MAIM_LIBS ${JPEG_LIBRARY})
elseif (JPEG_LIBRARIES)
    list(APPEND MAIM_LIBS ${JPEG_LIBRARIES})
endif()

# Common system libs typically used by maim
find_library(LIBX11 NAMES X11)
find_library(LIBXRENDER NAMES Xrender)
find_library(LIBXEXT NAMES Xext)

if (LIBX11)
    list(APPEND MAIM_LIBS ${LIBX11})
endif()
if (LIBXRENDER)
    list(APPEND MAIM_LIBS ${LIBXRENDER})
endif()
if (LIBXEXT)
    list(APPEND MAIM_LIBS ${LIBXEXT})
endif()

# Threads
list(APPEND MAIM_LIBS Threads::Threads)

target_link_libraries(maim PRIVATE ${MAIM_LIBS})

# Ensure verbose output when building via make
set_property(GLOBAL PROPERTY RULE_MESSAGES OFF)
set(CMAKE_VERBOSE_MAKEFILE ON)
openSUSE Build Service is sponsored by