Commit 5d990fda authored by jan.koester's avatar jan.koester
Browse files

test

parent e550ab4a
Loading
Loading
Loading
Loading
+31 −12
Original line number Diff line number Diff line
# iniparser-config.cmake
# Unterstützt find_package(INIPARSER) ohne REQUIRED-Flag.

# --------------------------------------------------------------------------
# 1. Definieren der Pfadvariablen (Pfadsuche und Fallbacks)
# --------------------------------------------------------------------------

# --- Definiere plattformspezifische Dateinamen für STATIC Libs ---
set(INIPARSER_FOUND FALSE) # Standardmäßig nicht gefunden

# --- Definiere plattformspezifische Dateinamen für STATIC Libs (für Windows-Prüfung) ---
if (WIN32)
    set(_INIPARSER_LIB_NAME_STATIC "iniparser-static.lib")
    set(_INIPARSER_LIB_NAME_STATIC_DEBUG "iniparser-static-d.lib")
@@ -41,21 +44,36 @@ endif()

# Setze den Include-Pfad (ist i.d.R. immer ${INIPARSER_ROOT}/include)
set(INIPARSER_INCLUDE_DIR "${INIPARSER_ROOT}/include")
set(INIPARSER_FOUND TRUE)


# --- Multiarch-Fix für Unix: Absoluten Bibliothekspfad suchen ---
if (NOT WIN32)
    # 🌟 MULTIARCH FIX: find_library findet den absoluten, Multiarch-fähigen Pfad
    # zur statischen Bibliothek libiniparser.a.
# --------------------------------------------------------------------------
# 2. Bibliothek suchen und FOUND-Variable setzen (Multiarch- & Optional-Fix)
# --------------------------------------------------------------------------

if (WIN32)
    # Windows: Wir gehen davon aus, dass die Dateien unter ${INIPARSER_ROOT}/lib liegen
    set(INIPARSER_LIBRARY_DIR "${INIPARSER_ROOT}/lib")

    # Prüfe die Existenz der Release-Bibliothek, um INIPARSER_FOUND zu setzen
    if (EXISTS "${INIPARSER_LIBRARY_DIR}/${_INIPARSER_LIB_NAME_STATIC}")
        set(INIPARSER_FOUND TRUE)
    endif()
else()
    # Unix/Linux: Verwende find_library für Multiarch-Unterstützung
    # Suche die statische Bibliothek; der gefundene Pfad ist ABSOLUT
    find_library(INIPARSER_LIBRARY NAMES iniparser)

    if (INIPARSER_LIBRARY)
        set(INIPARSER_FOUND TRUE)
    endif()
endif()


# --------------------------------------------------------------------------
# 2. Erstellen des Namespaced IMPORTED Targets
# 3. Erstellen des Namespaced IMPORTED Targets (Nur wenn gefunden)
# --------------------------------------------------------------------------

if (NOT TARGET iniparser::iniparser)
if (NOT TARGET iniparser::iniparser AND INIPARSER_FOUND)
    add_library(iniparser::iniparser STATIC IMPORTED)

    set_target_properties(iniparser::iniparser PROPERTIES
@@ -65,19 +83,20 @@ if (NOT TARGET iniparser::iniparser)

    # --- Windows Implementierung (.lib) ---
    if (WIN32)
        set(INIPARSER_LIBRARY_DIR "${INIPARSER_ROOT}/lib")
        # Pfade wurden oben bereits definiert und geprüft
        set_target_properties(iniparser::iniparser PROPERTIES
            IMPORTED_LOCATION_RELEASE "${INIPARSER_LIBRARY_DIR}/${_INIPARSER_LIB_NAME_STATIC}"
            IMPORTED_LOCATION_DEBUG "${INIPARSER_LIBRARY_DIR}/${_INIPARSER_LIB_NAME_STATIC_DEBUG}"
        )
    # --- Linux/Unix Implementierung (.a) ---
    else()
        # NUTZT den von find_library gefundenen Multiarch-fähigen ABSOLUTEN PFAD
        # NUTZT den von find_library gefundenen ABSOLUTEN PFAD
        set_target_properties(iniparser::iniparser PROPERTIES
            IMPORTED_LOCATION_RELEASE "${INIPARSER_LIBRARY}"
            IMPORTED_LOCATION_DEBUG "${INIPARSER_LIBRARY}"
        )
    endif()

    set(INIPARSER_FOUND TRUE)
endif()

# Verhindert, dass die Variable am Ende des Skripts auf FALSE zurückgesetzt wird
set(INIPARSER_LIBRARIES "iniparser::iniparser" CACHE STRING "The INIPARSER library target.")
+37 −13
Original line number Diff line number Diff line
# yaml-config.cmake
# Unterstützt find_package(YAML) ohne REQUIRED-Flag.

# --------------------------------------------------------------------------
# 1. Definieren der Pfadvariablen (Pfadsuche und Fallbacks)
# --------------------------------------------------------------------------

set(YAML_FOUND FALSE) # Standardmäßig nicht gefunden

# --- Definiere plattformspezifische Dateinamen ---
if (WIN32)
    set(_YAML_DLL_NAME "yaml.dll")
    set(_YAML_IMPLIB_NAME "yaml.lib")
endif()

if(DEFINED CMAKE_PREFIX_PATH)
    foreach(PREFIX_PATH ${CMAKE_PREFIX_PATH})
        # Prüfen auf YAML-Header (yaml.h)
        set(_POTENTIAL_HEADER_FILE "${PREFIX_PATH}/include/yaml.h")

        if (EXISTS "${_POTENTIAL_HEADER_FILE}")
@@ -19,31 +29,45 @@ endif()
if(NOT YAML_ROOT)
    if(DEFINED CMAKE_INSTALL_PREFIX)
        set(YAML_ROOT "${CMAKE_INSTALL_PREFIX}")
    # FIX: Füge den UNIX-Standardpfad-Fallback hinzu, um /usr/local/lib Fehler zu verhindern
    elseif(UNIX)
        # Behalten Sie den /usr-Fallback bei, um den Include-Pfad zu setzen
        set(YAML_ROOT "/usr")
    else()
        get_filename_component(YAML_ROOT "${CMAKE_CURRENT_LIST_DIR}/../../" ABSOLUTE)
    endif()
endif()

# Setze den Include-Pfad (ist i.d.R. immer ${YAML_ROOT}/include)
# Setze den Include-Pfad
set(YAML_INCLUDE_DIR "${YAML_ROOT}/include")
set(YAML_FOUND TRUE)

# --- Definiere plattformspezifische Pfade und suche auf Unix ---

# --------------------------------------------------------------------------
# 2. Bibliothek suchen und FOUND-Variable setzen (Multiarch- & Optional-Fix)
# --------------------------------------------------------------------------

if (WIN32)
    set(_YAML_DLL_NAME "yaml.dll")
    set(_YAML_IMPLIB_NAME "yaml.lib")
    # Windows: Wir gehen davon aus, dass die Dateien unter ${YAML_ROOT}/lib liegen
    set(YAML_LIBRARY_DIR "${YAML_ROOT}/lib")

    # Prüfe die Existenz der Release-DLL, um YAML_FOUND zu setzen
    if (EXISTS "${YAML_LIBRARY_DIR}/${_YAML_DLL_NAME}")
        set(YAML_FOUND TRUE)
    endif()
else()
    # Unix/Linux: Verwende find_library für Multiarch-Unterstützung
    find_library(YAML_LIBRARY NAMES yaml)

    if (YAML_LIBRARY)
        set(YAML_FOUND TRUE)
    endif()
endif()


# --------------------------------------------------------------------------
# 2. Erstellen des Namespaced IMPORTED Targets
# 3. Erstellen des Namespaced IMPORTED Targets (Nur wenn gefunden)
# --------------------------------------------------------------------------

if (NOT TARGET yaml::yaml)
if (NOT TARGET yaml::yaml AND YAML_FOUND)
    add_library(yaml::yaml SHARED IMPORTED)

    set_target_properties(yaml::yaml PROPERTIES
@@ -53,8 +77,7 @@ if (NOT TARGET yaml::yaml)

    # --- Windows Implementierung (.dll/.lib) ---
    if (WIN32)
        # Windows muss weiterhin auf dem konfigurierten Pfad basieren
        set(YAML_LIBRARY_DIR "${YAML_ROOT}/lib")
        # Pfade wurden oben bereits definiert und geprüft
        set_target_properties(yaml::yaml PROPERTIES
            IMPORTED_LOCATION_RELEASE "${YAML_LIBRARY_DIR}/${_YAML_DLL_NAME}"
            IMPORTED_IMPLIB_RELEASE "${YAML_LIBRARY_DIR}/${_YAML_IMPLIB_NAME}"
@@ -63,12 +86,13 @@ if (NOT TARGET yaml::yaml)
        )
    # --- Linux/Unix Implementierung (.so) ---
    else()
        # NUTZT den von find_library gefundenen Multiarch-fähigen ABSOLUTEN PFAD
        # NUTZT den von find_library gefundenen ABSOLUTEN PFAD (Multiarch-kompatibel)
        set_target_properties(yaml::yaml PROPERTIES
            IMPORTED_LOCATION_RELEASE "${YAML_LIBRARY}"
            IMPORTED_LOCATION_DEBUG "${YAML_LIBRARY}"
        )
    endif()
endif()

# Verhindert, dass die Variable am Ende des Skripts auf FALSE zurückgesetzt wird
set(YAML_LIBRARIES "yaml::yaml" CACHE STRING "The YAML library target.")
endif()