Improve MULTI_CONSOLE_API deprecation warnings
authorDan Handley <dan.handley@arm.com>
Tue, 27 Feb 2018 16:03:58 +0000 (16:03 +0000)
committerDan Handley <dan.handley@arm.com>
Thu, 1 Mar 2018 16:14:29 +0000 (16:14 +0000)
For platforms that have not migrated to MULTI_CONSOLE_API == 1, there
are a lot of confusing deprecated declaration warnings relating to
use of console_init() and console_uninit(). Some of these relate to use
by the generic code, not the platform code. These functions are not really
deprecated but *removed* when MULTI_CONSOLE_API == 1.

This patch consolidates these warnings into a single preprocessor warning.
The __deprecated attribute is removed from the console_init() and
console_uninit() declarations.

For preprocessor warnings like this to not cause fatal build errors,
this patch adds -Wno-error=cpp to the build flags when
ERROR_DEPRECATED == 0.
This option (and -Wno-error=deprecated-declarations) is now added to
CPPFLAGS instead of TF_CFLAGS to ensure the build flags are used in the
assembler as well as the compiler.

This patch also disentangles the MULTI_CONSOLE_API and ERROR_DEPRECATED
build flags by defaulting MULTI_CONSOLE_API to 0 instead of
ERROR_DEPRECATED. This allows platforms that have not migrated to
MULTI_CONSOLE_API to use ERROR_DEPRECATED == 1 to emit a more meaningful
build error.

Finally, this patch bans use of MULTI_CONSOLE_API == 1 and AARCH32, since
the AArch32 console implementation does not support
MULTI_CONSOLE_API == 1.

Change-Id: If762165ddcb90c28aa7a4951aba70cb15c2b709c
Signed-off-by: Dan Handley <dan.handley@arm.com>
Makefile
drivers/console/aarch64/deprecated_console.S
include/drivers/console.h
make_helpers/defaults.mk

index db15930e8c30abb2fae1accec907d96e61e22a7f..69f29e6c0aefd7ca2b9ebb24e5a2edac1074f5fc 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -374,6 +374,12 @@ ifeq ($(HW_ASSISTED_COHERENCY)-$(USE_COHERENT_MEM),1-1)
 $(error USE_COHERENT_MEM cannot be enabled with HW_ASSISTED_COHERENCY)
 endif
 
+ifneq ($(MULTI_CONSOLE_API), 0)
+    ifeq (${ARCH},aarch32)
+        $(error "Error: MULTI_CONSOLE_API is not supported for AArch32")
+    endif
+endif
+
 ################################################################################
 # Process platform overrideable behaviour
 ################################################################################
@@ -588,9 +594,9 @@ all: msg_start
 msg_start:
        @echo "Building ${PLAT}"
 
-# Check if deprecated declarations should be treated as error or not.
+# Check if deprecated declarations and cpp warnings should be treated as error or not.
 ifeq (${ERROR_DEPRECATED},0)
-    TF_CFLAGS          +=      -Wno-error=deprecated-declarations
+    CPPFLAGS           +=      -Wno-error=deprecated-declarations -Wno-error=cpp
 endif
 
 # Expand build macros for the different images
index c83e2467bb29e8c9b83fc663155829484f922e75..d6ecc4df246d6b309729be4bc8c1bb533c60cd78 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2017, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
@@ -9,6 +9,7 @@
  * This is the common console core code for the deprecated single-console API.
  * New platforms should set MULTI_CONSOLE_API=1 and not use this file.
  */
+#warning "Using deprecated console implementation. Please migrate to MULTI_CONSOLE_API"
 
        .globl  console_init
        .globl  console_uninit
index 0629f5717b41a1ec93dca0b8d5be8a34148c2b49..f8ec83d2fa15e500de45ca579ad381c793c0cf05 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2013-2018, ARM Limited and Contributors. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
@@ -63,10 +63,10 @@ int console_getc(void);
 int console_flush(void);
 
 #if !MULTI_CONSOLE_API
-/* DEPRECATED on AArch64 -- use console_<driver>_register() instead! */
+/* REMOVED on AArch64 -- use console_<driver>_register() instead! */
 int console_init(uintptr_t base_addr,
-                unsigned int uart_clk, unsigned int baud_rate) __deprecated;
-void console_uninit(void) __deprecated;
+                unsigned int uart_clk, unsigned int baud_rate);
+void console_uninit(void);
 #endif
 
 #endif /* __ASSEMBLY__ */
index a80a4915a419a86fd41fc914c56fca5b431cfa42..751f8343c6de45e118948da90ec0fb57716172e0 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2016-2017, ARM Limited and Contributors. All rights reserved.
+# Copyright (c) 2016-2018, ARM Limited and Contributors. All rights reserved.
 #
 # SPDX-License-Identifier: BSD-3-Clause
 #
@@ -98,9 +98,9 @@ KEY_ALG                               := rsa
 # Flag to enable new version of image loading
 LOAD_IMAGE_V2                  := 0
 
-# Use the new console API that allows registering more than one console instance
-# at once. Use = instead of := to dynamically default to ERROR_DEPRECATED.
-MULTI_CONSOLE_API              = $(ERROR_DEPRECATED)
+# Enable use of the console API allowing multiple consoles to be registered
+# at the same time.
+MULTI_CONSOLE_API              := 0
 
 # NS timer register save and restore
 NS_TIMER_SWITCH                        := 0