mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 06:37:43 +00:00
Build: Embed application icons directly in the executables.
New serenity_app() targets can be defined which allows application icons to be emedded directly into the executable. The embedded icons will then be used when creating an icon for that file in LibGUI.
This commit is contained in:
parent
d16eabed06
commit
39364bdda4
39 changed files with 94 additions and 37 deletions
|
@ -15,5 +15,5 @@ set(SOURCES
|
||||||
TabGML.h
|
TabGML.h
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(Browser)
|
serenity_app(Browser ICON app-browser)
|
||||||
target_link_libraries(Browser LibWeb LibProtocol LibGUI LibDesktop)
|
target_link_libraries(Browser LibWeb LibProtocol LibGUI LibDesktop)
|
||||||
|
|
|
@ -5,5 +5,5 @@ set(SOURCES
|
||||||
Keypad.cpp
|
Keypad.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(Calculator)
|
serenity_app(Calculator ICON app-calculator)
|
||||||
target_link_libraries(Calculator LibGUI)
|
target_link_libraries(Calculator LibGUI)
|
||||||
|
|
|
@ -3,5 +3,5 @@ set(SOURCES
|
||||||
main.cpp
|
main.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(Calendar)
|
serenity_app(Calendar ICON app-calendar)
|
||||||
target_link_libraries(Calendar LibGUI)
|
target_link_libraries(Calendar LibGUI)
|
||||||
|
|
|
@ -4,5 +4,5 @@ set(SOURCES
|
||||||
MonitorWidget.cpp
|
MonitorWidget.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(DisplaySettings)
|
serenity_app(DisplaySettings ICON app-display-settings)
|
||||||
target_link_libraries(DisplaySettings LibGUI)
|
target_link_libraries(DisplaySettings LibGUI)
|
||||||
|
|
|
@ -9,5 +9,5 @@ set(SOURCES
|
||||||
PropertiesDialog.cpp
|
PropertiesDialog.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(FileManager)
|
serenity_app(FileManager ICON filetype-folder)
|
||||||
target_link_libraries(FileManager LibGUI LibDesktop)
|
target_link_libraries(FileManager LibGUI LibDesktop)
|
||||||
|
|
|
@ -7,5 +7,5 @@ set(SOURCES
|
||||||
main.cpp
|
main.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(FontEditor)
|
serenity_app(FontEditor ICON app-font-editor)
|
||||||
target_link_libraries(FontEditor LibGUI LibGfx)
|
target_link_libraries(FontEditor LibGUI LibGfx)
|
||||||
|
|
|
@ -6,5 +6,5 @@ set(SOURCES
|
||||||
ManualSectionNode.cpp
|
ManualSectionNode.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(Help)
|
serenity_app(Help ICON app-help)
|
||||||
target_link_libraries(Help LibWeb LibMarkdown LibGUI LibDesktop)
|
target_link_libraries(Help LibWeb LibMarkdown LibGUI LibDesktop)
|
||||||
|
|
|
@ -4,5 +4,5 @@ set(SOURCES
|
||||||
main.cpp
|
main.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(HexEditor)
|
serenity_app(HexEditor ICON app-hexeditor)
|
||||||
target_link_libraries(HexEditor LibGUI)
|
target_link_libraries(HexEditor LibGUI)
|
||||||
|
|
|
@ -10,5 +10,5 @@ set(SOURCES
|
||||||
main.cpp
|
main.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(IRCClient)
|
serenity_app(IRCClient ICON app-irc-client)
|
||||||
target_link_libraries(IRCClient LibWeb LibGUI)
|
target_link_libraries(IRCClient LibWeb LibGUI)
|
||||||
|
|
|
@ -2,5 +2,5 @@ set(SOURCES
|
||||||
main.cpp
|
main.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(KeyboardSettings)
|
serenity_app(KeyboardSettings ICON app-keyboard-settings)
|
||||||
target_link_libraries(KeyboardSettings LibGUI LibKeyboard)
|
target_link_libraries(KeyboardSettings LibGUI LibKeyboard)
|
||||||
|
|
|
@ -10,5 +10,5 @@ set(SOURCES
|
||||||
WaveWidget.cpp
|
WaveWidget.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(Piano)
|
serenity_app(Piano ICON app-piano)
|
||||||
target_link_libraries(Piano LibAudio LibGUI)
|
target_link_libraries(Piano LibAudio LibGUI)
|
||||||
|
|
|
@ -23,5 +23,5 @@ set(SOURCES
|
||||||
Tool.cpp
|
Tool.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(PixelPaint)
|
serenity_app(PixelPaint ICON app-pixel-paint)
|
||||||
target_link_libraries(PixelPaint LibGUI LibGfx)
|
target_link_libraries(PixelPaint LibGUI LibGfx)
|
||||||
|
|
|
@ -3,5 +3,5 @@ set(SOURCES
|
||||||
QSWidget.cpp
|
QSWidget.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(QuickShow)
|
serenity_app(QuickShow ICON filetype-image)
|
||||||
target_link_libraries(QuickShow LibGUI LibGfx)
|
target_link_libraries(QuickShow LibGUI LibGfx)
|
||||||
|
|
|
@ -5,5 +5,5 @@ set(SOURCES
|
||||||
SoundPlayerWidget.cpp
|
SoundPlayerWidget.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(SoundPlayer)
|
serenity_app(SoundPlayer ICON app-sound-player)
|
||||||
target_link_libraries(SoundPlayer LibAudio LibGUI)
|
target_link_libraries(SoundPlayer LibAudio LibGUI)
|
||||||
|
|
|
@ -24,5 +24,5 @@ set(SOURCES
|
||||||
main.cpp
|
main.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(Spreadsheet)
|
serenity_app(Spreadsheet ICON app-spreadsheet)
|
||||||
target_link_libraries(Spreadsheet LibGUI LibJS LibWeb)
|
target_link_libraries(Spreadsheet LibGUI LibJS LibWeb)
|
||||||
|
|
|
@ -12,5 +12,5 @@ set(SOURCES
|
||||||
ThreadStackWidget.cpp
|
ThreadStackWidget.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(SystemMonitor)
|
serenity_app(SystemMonitor ICON app-system-monitor)
|
||||||
target_link_libraries(SystemMonitor LibGUI LibPCIDB)
|
target_link_libraries(SystemMonitor LibGUI LibPCIDB)
|
||||||
|
|
|
@ -2,5 +2,5 @@ set(SOURCES
|
||||||
main.cpp
|
main.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(Terminal)
|
serenity_app(Terminal ICON app-terminal)
|
||||||
target_link_libraries(Terminal LibGUI LibVT)
|
target_link_libraries(Terminal LibGUI LibVT)
|
||||||
|
|
|
@ -6,5 +6,5 @@ set(SOURCES
|
||||||
MainWindowGML.h
|
MainWindowGML.h
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(TextEditor)
|
serenity_app(TextEditor ICON app-text-editor)
|
||||||
target_link_libraries(TextEditor LibWeb LibMarkdown LibGUI LibShell LibRegex LibDesktop)
|
target_link_libraries(TextEditor LibWeb LibMarkdown LibGUI LibShell LibRegex LibDesktop)
|
||||||
|
|
|
@ -3,5 +3,5 @@ set(SOURCES
|
||||||
main.cpp
|
main.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(ThemeEditor)
|
serenity_app(ThemeEditor ICON app-theme-editor)
|
||||||
target_link_libraries(ThemeEditor LibGUI)
|
target_link_libraries(ThemeEditor LibGUI)
|
||||||
|
|
|
@ -164,6 +164,23 @@ function(serenity_bin target_name)
|
||||||
serenity_generated_sources(${target_name})
|
serenity_generated_sources(${target_name})
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
function(serenity_app target_name)
|
||||||
|
cmake_parse_arguments(SERENITY_APP "" "ICON" "" ${ARGN})
|
||||||
|
|
||||||
|
serenity_bin("${target_name}")
|
||||||
|
set(small_icon "${CMAKE_SOURCE_DIR}/Base/res/icons/16x16/${SERENITY_APP_ICON}.png")
|
||||||
|
set(medium_icon "${CMAKE_SOURCE_DIR}/Base/res/icons/32x32/${SERENITY_APP_ICON}.png")
|
||||||
|
|
||||||
|
if (EXISTS "${small_icon}")
|
||||||
|
embed_resource("${target_name}" serenity_icon_s "${small_icon}")
|
||||||
|
endif()
|
||||||
|
if (EXISTS "${medium_icon}")
|
||||||
|
embed_resource("${target_name}" serenity_icon_m "${medium_icon}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# TODO: Issue warnings if the app icons don't exist
|
||||||
|
endfunction()
|
||||||
|
|
||||||
function(compile_gml source output string_name)
|
function(compile_gml source output string_name)
|
||||||
set(source ${CMAKE_CURRENT_SOURCE_DIR}/${source})
|
set(source ${CMAKE_CURRENT_SOURCE_DIR}/${source})
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
|
@ -191,6 +208,19 @@ function(compile_ipc source output)
|
||||||
add_custom_target(generate_${output_name} DEPENDS ${output})
|
add_custom_target(generate_${output_name} DEPENDS ${output})
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
function(embed_resource target section file)
|
||||||
|
get_filename_component(asm_file "${file}" NAME)
|
||||||
|
set(asm_file "${CMAKE_CURRENT_BINARY_DIR}/${target}-${section}.s")
|
||||||
|
get_filename_component(input_file "${file}" ABSOLUTE)
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT "${asm_file}"
|
||||||
|
COMMAND "${CMAKE_SOURCE_DIR}/Meta/generate-embedded-resource-assembly.sh" "${asm_file}" "${section}" "${input_file}"
|
||||||
|
DEPENDS "${input_file}" "${CMAKE_SOURCE_DIR}/Meta/generate-embedded-resource-assembly.sh"
|
||||||
|
COMMENT "Generating ${asm_file}"
|
||||||
|
)
|
||||||
|
target_sources("${target}" PRIVATE "${asm_file}")
|
||||||
|
endfunction()
|
||||||
|
|
||||||
find_program(CCACHE_PROGRAM ccache)
|
find_program(CCACHE_PROGRAM ccache)
|
||||||
if(CCACHE_PROGRAM)
|
if(CCACHE_PROGRAM)
|
||||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
|
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
|
||||||
|
|
|
@ -2,5 +2,5 @@ set(SOURCES
|
||||||
Cube.cpp
|
Cube.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(Cube)
|
serenity_app(Cube ICON app-cube)
|
||||||
target_link_libraries(Cube LibGUI)
|
target_link_libraries(Cube LibGUI)
|
||||||
|
|
|
@ -3,5 +3,5 @@ set(SOURCES
|
||||||
EyesWidget.cpp
|
EyesWidget.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(Eyes)
|
serenity_app(Eyes ICON app-eyes)
|
||||||
target_link_libraries(Eyes LibGUI LibGfx)
|
target_link_libraries(Eyes LibGUI LibGfx)
|
||||||
|
|
|
@ -2,5 +2,5 @@ set(SOURCES
|
||||||
Fire.cpp
|
Fire.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(Fire)
|
serenity_app(Fire ICON app-fire)
|
||||||
target_link_libraries(Fire LibGUI LibCore LibGfx)
|
target_link_libraries(Fire LibGUI LibCore LibGfx)
|
||||||
|
|
|
@ -2,5 +2,5 @@ set(SOURCES
|
||||||
main.cpp
|
main.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(HelloWorld)
|
serenity_app(HelloWorld ICON app-hello-world)
|
||||||
target_link_libraries(HelloWorld LibGUI)
|
target_link_libraries(HelloWorld LibGUI)
|
||||||
|
|
|
@ -2,5 +2,5 @@ set(SOURCES
|
||||||
main.cpp
|
main.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(LibGfxDemo)
|
serenity_app(LibGfxDemo ICON app-libgfx-demo)
|
||||||
target_link_libraries(LibGfxDemo LibGUI LibIPC LibGfx LibCore)
|
target_link_libraries(LibGfxDemo LibGUI LibIPC LibGfx LibCore)
|
||||||
|
|
|
@ -2,5 +2,5 @@ set(SOURCES
|
||||||
main.cpp
|
main.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(Mouse)
|
serenity_app(Mouse ICON app-mouse)
|
||||||
target_link_libraries(Mouse LibGUI LibGfx)
|
target_link_libraries(Mouse LibGUI LibGfx)
|
||||||
|
|
|
@ -2,5 +2,5 @@ set(SOURCES
|
||||||
Screensaver.cpp
|
Screensaver.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(Screensaver)
|
serenity_app(Screensaver ICON app-screensaver)
|
||||||
target_link_libraries(Screensaver LibGUI LibCore LibGfx)
|
target_link_libraries(Screensaver LibGUI LibCore LibGfx)
|
||||||
|
|
|
@ -2,5 +2,5 @@ set(SOURCES
|
||||||
main.cpp
|
main.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(WidgetGallery)
|
serenity_app(WidgetGallery ICON app-widget-gallery)
|
||||||
target_link_libraries(WidgetGallery LibGUI)
|
target_link_libraries(WidgetGallery LibGUI)
|
||||||
|
|
|
@ -33,6 +33,6 @@ set(SOURCES
|
||||||
main.cpp
|
main.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(HackStudio)
|
serenity_app(HackStudio ICON app-hack-studio)
|
||||||
target_link_libraries(HackStudio LibWeb LibMarkdown LibGUI LibGfx LibCore LibVT LibDebug LibX86 LibDiff LibShell)
|
target_link_libraries(HackStudio LibWeb LibMarkdown LibGUI LibGfx LibCore LibVT LibDebug LibX86 LibDiff LibShell)
|
||||||
add_dependencies(HackStudio CppLanguageServer)
|
add_dependencies(HackStudio CppLanguageServer)
|
||||||
|
|
|
@ -6,5 +6,5 @@ set(SOURCES
|
||||||
RemoteProcess.cpp
|
RemoteProcess.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(Inspector)
|
serenity_app(Inspector ICON app-inspector)
|
||||||
target_link_libraries(Inspector LibGUI)
|
target_link_libraries(Inspector LibGUI)
|
||||||
|
|
|
@ -6,5 +6,5 @@ set(SOURCES
|
||||||
ProfileTimelineWidget.cpp
|
ProfileTimelineWidget.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(Profiler)
|
serenity_app(Profiler ICON app-profiler)
|
||||||
target_link_libraries(Profiler LibGUI LibX86 LibCoreDump)
|
target_link_libraries(Profiler LibGUI LibX86 LibCoreDump)
|
||||||
|
|
|
@ -5,5 +5,5 @@ set(SOURCES
|
||||||
main.cpp
|
main.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(2048)
|
serenity_app(2048 ICON app-2048)
|
||||||
target_link_libraries(2048 LibGUI)
|
target_link_libraries(2048 LibGUI)
|
||||||
|
|
|
@ -4,5 +4,5 @@ set(SOURCES
|
||||||
LevelSelectDialog.cpp
|
LevelSelectDialog.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(Breakout)
|
serenity_app(Breakout ICON app-breakout)
|
||||||
target_link_libraries(Breakout LibGUI)
|
target_link_libraries(Breakout LibGUI)
|
||||||
|
|
|
@ -5,5 +5,5 @@ set(SOURCES
|
||||||
Engine.cpp
|
Engine.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(Chess)
|
serenity_app(Chess ICON app-chess)
|
||||||
target_link_libraries(Chess LibChess LibGUI LibCore)
|
target_link_libraries(Chess LibChess LibGUI LibCore)
|
||||||
|
|
|
@ -3,5 +3,5 @@ set(SOURCES
|
||||||
main.cpp
|
main.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(Minesweeper)
|
serenity_app(Minesweeper ICON app-minesweeper)
|
||||||
target_link_libraries(Minesweeper LibGUI)
|
target_link_libraries(Minesweeper LibGUI)
|
||||||
|
|
|
@ -3,5 +3,5 @@ set(SOURCES
|
||||||
Game.cpp
|
Game.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(Pong)
|
serenity_app(Pong ICON app-pong)
|
||||||
target_link_libraries(Pong LibGUI)
|
target_link_libraries(Pong LibGUI)
|
||||||
|
|
|
@ -3,5 +3,5 @@ set(SOURCES
|
||||||
SnakeGame.cpp
|
SnakeGame.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(Snake)
|
serenity_app(Snake ICON app-snake)
|
||||||
target_link_libraries(Snake LibGUI)
|
target_link_libraries(Snake LibGUI)
|
||||||
|
|
|
@ -5,5 +5,5 @@ set(SOURCES
|
||||||
SolitaireWidget.cpp
|
SolitaireWidget.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
serenity_bin(Solitaire)
|
serenity_app(Solitaire ICON app-solitaire)
|
||||||
target_link_libraries(Solitaire LibGUI LibGfx LibCore)
|
target_link_libraries(Solitaire LibGUI LibGfx LibCore)
|
||||||
|
|
27
Meta/generate-embedded-resource-assembly.sh
Executable file
27
Meta/generate-embedded-resource-assembly.sh
Executable file
|
@ -0,0 +1,27 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
echo "ERROR: No output file specified"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
OUTPUT_FILE="$1"
|
||||||
|
shift
|
||||||
|
|
||||||
|
rm -f "${OUTPUT_FILE}"
|
||||||
|
|
||||||
|
while (( "$#" >= 2)); do
|
||||||
|
SECTION_NAME="$1"
|
||||||
|
INPUT_FILE="$2"
|
||||||
|
|
||||||
|
{
|
||||||
|
printf ' .section %s\n' "${SECTION_NAME}"
|
||||||
|
printf ' .type %s, @object\n' "${SECTION_NAME}"
|
||||||
|
printf ' .align 4\n'
|
||||||
|
printf ' .incbin "%s"\n' "${INPUT_FILE}"
|
||||||
|
printf '\n'
|
||||||
|
} >> "${OUTPUT_FILE}"
|
||||||
|
shift 2
|
||||||
|
done
|
Loading…
Add table
Add a link
Reference in a new issue