build: use target_sources instead of custom lists

Use the target_sources function to add additional sources to the
dispatch target rather than managing lists.  This simplifies the
handling and modernises the CMake usage.

Signed-off-by: Daniel A. Steffen <dsteffen@apple.com>
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 8bc572b..e9f69fb 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,44 +1,6 @@
 
 include(SwiftSupport)
 
-set(dispatch_BLOCK_SOURCES block.cpp)
-if(HAVE_OBJC)
-  list(APPEND dispatch_BLOCK_SOURCES data.m object.m)
-endif()
-set(dispatch_SWIFT_SOURCES)
-if(CMAKE_SWIFT_COMPILER)
-  set(swift_optimization_flags)
-  if(CMAKE_BUILD_TYPE MATCHES Release)
-    set(swift_optimization_flags -O)
-  endif()
-  add_swift_library(swiftDispatch
-                    MODULE_NAME
-                      Dispatch
-                    MODULE_LINK_NAME
-                      dispatch
-                    MODULE_PATH
-                      ${CMAKE_CURRENT_BINARY_DIR}/swift/Dispatch.swiftmodule
-                    OUTPUT
-                      ${CMAKE_CURRENT_BINARY_DIR}/swiftDispatch.o
-                    SOURCES
-                      swift/Block.swift
-                      swift/Data.swift
-                      swift/Dispatch.swift
-                      swift/IO.swift
-                      swift/Private.swift
-                      swift/Queue.swift
-                      swift/Source.swift
-                      swift/Time.swift
-                      swift/Wrapper.swift
-                    CFLAGS
-                      -fblocks
-                      -fmodule-map-file=${CMAKE_SOURCE_DIR}/dispatch/module.modulemap
-                    SWIFT_FLAGS
-                      -I ${CMAKE_SOURCE_DIR}
-                      ${swift_optimization_flags})
-  list(APPEND dispatch_SWIFT_SOURCES
-       swift/DispatchStubs.cc;${CMAKE_CURRENT_BINARY_DIR}/swiftDispatch.o)
-endif()
 add_library(dispatch
               allocator.c
               apply.c
@@ -90,9 +52,51 @@
               shims/perfmon.h
               shims/time.h
               shims/tsd.h
-              shims/yield.h
-              ${dispatch_BLOCK_SOURCES}
-              ${dispatch_SWIFT_SOURCES})
+              shims/yield.h)
+target_sources(dispatch
+               PRIVATE
+                 block.cpp)
+if(HAVE_OBJC)
+  target_sources(dispatch
+                 PRIVATE
+                   data.m
+                   object.m)
+endif()
+if(CMAKE_SWIFT_COMPILER)
+  set(swift_optimization_flags)
+  if(CMAKE_BUILD_TYPE MATCHES Release)
+    set(swift_optimization_flags -O)
+  endif()
+  add_swift_library(swiftDispatch
+                    MODULE_NAME
+                      Dispatch
+                    MODULE_LINK_NAME
+                      dispatch
+                    MODULE_PATH
+                      ${CMAKE_CURRENT_BINARY_DIR}/swift/Dispatch.swiftmodule
+                    OUTPUT
+                      ${CMAKE_CURRENT_BINARY_DIR}/swiftDispatch.o
+                    SOURCES
+                      swift/Block.swift
+                      swift/Data.swift
+                      swift/Dispatch.swift
+                      swift/IO.swift
+                      swift/Private.swift
+                      swift/Queue.swift
+                      swift/Source.swift
+                      swift/Time.swift
+                      swift/Wrapper.swift
+                    CFLAGS
+                      -fblocks
+                      -fmodule-map-file=${CMAKE_SOURCE_DIR}/dispatch/module.modulemap
+                    SWIFT_FLAGS
+                      -I ${CMAKE_SOURCE_DIR}
+                      ${swift_optimization_flags})
+  target_sources(dispatch
+                 PRIVATE
+                   swift/DispatchStubs.cc
+                   ${CMAKE_CURRENT_BINARY_DIR}/swiftDispatch.o)
+endif()
 target_include_directories(dispatch
                            PRIVATE
                              ${CMAKE_BINARY_DIR}