1 # Convenience function to avoid boilerplate
2 function(setup_executable _target _define)
3 set_target_properties(${_target} PROPERTIES
4 COMPILE_FLAGS ${_define}
5 RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}
7 target_link_libraries(${_target} PRIVATE ${ARGN})
8 install(TARGETS ${_target} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
11 # We need to initialize the appropriate resources, so let's give our main.cpp some hints
13 set_property(SOURCE main.cpp APPEND PROPERTY COMPILE_DEFINITIONS EMBED_DATA)
17 set_property(SOURCE main.cpp APPEND PROPERTY COMPILE_DEFINITIONS HAVE_UMASK)
20 if (WITH_BUNDLED_ICONS)
21 set_property(SOURCE main.cpp APPEND PROPERTY COMPILE_DEFINITIONS WITH_BUNDLED_ICONS)
24 # Windows icon resource
27 find_program(WINDRES_EXECUTABLE NAMES windres)
28 if(WINDRES_EXECUTABLE)
30 ARGS "-i ${CMAKE_SOURCE_DIR}/pics/win32.rc"
31 "-o ${CMAKE_CURRENT_BINARY_DIR}/win32.o"
32 "--include-dir=${CMAKE_SOURCE_DIR}/pics"
34 set(WIN_RC ${CMAKE_CURRENT_BINARY_DIR}/win32.o)
37 set(WIN_RC ${CMAKE_SOURCE_DIR}/pics/win32.rc)
42 # Build the executables
44 add_executable(quasselcore main.cpp ${WIN_RC})
45 setup_executable(quasselcore -DBUILD_CORE Qt5::Core Quassel::Core)
48 if (WANT_CLIENT OR WANT_QTCLIENT)
49 add_executable(quasselclient WIN32 main.cpp ${WIN_RC})
50 setup_executable(quasselclient -DBUILD_QTUI Qt5::Core Qt5::Gui Quassel::QtUi)
52 target_link_libraries(quasselclient PRIVATE KF5::CoreAddons)
57 add_executable(quassel WIN32 main.cpp monoapplication.cpp ${WIN_RC})
58 setup_executable(quassel -DBUILD_MONO Qt5::Core Qt5::Gui Quassel::Core Quassel::QtUi)
60 target_link_libraries(quassel PRIVATE KF5::CoreAddons)
64 # Build bundles for MacOSX
66 add_custom_command(TARGET quasselclient POST_BUILD
67 COMMAND ${CMAKE_SOURCE_DIR}/scripts/build/macosx_makebundle.py
68 ${CMAKE_SOURCE_DIR} "Quassel Client" ${CMAKE_BINARY_DIR}/quasselclient)
70 add_custom_command(TARGET quassel POST_BUILD
71 COMMAND ${CMAKE_SOURCE_DIR}/scripts/build/macosx_makebundle.py
72 ${CMAKE_SOURCE_DIR} "Quassel" ${CMAKE_BINARY_DIR}/quassel)
74 add_custom_command(TARGET quasselclient POST_BUILD WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
75 COMMAND ${CMAKE_SOURCE_DIR}/scripts/build/macosx_makePackage.sh Client ${CMAKE_BINARY_DIR} qsvgicon)
76 add_custom_command(TARGET quasselcore POST_BUILD WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
77 COMMAND ${CMAKE_SOURCE_DIR}/scripts/build/macosx_makePackage.sh Core ${CMAKE_BINARY_DIR})
78 add_custom_command(TARGET quassel POST_BUILD WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
79 COMMAND ${CMAKE_SOURCE_DIR}/scripts/build/macosx_makePackage.sh Mono ${CMAKE_BINARY_DIR} qsvgicon)