diff --git a/CMakeLists.txt b/CMakeLists.txt index 643716132..0802e399b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -713,7 +713,6 @@ if(RUN_CLANG_TIDY) endif() if(ENABLE_TESTS) - include(CTest) enable_testing() add_subdirectory(tests) endif() @@ -793,6 +792,7 @@ if(GIT_FOUND) COMMAND "${CMAKE_SOURCE_DIR}/code_style.sh" WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" ) + set_property(TARGET check-format format PROPERTY FOLDER "utility") endif() unset(TR_GIT_ROOT) endif() diff --git a/cmake/TrMacros.cmake b/cmake/TrMacros.cmake index 2e7d41831..a5e201f32 100644 --- a/cmake/TrMacros.cmake +++ b/cmake/TrMacros.cmake @@ -117,7 +117,7 @@ macro(tr_add_external_auto_library ID DIRNAME LIBNAME) BUILD_BYPRODUCTS "${${ID}_LIBRARY}" ) - set_property(TARGET ${${ID}_UPSTREAM_TARGET} PROPERTY FOLDER "ThirdParty") + set_property(TARGET ${${ID}_UPSTREAM_TARGET} PROPERTY FOLDER "third-party") endif() endmacro() diff --git a/gtk/CMakeLists.txt b/gtk/CMakeLists.txt index 9bad254fa..c6894eb71 100644 --- a/gtk/CMakeLists.txt +++ b/gtk/CMakeLists.txt @@ -94,6 +94,8 @@ if(ENABLE_NLS) DEPENDS ${PROJECT_SOURCE_DIR}/transmission-gtk.metainfo.xml.in VERBATIM ) + + source_group("Generated Files" FILES ${${PROJECT_NAME}_DESKTOP_FILE} ${${PROJECT_NAME}_METAINFO_FILE}) endif() set(${PROJECT_NAME}_SOURCES diff --git a/macosx/CMakeLists.txt b/macosx/CMakeLists.txt index 34713bc8c..63b3730c2 100644 --- a/macosx/CMakeLists.txt +++ b/macosx/CMakeLists.txt @@ -2,18 +2,14 @@ project(trmac) include_directories(${CMAKE_SOURCE_DIR}) -if(CMAKE_GENERATOR STREQUAL "Xcode") - set(CMAKE_XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC ON) -else() - add_definitions(-fobjc-arc) -endif() - -add_compile_options(-fmodules -fcxx-modules) +add_compile_options( + -fcxx-modules + -fmodules + -fobjc-arc) +find_program(ACTOOL_EXECUTABLE actool REQUIRED) +find_program(CODESIGN_EXECUTABLE codesign REQUIRED) find_program(IBTOOL_EXECUTABLE ibtool REQUIRED) -find_program(ICONUTIL_EXECUTABLE iconutil REQUIRED) -find_program(TIFFUTIL_EXECUTABLE tiffutil REQUIRED) -find_program(INSTALL_NAME_TOOL_EXECUTABLE install_name_tool REQUIRED) macro(tr_wrap_xib IFILE OFILE) get_filename_component(twx_nib_dir "${OFILE}" DIRECTORY) @@ -25,20 +21,9 @@ macro(tr_wrap_xib IFILE OFILE) WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} VERBATIM ) + source_group("Generated Files" FILES ${OFILE}) endmacro() -function(tr_tiff_from_pngs OFILE) - get_filename_component(ODIR "${OFILE}" DIRECTORY) - add_custom_command( - OUTPUT ${OFILE} - COMMAND ${CMAKE_COMMAND} -E make_directory ${ODIR} - COMMAND ${TIFFUTIL_EXECUTABLE} -cathidpicheck ${ARGN} -out ${OFILE} - DEPENDS ${ARGN} - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} - VERBATIM - ) -endfunction() - set(${PROJECT_NAME}_SOURCES AboutWindowController.mm AddMagnetWindowController.mm @@ -195,51 +180,22 @@ set(${PROJECT_NAME}_XIB_FILES StatusBar.xib URLSheetWindow.xib ) - -set(APPICONSET_DIR "${PROJECT_SOURCE_DIR}/Images/Images.xcassets/AppIcon.appiconset") -set(APPICON_FILE "${PROJECT_BINARY_DIR}/Transmission.icns") -add_custom_command( - OUTPUT "${APPICON_FILE}" - COMMAND "${CMAKE_COMMAND}" -E rm -rf - "${PROJECT_BINARY_DIR}/Transmission.iconset" - COMMAND "${CMAKE_COMMAND}" -E copy_directory - "${APPICONSET_DIR}" - "${PROJECT_BINARY_DIR}/Transmission.iconset" - COMMAND "${CMAKE_COMMAND}" -E rm - "${PROJECT_BINARY_DIR}/Transmission.iconset/Contents.json" - COMMAND "${ICONUTIL_EXECUTABLE}" - --convert icns - --output "${APPICON_FILE}" - "${PROJECT_BINARY_DIR}/Transmission.iconset" - DEPENDS - "${APPICONSET_DIR}/icon_128x128.png" - "${APPICONSET_DIR}/icon_128x128@2x.png" - "${APPICONSET_DIR}/icon_16x16.png" - "${APPICONSET_DIR}/icon_16x16@2x.png" - "${APPICONSET_DIR}/icon_256x256.png" - "${APPICONSET_DIR}/icon_256x256@2x.png" - "${APPICONSET_DIR}/icon_32x32.png" - "${APPICONSET_DIR}/icon_32x32@2x.png" - "${APPICONSET_DIR}/icon_512x512.png" - "${APPICONSET_DIR}/icon_512x512@2x.png" - WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}" - VERBATIM -) +source_group(Resources FILES ${${PROJECT_NAME}_XIB_FILES}) set(${PROJECT_NAME}_RESOURCES Defaults.plist Credits.rtf sparkle_dsa_pub.pem ../COPYING - "${APPICON_FILE}" Images/TransmissionDocument.icns ) +source_group(Resources FILES ${${PROJECT_NAME}_RESOURCES}) set_source_files_properties(${${PROJECT_NAME}_RESOURCES} PROPERTIES MACOSX_PACKAGE_LOCATION Resources ) -set(${PROJECT_NAME}_HIDPI_IMAGES +set(${PROJECT_NAME}_IMAGESETS ActionHover Bandwidth CleanupTemplate @@ -247,8 +203,10 @@ set(${PROJECT_NAME}_HIDPI_IMAGES CreateLarge DownArrowGroupTemplate DownArrowTemplate + DownloadBadge EllipsisTemplate FavIcon + GearshapeTemplate Globe Groups InfoActivity @@ -293,38 +251,58 @@ set(${PROJECT_NAME}_HIDPI_IMAGES Transfers UpArrowGroupTemplate UpArrowTemplate + UploadBadge YingYangGroupTemplate YingYangTemplate ) -foreach(IMG ${${PROJECT_NAME}_HIDPI_IMAGES}) - set(IMG_DIR "Images/Images.xcassets/${IMG}.imageset") - list(APPEND ${PROJECT_NAME}_RESOURCES ${IMG_DIR}/${IMG}.png ${IMG_DIR}/${IMG}@2x.png) - if(COMBINE_HIDPI_ARTWORK) - list(APPEND ${PROJECT_NAME}_RESOURCES ${PROJECT_BINARY_DIR}/Images/${IMG}.tiff) - tr_tiff_from_pngs(${PROJECT_BINARY_DIR}/Images/${IMG}.tiff ${IMG_DIR}/${IMG}.png ${IMG_DIR}/${IMG}@2x.png) - set_source_files_properties(${PROJECT_BINARY_DIR}/Images/${IMG}.tiff PROPERTIES - MACOSX_PACKAGE_LOCATION Resources - ) - else() - set_source_files_properties(${IMG_DIR}/${IMG}.png ${IMG_DIR}/${IMG}@2x.png PROPERTIES - MACOSX_PACKAGE_LOCATION Resources - ) - endif() +set(APPICON_NAME AppIcon) + +set(IMAGE_ASSETS_DIR Images/Images.xcassets) +set(APPICONSET_DIR "${IMAGE_ASSETS_DIR}/${APPICON_NAME}.appiconset") + +set(IMAGE_ASSETS + ${IMAGE_ASSETS_DIR}/Contents.json + ${APPICONSET_DIR}/Contents.json) + +foreach(IMG IN LISTS ${PROJECT_NAME}_IMAGESETS) + set(IMG_DIR "${IMAGE_ASSETS_DIR}/${IMG}.imageset") + list(APPEND IMAGE_ASSETS + ${IMG_DIR}/${IMG}.png + ${IMG_DIR}/${IMG}@2x.png + ${IMG_DIR}/Contents.json) endforeach() -set(${PROJECT_NAME}_LODPI_IMAGES - DownloadBadge - UploadBadge +foreach(SIZE IN ITEMS 16 32 128 256 512) + list(APPEND IMAGE_ASSETS + ${APPICONSET_DIR}/icon_${SIZE}x${SIZE}.png + ${APPICONSET_DIR}/icon_${SIZE}x${SIZE}@2x.png) +endforeach() + +set(COMPILED_IMAGE_ASSETS + "${CMAKE_CURRENT_BINARY_DIR}/${APPICON_NAME}.icns" + "${CMAKE_CURRENT_BINARY_DIR}/Assets.car") + +add_custom_command( + OUTPUT + ${COMPILED_IMAGE_ASSETS} + ${APPICON_NAME}.Info.plist + COMMAND ${ACTOOL_EXECUTABLE} + --compile "${CMAKE_CURRENT_BINARY_DIR}" + --platform macosx + --minimum-deployment-target ${CMAKE_OSX_DEPLOYMENT_TARGET} + --app-icon ${APPICON_NAME} + --output-partial-info-plist "${CMAKE_CURRENT_BINARY_DIR}/${APPICON_NAME}.Info.plist" + ${IMAGE_ASSETS_DIR} + DEPENDS ${IMAGE_ASSETS} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) +source_group("Generated Files" FILES ${COMPILED_IMAGE_ASSETS} ${APPICON_NAME}.Info.plist) -foreach(IMG ${${PROJECT_NAME}_LODPI_IMAGES}) - set(IMG_DIR "Images/Images.xcassets/${IMG}.imageset") - list(APPEND ${PROJECT_NAME}_RESOURCES ${IMG_DIR}/${IMG}.png) - set_source_files_properties(${IMG_DIR}/${IMG}.png PROPERTIES - MACOSX_PACKAGE_LOCATION Resources - ) -endforeach() +list(APPEND ${PROJECT_NAME}_RESOURCES ${COMPILED_IMAGE_ASSETS}) + +set_source_files_properties(${COMPILED_IMAGE_ASSETS} PROPERTIES + MACOSX_PACKAGE_LOCATION Resources) set(${PROJECT_NAME}_LINGUAS da @@ -383,6 +361,7 @@ foreach(F ${${PROJECT_NAME}_LANG_XIB_FILES}) tr_wrap_xib("${F_XIB}" "${F_NIB}") list(APPEND ${PROJECT_NAME}_BASE_XIB_FILES "${F_XIB}") list(APPEND ${PROJECT_NAME}_BASE_NIB_FILES "${F_NIB}") + source_group(Resources/Base.lproj FILES ${F_XIB}) endforeach() foreach(LANG ${${PROJECT_NAME}_ENABLED_LINGUAS}) @@ -396,6 +375,7 @@ foreach(LANG ${${PROJECT_NAME}_ENABLED_LINGUAS}) foreach(F ${${PROJECT_NAME}_LANG_STRINGS_FILES}) list(APPEND ${PROJECT_NAME}_${LANG}_STRINGS_FILES ${LANG}.lproj/${F}) endforeach() + source_group(Resources/${LANG}.lproj FILES ${${PROJECT_NAME}_${LANG}_STRINGS_FILES}) endforeach() include_directories( @@ -414,13 +394,23 @@ add_library(vdkqueue STATIC VDKQueue/VDKQueue.h ) +set_property(TARGET vdkqueue PROPERTY FOLDER "third-party") + +set(BASE_NIB_FILES_RESOURCES_DIR Resources) +if(NOT CMAKE_GENERATOR STREQUAL Xcode) + string(APPEND BASE_NIB_FILES_RESOURCES_DIR /Base.lproj) +endif() set_source_files_properties(${${PROJECT_NAME}_BASE_NIB_FILES} PROPERTIES - MACOSX_PACKAGE_LOCATION Resources/Base.lproj) + MACOSX_PACKAGE_LOCATION ${BASE_NIB_FILES_RESOURCES_DIR}) foreach(LANG ${${PROJECT_NAME}_ENABLED_LINGUAS}) list(APPEND ${PROJECT_NAME}_RESOURCES ${${PROJECT_NAME}_${LANG}_STRINGS_FILES}) + set(STRINGS_FILES_RESOURCES_DIR Resources) + if(NOT CMAKE_GENERATOR STREQUAL Xcode) + string(APPEND STRINGS_FILES_RESOURCES_DIR /${LANG}.lproj) + endif() set_source_files_properties(${${PROJECT_NAME}_${LANG}_STRINGS_FILES} PROPERTIES - MACOSX_PACKAGE_LOCATION Resources/${LANG}.lproj) + MACOSX_PACKAGE_LOCATION ${STRINGS_FILES_RESOURCES_DIR}) endforeach() add_executable(${TR_NAME}-mac MACOSX_BUNDLE @@ -447,6 +437,11 @@ target_link_libraries(${TR_NAME}-mac "-framework Security" ) +if(NOT CMAKE_GENERATOR STREQUAL Xcode) + add_custom_command(TARGET ${TR_NAME}-mac POST_BUILD + COMMAND ${CODESIGN_EXECUTABLE} -s - -o linker-signed $) +endif() + set(MAC_BUNDLE_NAME Transmission) set_target_properties(${TR_NAME}-mac PROPERTIES diff --git a/macosx/Info.plist.in b/macosx/Info.plist.in index fcb877c69..1e4f39fc9 100644 --- a/macosx/Info.plist.in +++ b/macosx/Info.plist.in @@ -34,7 +34,9 @@ CFBundleHelpBookName Transmission Help CFBundleIconFile - Transmission + @APPICON_NAME@ + CFBundleIconName + @APPICON_NAME@ CFBundleIdentifier org.m0k.transmission CFBundleInfoDictionaryVersion diff --git a/macosx/QuickLookPlugin/CMakeLists.txt b/macosx/QuickLookPlugin/CMakeLists.txt index e890d1407..8a4c81ef5 100644 --- a/macosx/QuickLookPlugin/CMakeLists.txt +++ b/macosx/QuickLookPlugin/CMakeLists.txt @@ -36,18 +36,24 @@ set(${PROJECT_NAME}_LANG_STRINGS_FILES set(${PROJECT_NAME}_RESOURCES style.css ) +source_group(Resources FILES ${${PROJECT_NAME}_RESOURCES}) set_source_files_properties(${${PROJECT_NAME}_RESOURCES} PROPERTIES MACOSX_PACKAGE_LOCATION Resources) foreach(LANG ${${PROJECT_NAME}_ENABLED_LINGUAS}) set(${PROJECT_NAME}_${LANG}_STRINGS_FILES) + set(STRINGS_FILES_RESOURCES_DIR Resources) + if(NOT CMAKE_GENERATOR STREQUAL Xcode) + string(APPEND STRINGS_FILES_RESOURCES_DIR /${LANG}.lproj) + endif() foreach(F ${${PROJECT_NAME}_LANG_STRINGS_FILES}) list(APPEND ${PROJECT_NAME}_${LANG}_STRINGS_FILES ${LANG}.lproj/${F}) list(APPEND ${PROJECT_NAME}_RESOURCES ${${PROJECT_NAME}_${LANG}_STRINGS_FILES}) set_source_files_properties(${${PROJECT_NAME}_${LANG}_STRINGS_FILES} PROPERTIES - MACOSX_PACKAGE_LOCATION Resources/${LANG}.lproj) + MACOSX_PACKAGE_LOCATION ${STRINGS_FILES_RESOURCES_DIR}) endforeach() + source_group(Resources/${LANG}.lproj FILES ${${PROJECT_NAME}_${LANG}_STRINGS_FILES}) endforeach() add_library(${TR_NAME}-mac-ql MODULE diff --git a/qt/CMakeLists.txt b/qt/CMakeLists.txt index cefac82cf..4df2ff1c0 100644 --- a/qt/CMakeLists.txt +++ b/qt/CMakeLists.txt @@ -1,5 +1,10 @@ project(trqt) +set_property(GLOBAL PROPERTY AUTOGEN_SOURCE_GROUP "Generated Files") +set_property(GLOBAL PROPERTY AUTOMOC_SOURCE_GROUP "Generated Files") +set_property(GLOBAL PROPERTY AUTORCC_SOURCE_GROUP "Generated Files") +set_property(GLOBAL PROPERTY AUTOUIC_SOURCE_GROUP "Generated Files") + set(${PROJECT_NAME}_SOURCES AboutDialog.cc AddData.cc @@ -120,7 +125,7 @@ set(${PROJECT_NAME}_HEADERS WatchDir.h ) -tr_qt_wrap_ui(${PROJECT_NAME}_UI_SOURCES +set(${PROJECT_NAME}_UI_FILES AboutDialog.ui DetailsDialog.ui LicenseDialog.ui @@ -134,13 +139,19 @@ tr_qt_wrap_ui(${PROJECT_NAME}_UI_SOURCES StatsDialog.ui TrackersDialog.ui ) +source_group(Ui FILES ${${PROJECT_NAME}_UI_FILES}) + +tr_qt_wrap_ui(${PROJECT_NAME}_UI_SOURCES ${${PROJECT_NAME}_UI_FILES}) +source_group("Generated Files" FILES ${${PROJECT_NAME}_UI_SOURCES}) set(${PROJECT_NAME}_QRC_FILES application.qrc) if(WIN32 OR APPLE) list(APPEND ${PROJECT_NAME}_QRC_FILES icons/Faenza/Faenza.qrc) endif() +source_group(Resources FILES ${${PROJECT_NAME}_QRC_FILES}) tr_qt_add_resources(${PROJECT_NAME}_QRC_SOURCES ${${PROJECT_NAME}_QRC_FILES}) +source_group("Generated Files" FILES ${${PROJECT_NAME}_QRC_SOURCES}) set(${PROJECT_NAME}_LINGUAS af @@ -188,6 +199,7 @@ endforeach() if(${PROJECT_NAME}_TS_FILES) tr_qt_add_translation(${PROJECT_NAME}_QM_FILES ${${PROJECT_NAME}_TS_FILES}) + source_group("Generated Files" FILES ${${PROJECT_NAME}_QM_FILES}) endif() include_directories( diff --git a/tests/gtest/CMakeLists.txt b/tests/gtest/CMakeLists.txt index 72fa17e5f..1cd714788 100644 --- a/tests/gtest/CMakeLists.txt +++ b/tests/gtest/CMakeLists.txt @@ -1,3 +1,5 @@ add_library(gtestall STATIC ${THIRD_PARTY_DIR}/googletest/googletest/src/gtest-all.cc ${THIRD_PARTY_DIR}/googletest/googletest/src/gtest_main.cc) + +set_property(TARGET gtestall PROPERTY FOLDER "third-party") diff --git a/tests/libtransmission/CMakeLists.txt b/tests/libtransmission/CMakeLists.txt index 064e88b4d..134bf00bf 100644 --- a/tests/libtransmission/CMakeLists.txt +++ b/tests/libtransmission/CMakeLists.txt @@ -51,6 +51,8 @@ add_executable(libtransmission-test watchdir-test.cc web-utils-test.cc) +set_property(TARGET libtransmission-test PROPERTY FOLDER "tests") + target_compile_definitions(libtransmission-test PRIVATE -DLIBTRANSMISSION_TEST_ASSETS_DIR="${CMAKE_CURRENT_SOURCE_DIR}/assets" @@ -94,6 +96,8 @@ add_custom_command( add_executable(subprocess-test subprocess-test-program.cc) +set_property(TARGET subprocess-test PROPERTY FOLDER "tests") + target_include_directories(subprocess-test PRIVATE ${CMAKE_SOURCE_DIR}/libtransmission)