github.com/Konstantin8105/c4go@v0.0.0-20240505174241-768bb1c65a51/tests/raylib/external/glfw/CMake/GenerateMappings.cmake (about)

     1  # Usage:
     2  # cmake -P GenerateMappings.cmake <path/to/mappings.h.in> <path/to/mappings.h>
     3  
     4  set(source_url "https://raw.githubusercontent.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt")
     5  set(source_path "${CMAKE_CURRENT_BINARY_DIR}/gamecontrollerdb.txt")
     6  set(template_path "${CMAKE_ARGV3}")
     7  set(target_path "${CMAKE_ARGV4}")
     8  
     9  if (NOT EXISTS "${template_path}")
    10      message(FATAL_ERROR "Failed to find template file ${template_path}")
    11  endif()
    12  
    13  file(DOWNLOAD "${source_url}" "${source_path}"
    14       STATUS download_status
    15       TLS_VERIFY on)
    16  
    17  list(GET download_status 0 status_code)
    18  list(GET download_status 1 status_message)
    19  
    20  if (status_code)
    21      message(FATAL_ERROR "Failed to download ${source_url}: ${status_message}")
    22  endif()
    23  
    24  file(STRINGS "${source_path}" lines)
    25  foreach(line ${lines})
    26      if (line MATCHES "^[0-9a-fA-F]")
    27          if (line MATCHES "platform:Windows")
    28              if (GLFW_WIN32_MAPPINGS)
    29                  string(APPEND GLFW_WIN32_MAPPINGS "\n")
    30              endif()
    31              string(APPEND GLFW_WIN32_MAPPINGS "\"${line}\",")
    32          elseif (line MATCHES "platform:Mac OS X")
    33              if (GLFW_COCOA_MAPPINGS)
    34                  string(APPEND GLFW_COCOA_MAPPINGS "\n")
    35              endif()
    36              string(APPEND GLFW_COCOA_MAPPINGS "\"${line}\",")
    37          elseif (line MATCHES "platform:Linux")
    38              if (GLFW_LINUX_MAPPINGS)
    39                  string(APPEND GLFW_LINUX_MAPPINGS "\n")
    40              endif()
    41              string(APPEND GLFW_LINUX_MAPPINGS "\"${line}\",")
    42          endif()
    43      endif()
    44  endforeach()
    45  
    46  configure_file("${template_path}" "${target_path}" @ONLY NEWLINE_STYLE UNIX)
    47  file(REMOVE "${source_path}")
    48