diff --git a/Makefile b/Makefile index b1560a2ba..6b31ff39c 100644 --- a/Makefile +++ b/Makefile @@ -112,11 +112,26 @@ CHECK_IGNORE := --ignore COMPLEX_MACRO \ --ignore GIT_COMMIT_ID CHECKPATCH_ARGS := --no-tree --no-signoff ${CHECK_IGNORE} CHECKCODE_ARGS := --no-patch --no-tree --no-signoff ${CHECK_IGNORE} -# Do not check the coding style on C library files or documentation files -INCLUDE_DIRS_TO_CHECK := $(sort $(filter-out include/stdlib, $(wildcard include/*))) -LIB_DIRS_TO_CHECK := $(sort $(filter-out lib/stdlib, $(wildcard lib/*))) -ROOT_DIRS_TO_CHECK := $(sort $(filter-out lib include docs %.md, $(wildcard *))) -CHECK_PATHS := ${ROOT_DIRS_TO_CHECK} ${INCLUDE_DIRS_TO_CHECK} ${LIB_DIRS_TO_CHECK} +# Do not check the coding style on imported library files or documentation files +INC_LIB_DIRS_TO_CHECK := $(sort $(filter-out \ + include/lib/stdlib, \ + $(wildcard include/lib/*))) +INC_DIRS_TO_CHECK := $(sort $(filter-out \ + include/lib, \ + $(wildcard include/*))) +LIB_DIRS_TO_CHECK := $(sort $(filter-out \ + lib/stdlib, \ + $(wildcard lib/*))) +ROOT_DIRS_TO_CHECK := $(sort $(filter-out \ + lib \ + include \ + docs \ + %.md, \ + $(wildcard *))) +CHECK_PATHS := ${ROOT_DIRS_TO_CHECK} \ + ${INC_DIRS_TO_CHECK} \ + ${INC_LIB_DIRS_TO_CHECK} \ + ${LIB_DIRS_TO_CHECK} ################################################################################ @@ -193,26 +208,15 @@ LDFLAGS += --gc-sections ################################################################################ # Common sources and include directories ################################################################################ +include lib/stdlib/stdlib.mk BL_COMMON_SOURCES += common/bl_common.c \ common/tf_printf.c \ common/aarch64/debug.S \ lib/aarch64/cache_helpers.S \ lib/aarch64/misc_helpers.S \ - lib/stdlib/abort.c \ - lib/stdlib/assert.c \ - lib/stdlib/exit.c \ - lib/stdlib/mem.c \ - lib/stdlib/printf.c \ - lib/stdlib/putchar.c \ - lib/stdlib/puts.c \ - lib/stdlib/sscanf.c \ - lib/stdlib/strchr.c \ - lib/stdlib/strcmp.c \ - lib/stdlib/strlen.c \ - lib/stdlib/strncmp.c \ - lib/stdlib/subr_prf.c \ - plat/common/aarch64/platform_helpers.S + plat/common/aarch64/platform_helpers.S \ + ${STDLIB_SRCS} INCLUDES += -Iinclude/bl1 \ -Iinclude/bl31 \ @@ -227,8 +231,6 @@ INCLUDES += -Iinclude/bl1 \ -Iinclude/lib/aarch64 \ -Iinclude/lib/cpus/aarch64 \ -Iinclude/plat/common \ - -Iinclude/stdlib \ - -Iinclude/stdlib/sys \ ${PLAT_INCLUDES} \ ${SPD_INCLUDES} diff --git a/docs/porting-guide.md b/docs/porting-guide.md index 8947defb0..8b72e758e 100644 --- a/docs/porting-guide.md +++ b/docs/porting-guide.md @@ -2035,12 +2035,12 @@ library only contains those C library definitions required by the local implementation. If more functionality is required, the needed library functions will need to be added to the local implementation. -Versions of [FreeBSD] headers can be found in `include/stdlib`. Some of these -headers have been cut down in order to simplify the implementation. In order to -minimize changes to the header files, the [FreeBSD] layout has been maintained. -The generic C library definitions can be found in `include/stdlib` with more -system and machine specific declarations in `include/stdlib/sys` and -`include/stdlib/machine`. +Versions of [FreeBSD] headers can be found in `include/lib/stdlib`. Some of +these headers have been cut down in order to simplify the implementation. In +order to minimize changes to the header files, the [FreeBSD] layout has been +maintained. The generic C library definitions can be found in +`include/lib/stdlib` with more system and machine specific declarations in +`include/lib/stdlib/sys` and `include/lib/stdlib/machine`. The local C library implementations can be found in `lib/stdlib`. In order to extend the C library these files may need to be modified. It is recommended to diff --git a/include/stdlib/assert.h b/include/lib/stdlib/assert.h similarity index 100% rename from include/stdlib/assert.h rename to include/lib/stdlib/assert.h diff --git a/include/stdlib/inttypes.h b/include/lib/stdlib/inttypes.h similarity index 100% rename from include/stdlib/inttypes.h rename to include/lib/stdlib/inttypes.h diff --git a/include/stdlib/machine/_inttypes.h b/include/lib/stdlib/machine/_inttypes.h similarity index 100% rename from include/stdlib/machine/_inttypes.h rename to include/lib/stdlib/machine/_inttypes.h diff --git a/include/stdlib/machine/_limits.h b/include/lib/stdlib/machine/_limits.h similarity index 100% rename from include/stdlib/machine/_limits.h rename to include/lib/stdlib/machine/_limits.h diff --git a/include/stdlib/machine/_stdint.h b/include/lib/stdlib/machine/_stdint.h similarity index 100% rename from include/stdlib/machine/_stdint.h rename to include/lib/stdlib/machine/_stdint.h diff --git a/include/stdlib/machine/_types.h b/include/lib/stdlib/machine/_types.h similarity index 100% rename from include/stdlib/machine/_types.h rename to include/lib/stdlib/machine/_types.h diff --git a/include/stdlib/stddef.h b/include/lib/stdlib/stddef.h similarity index 100% rename from include/stdlib/stddef.h rename to include/lib/stdlib/stddef.h diff --git a/include/stdlib/stdio.h b/include/lib/stdlib/stdio.h similarity index 100% rename from include/stdlib/stdio.h rename to include/lib/stdlib/stdio.h diff --git a/include/stdlib/stdlib.h b/include/lib/stdlib/stdlib.h similarity index 100% rename from include/stdlib/stdlib.h rename to include/lib/stdlib/stdlib.h diff --git a/include/stdlib/string.h b/include/lib/stdlib/string.h similarity index 100% rename from include/stdlib/string.h rename to include/lib/stdlib/string.h diff --git a/include/stdlib/strings.h b/include/lib/stdlib/strings.h similarity index 100% rename from include/stdlib/strings.h rename to include/lib/stdlib/strings.h diff --git a/include/stdlib/sys/_null.h b/include/lib/stdlib/sys/_null.h similarity index 100% rename from include/stdlib/sys/_null.h rename to include/lib/stdlib/sys/_null.h diff --git a/include/stdlib/sys/_stdint.h b/include/lib/stdlib/sys/_stdint.h similarity index 100% rename from include/stdlib/sys/_stdint.h rename to include/lib/stdlib/sys/_stdint.h diff --git a/include/stdlib/sys/_timespec.h b/include/lib/stdlib/sys/_timespec.h similarity index 100% rename from include/stdlib/sys/_timespec.h rename to include/lib/stdlib/sys/_timespec.h diff --git a/include/stdlib/sys/_types.h b/include/lib/stdlib/sys/_types.h similarity index 100% rename from include/stdlib/sys/_types.h rename to include/lib/stdlib/sys/_types.h diff --git a/include/stdlib/sys/cdefs.h b/include/lib/stdlib/sys/cdefs.h similarity index 100% rename from include/stdlib/sys/cdefs.h rename to include/lib/stdlib/sys/cdefs.h diff --git a/include/stdlib/sys/ctype.h b/include/lib/stdlib/sys/ctype.h similarity index 100% rename from include/stdlib/sys/ctype.h rename to include/lib/stdlib/sys/ctype.h diff --git a/include/stdlib/sys/errno.h b/include/lib/stdlib/sys/errno.h similarity index 100% rename from include/stdlib/sys/errno.h rename to include/lib/stdlib/sys/errno.h diff --git a/include/stdlib/sys/limits.h b/include/lib/stdlib/sys/limits.h similarity index 100% rename from include/stdlib/sys/limits.h rename to include/lib/stdlib/sys/limits.h diff --git a/include/stdlib/sys/stdarg.h b/include/lib/stdlib/sys/stdarg.h similarity index 100% rename from include/stdlib/sys/stdarg.h rename to include/lib/stdlib/sys/stdarg.h diff --git a/include/stdlib/sys/stdint.h b/include/lib/stdlib/sys/stdint.h similarity index 100% rename from include/stdlib/sys/stdint.h rename to include/lib/stdlib/sys/stdint.h diff --git a/include/stdlib/sys/timespec.h b/include/lib/stdlib/sys/timespec.h similarity index 100% rename from include/stdlib/sys/timespec.h rename to include/lib/stdlib/sys/timespec.h diff --git a/include/stdlib/sys/types.h b/include/lib/stdlib/sys/types.h similarity index 100% rename from include/stdlib/sys/types.h rename to include/lib/stdlib/sys/types.h diff --git a/include/stdlib/sys/uuid.h b/include/lib/stdlib/sys/uuid.h similarity index 100% rename from include/stdlib/sys/uuid.h rename to include/lib/stdlib/sys/uuid.h diff --git a/include/stdlib/time.h b/include/lib/stdlib/time.h similarity index 100% rename from include/stdlib/time.h rename to include/lib/stdlib/time.h diff --git a/include/stdlib/xlocale/_strings.h b/include/lib/stdlib/xlocale/_strings.h similarity index 100% rename from include/stdlib/xlocale/_strings.h rename to include/lib/stdlib/xlocale/_strings.h diff --git a/include/stdlib/xlocale/_time.h b/include/lib/stdlib/xlocale/_time.h similarity index 100% rename from include/stdlib/xlocale/_time.h rename to include/lib/stdlib/xlocale/_time.h diff --git a/lib/stdlib/stdlib.mk b/lib/stdlib/stdlib.mk new file mode 100644 index 000000000..cdf3d2933 --- /dev/null +++ b/lib/stdlib/stdlib.mk @@ -0,0 +1,47 @@ +# +# Copyright (c) 2016, ARM Limited and Contributors. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# Neither the name of ARM nor the names of its contributors may be used +# to endorse or promote products derived from this software without specific +# prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# + +STDLIB_SRCS := $(addprefix lib/stdlib/, \ + abort.c \ + assert.c \ + exit.c \ + mem.c \ + printf.c \ + putchar.c \ + puts.c \ + sscanf.c \ + strchr.c \ + strcmp.c \ + strlen.c \ + strncmp.c \ + subr_prf.c) + +INCLUDES += -Iinclude/lib/stdlib \ + -Iinclude/lib/stdlib/sys diff --git a/tools/fip_create/Makefile b/tools/fip_create/Makefile index 2e367c2fa..30e4b827d 100644 --- a/tools/fip_create/Makefile +++ b/tools/fip_create/Makefile @@ -69,7 +69,7 @@ ${PROJECT}: ${OBJECTS} Makefile # path. This avoids conflicts with definitions in the compiler standard # include path. # -uuid.h : ../../include/stdlib/sys/uuid.h +uuid.h : ../../include/lib/stdlib/sys/uuid.h $(call SHELL_COPY,$<,$@) firmware_image_package.h : ../../include/common/firmware_image_package.h