GenerateMappings.cmake (1653B)
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