Commit 4da1bb79 authored by jan.koester's avatar jan.koester
Browse files

test

parent 67ea8771
Loading
Loading
Loading
Loading

cmake/Findyaml.cmake

0 → 100644
+58 −0
Original line number Diff line number Diff line
# libyaml (C) finden – mehrere Strategien
# 1) CONFIG-Paket (z.B. vcpkg) -> liefert Ziel yaml::yaml
find_package(yaml CONFIG QUIET)

if(yaml_FOUND)
    message(STATUS "Found libyaml via CONFIG: yaml::yaml")
    set(LIBYAML_TARGET yaml::yaml)
else()
    # 2) pkg-config (linux/msys, evtl. auch Windows mit pkg-config)
    find_package(PkgConfig QUIET)
    if(PkgConfig_FOUND)
        pkg_check_modules(LIBYAML QUIET yaml-0.1)
    endif()

    if(LIBYAML_FOUND)
        message(STATUS "Found libyaml via pkg-config: ${LIBYAML_VERSION}")
        add_library(libyaml_pkg INTERFACE)
        target_include_directories(libyaml_pkg INTERFACE ${LIBYAML_INCLUDE_DIRS})
        target_link_libraries(libyaml_pkg INTERFACE ${LIBYAML_LIBRARIES})
        set(LIBYAML_TARGET libyaml_pkg)
    else()
        # 3) Fallback: klassisch suchen
        find_path(LIBYAML_INCLUDE_DIR yaml.h
                  HINTS $ENV{LIBYAML_ROOT} ${CMAKE_PREFIX_PATH})
        find_library(LIBYAML_LIBRARY NAMES yaml libyaml
                     HINTS $ENV{LIBYAML_ROOT} ${CMAKE_PREFIX_PATH})
        if(LIBYAML_INCLUDE_DIR AND LIBYAML_LIBRARY)
            message(STATUS "Found libyaml via classic search: ${LIBYAML_LIBRARY}")
            add_library(libyaml_manual INTERFACE)
            target_include_directories(libyaml_manual INTERFACE ${LIBYAML_INCLUDE_DIR})
            target_link_libraries(libyaml_manual INTERFACE ${LIBYAML_LIBRARY})
            set(LIBYAML_TARGET libyaml_manual)
        else()
            message(FATAL_ERROR "libyaml (C) nicht gefunden. \
Setze CMAKE_PREFIX_PATH/Libpfade oder installiere das Paket (yaml/libyaml).")
        endif()
    endif()
endif()

# Dein Target
add_library(yamlconf SHARED yaml/yamlconf.cpp)
add_dependencies(yamlconf confplus)
set_target_properties(yamlconf PROPERTIES PREFIX "" OUTPUT_NAME yaml)

# Nur definieren, wenn statisch gegen libyaml gelinkt wird:
# target_compile_definitions(yamlconf PRIVATE YAML_DECLARE_STATIC)

# Includes ggf. ergänzen:
# target_include_directories(yamlconf PRIVATE ${YAML_INCLUDE_DIRS})

# Linken: verwende das ermittelte LIBYAML_TARGET statt YAML::YAML
if(WIN32)
    target_link_libraries(yamlconf PUBLIC confplus PRIVATE ${LIBYAML_TARGET})
else()
    target_link_libraries(yamlconf PUBLIC confplus PRIVATE ${LIBYAML_TARGET} dl)
endif()

install(TARGETS yamlconf RUNTIME DESTINATION bin LIBRARY DESTINATION lib/confplus/backend)