diff options
author | Přemysl Eric Janouch <p@janouch.name> | 2024-02-09 17:29:07 +0100 |
---|---|---|
committer | Přemysl Eric Janouch <p@janouch.name> | 2024-02-10 05:39:15 +0100 |
commit | cb9d162a265e9e7b86bec92051f40374e79b7a51 (patch) | |
tree | 8cd48ac7804083744399e832cd6991aed1934a11 /cmake | |
parent | db6357db9ae70f7bbb278abfadca0f41cb2bf854 (diff) | |
download | liberty-cb9d162a265e9e7b86bec92051f40374e79b7a51.tar.gz liberty-cb9d162a265e9e7b86bec92051f40374e79b7a51.tar.xz liberty-cb9d162a265e9e7b86bec92051f40374e79b7a51.zip |
Add a CMake module for icon conversions
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/AddThreads.cmake | 8 | ||||
-rw-r--r-- | cmake/IconUtils.cmake | 40 |
2 files changed, 44 insertions, 4 deletions
diff --git a/cmake/AddThreads.cmake b/cmake/AddThreads.cmake index 72a4e08..88c7aae 100644 --- a/cmake/AddThreads.cmake +++ b/cmake/AddThreads.cmake @@ -9,15 +9,15 @@ find_package (Threads) function (add_threads target) if (NOT Threads_FOUND OR NOT CMAKE_USE_PTHREADS_INIT) message (FATAL_ERROR "pthreads not found") - endif (NOT Threads_FOUND OR NOT CMAKE_USE_PTHREADS_INIT) + endif () if (THREADS_HAVE_PTHREAD_ARG) set_property (TARGET ${target} PROPERTY COMPILE_OPTIONS "-pthread") set_property (TARGET ${target} PROPERTY INTERFACE_COMPILE_OPTIONS "-pthread") - endif (THREADS_HAVE_PTHREAD_ARG) + endif () if (CMAKE_THREAD_LIBS_INIT) target_link_libraries (${target} "${CMAKE_THREAD_LIBS_INIT}") - endif (CMAKE_THREAD_LIBS_INIT) -endfunction (add_threads) + endif () +endfunction () diff --git a/cmake/IconUtils.cmake b/cmake/IconUtils.cmake new file mode 100644 index 0000000..abd1f6a --- /dev/null +++ b/cmake/IconUtils.cmake @@ -0,0 +1,40 @@ +# Public Domain + +function (icon_to_png name svg size output_dir output) + set (_dimensions "${size}x${size}") + set (_png_path "${output_dir}/hicolor/${_dimensions}/apps") + set (_png "${_png_path}/${name}.png") + set (${output} "${_png}" PARENT_SCOPE) + + set (_find_program_REQUIRE) + if (NOT ${CMAKE_VERSION} VERSION_LESS 3.18.0) + set (_find_program_REQUIRE REQUIRED) + endif () + + find_program (rsvg_convert_EXECUTABLE rsvg-convert ${_find_program_REQUIRE}) + add_custom_command (OUTPUT "${_png}" + COMMAND ${CMAKE_COMMAND} -E make_directory "${_png_path}" + COMMAND ${rsvg_convert_EXECUTABLE} "--output=${_png}" + "--width=${size}" "--height=${size}" -- "${svg}" + DEPENDS "${svg}" + COMMENT "Generating ${name} ${_dimensions} application icon" VERBATIM) +endfunction () + +# You should include a 256x256 icon--which takes less space as raw PNG. +function (icon_for_win32 ico pngs pngs_raw) + set (_raws) + foreach (png ${pngs_raw}) + list (APPEND _raws "--raw=${png}") + endforeach () + + set (_find_program_REQUIRE) + if (NOT ${CMAKE_VERSION} VERSION_LESS 3.18.0) + set (_find_program_REQUIRE REQUIRED) + endif () + + find_program (icotool_EXECUTABLE icotool ${_find_program_REQUIRE}) + add_custom_command (OUTPUT "${ico}" + COMMAND ${icotool_EXECUTABLE} -c -o "${ico}" ${_raws} -- ${pngs} + DEPENDS ${pngs} ${pngs_raw} + COMMENT "Generating Windows program icon" VERBATIM) +endfunction () |