I suggest both board and shield resources are collected in a CMSIS_target_header. Preferable this header should list all drivers, so that it is possible to just replace the CMSIS_target_header to retarget an application.
This implies that all CMSIS_Driver available are somewhat listed with defines that are used consistently.