mirror of git://sourceware.org/git/glibc.git
				
				
				
			
		
			
				
	
	
		
			312 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Makefile
		
	
	
	
			
		
		
	
	
			312 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Makefile
		
	
	
	
| # Copyright (C) 1991-2025 Free Software Foundation, Inc.
 | |
| # This file is part of the GNU C Library.
 | |
| 
 | |
| # The GNU C Library is free software; you can redistribute it and/or
 | |
| # modify it under the terms of the GNU Lesser General Public
 | |
| # License as published by the Free Software Foundation; either
 | |
| # version 2.1 of the License, or (at your option) any later version.
 | |
| 
 | |
| # The GNU C Library is distributed in the hope that it will be useful,
 | |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | |
| # Lesser General Public License for more details.
 | |
| 
 | |
| # You should have received a copy of the GNU Lesser General Public
 | |
| # License along with the GNU C Library; if not, see
 | |
| # <https://www.gnu.org/licenses/>.
 | |
| 
 | |
| #
 | |
| #	Sub-makefile for string portion of library.
 | |
| #
 | |
| subdir	:= string
 | |
| 
 | |
| include ../Makeconfig
 | |
| 
 | |
| headers := \
 | |
|   argz.h \
 | |
|   bits/byteswap.h \
 | |
|   bits/endian.h \
 | |
|   bits/endianness.h \
 | |
|   bits/string_fortified.h \
 | |
|   bits/strings_fortified.h \
 | |
|   bits/uintn-identity.h \
 | |
|   byteswap.h \
 | |
|   endian.h \
 | |
|   envz.h \
 | |
|   memory.h \
 | |
|   string.h \
 | |
|   strings.h \
 | |
| # headers
 | |
| 
 | |
| routines := \
 | |
|   _strerror \
 | |
|   argz-addsep \
 | |
|   argz-append \
 | |
|   argz-count \
 | |
|   argz-create \
 | |
|   argz-ctsep \
 | |
|   argz-delete \
 | |
|   argz-extract \
 | |
|   argz-insert \
 | |
|   argz-next \
 | |
|   argz-replace \
 | |
|   argz-stringify \
 | |
|   basename \
 | |
|   bcopy \
 | |
|   bzero \
 | |
|   envz \
 | |
|   explicit_bzero \
 | |
|   ffs \
 | |
|   ffsll \
 | |
|   memccpy \
 | |
|   memchr \
 | |
|   memcmp \
 | |
|   memcmpeq \
 | |
|   memcpy \
 | |
|   memfrob \
 | |
|   memmem \
 | |
|   memmove \
 | |
|   mempcpy \
 | |
|   memrchr \
 | |
|   memset \
 | |
|   rawmemchr \
 | |
|   sigabbrev_np \
 | |
|   sigdescr_np \
 | |
|   stpcpy \
 | |
|   stpncpy \
 | |
|   strcasecmp \
 | |
|   strcasecmp_l \
 | |
|   strcasestr \
 | |
|   strcat \
 | |
|   strchr \
 | |
|   strchrnul \
 | |
|   strcmp \
 | |
|   strcoll \
 | |
|   strcoll_l \
 | |
|   strcpy \
 | |
|   strcspn \
 | |
|   strdup \
 | |
|   strerror \
 | |
|   strerror_l \
 | |
|   strerrordesc_np \
 | |
|   strerrorname_np \
 | |
|   strfry \
 | |
|   string-inlines \
 | |
|   strlcat \
 | |
|   strlcpy \
 | |
|   strlen \
 | |
|   strncase \
 | |
|   strncase_l \
 | |
|   strncat \
 | |
|   strncmp \
 | |
|   strncpy \
 | |
|   strndup \
 | |
|   strnlen \
 | |
|   strpbrk \
 | |
|   strrchr \
 | |
|   strsep \
 | |
|   strsignal \
 | |
|   strspn \
 | |
|   strstr \
 | |
|   strtok \
 | |
|   strtok_r \
 | |
|   strverscmp \
 | |
|   strxfrm \
 | |
|   strxfrm_l \
 | |
|   swab \
 | |
|   wordcopy \
 | |
|   xpg-strerror \
 | |
| # routines
 | |
| 
 | |
| # Exclude fortified routines from being built with _FORTIFY_SOURCE
 | |
| routines_no_fortify += \
 | |
|   explicit_bzero \
 | |
|   memcpy \
 | |
|   memmove \
 | |
|   mempcpy \
 | |
|   memset \
 | |
|   stpcpy \
 | |
|   stpncpy \
 | |
|   strcat \
 | |
|   strcpy \
 | |
|   strlcat \
 | |
|   strlcpy \
 | |
|   strncat \
 | |
|   strncpy \
 | |
|   # routines_no_fortify
 | |
| 
 | |
| tests := \
 | |
|   bug-envz1 \
 | |
|   bug-strcoll1 \
 | |
|   bug-strcoll2 \
 | |
|   bug-strncat1 \
 | |
|   bug-strpbrk1 \
 | |
|   bug-strspn1 \
 | |
|   bug-strtok1 \
 | |
|   inl-tester \
 | |
|   noinl-tester \
 | |
|   stratcliff \
 | |
|   test-bcopy \
 | |
|   test-bzero \
 | |
|   test-endian-file-scope \
 | |
|   test-endian-sign-conversion \
 | |
|   test-endian-types \
 | |
|   test-explicit_bzero \
 | |
|   test-ffs \
 | |
|   test-memccpy \
 | |
|   test-memchr \
 | |
|   test-memcmp \
 | |
|   test-memcmpeq \
 | |
|   test-memcpy \
 | |
|   test-memcpy-large \
 | |
|   test-memmem \
 | |
|   test-memmove \
 | |
|   test-mempcpy \
 | |
|   test-memrchr \
 | |
|   test-memset \
 | |
|   test-rawmemchr \
 | |
|   test-sig_np \
 | |
|   test-stpcpy \
 | |
|   test-stpncpy \
 | |
|   test-strcasecmp \
 | |
|   test-strcasestr \
 | |
|   test-strcat \
 | |
|   test-strchr \
 | |
|   test-strchrnul \
 | |
|   test-strcmp \
 | |
|   test-strcpy \
 | |
|   test-strcspn \
 | |
|   test-strdup \
 | |
|   test-strlen \
 | |
|   test-strncasecmp \
 | |
|   test-strncat \
 | |
|   test-strncmp \
 | |
|   test-strncpy \
 | |
|   test-strndup \
 | |
|   test-strnlen \
 | |
|   test-strnlen-nonarray \
 | |
|   test-strpbrk \
 | |
|   test-strrchr \
 | |
|   test-strspn \
 | |
|   test-strstr \
 | |
|   testcopy \
 | |
|   tester \
 | |
|   tst-bswap \
 | |
|   tst-cmp \
 | |
|   tst-endian \
 | |
|   tst-inlcall \
 | |
|   tst-memmove-overflow \
 | |
|   tst-strerror-fail \
 | |
|   tst-strfry \
 | |
|   tst-strlcat \
 | |
|   tst-strlcat2 \
 | |
|   tst-strlcpy \
 | |
|   tst-strlcpy2 \
 | |
|   tst-strlen \
 | |
|   tst-strtok \
 | |
|   tst-strtok_r \
 | |
|   tst-strxfrm \
 | |
|   tst-strxfrm2 \
 | |
|   tst-svc \
 | |
|   tst-svc2 \
 | |
|   tst-xbzero-opt \
 | |
| # tests
 | |
| 
 | |
| tests-static-internal := \
 | |
|   test-memswap \
 | |
| # tests-static-internal
 | |
| 
 | |
| tests-internal := \
 | |
|   $(tests-static-internal) \
 | |
|   # tests-internal
 | |
| 
 | |
| tests-static := \
 | |
|   $(tests-static-internal) \
 | |
|   # tests-static
 | |
| 
 | |
| # Both tests require the .mo translation files generated by msgfmt.
 | |
| tests-translation := \
 | |
|   tst-strerror \
 | |
|   tst-strsignal \
 | |
| # tests-translation
 | |
| 
 | |
| tests-container   += $(tests-translation)
 | |
| ifeq ($(MSGFMT),:)
 | |
| tests-unsupported += $(tests-translation)
 | |
| endif
 | |
| 
 | |
| # This test allocates a lot of memory and can run for a long time.
 | |
| xtests += tst-strcoll-overflow
 | |
| 
 | |
| # This test runs for a long time.
 | |
| xtests += test-strncmp-nonarray
 | |
| 
 | |
| # This test needs libdl.
 | |
| ifeq (yes,$(build-shared))
 | |
| tests += test-strerror-errno
 | |
| endif
 | |
| 
 | |
| ifeq ($(run-built-tests),yes)
 | |
| tests-special += $(objpfx)tst-svc-cmp.out
 | |
| endif
 | |
| 
 | |
| include ../Rules
 | |
| 
 | |
| CFLAGS-tester.c += $(test-config-cflags-wno-fortify-source)
 | |
| CFLAGS-inl-tester.c += -fno-builtin \
 | |
| 		       $(test-config-cflags-wno-fortify-source)
 | |
| CFLAGS-noinl-tester.c += -fno-builtin \
 | |
| 		       $(test-config-cflags-wno-fortify-source)
 | |
| CFLAGS-tst-strlen.c += -fno-builtin
 | |
| CFLAGS-stratcliff.c += -fno-builtin
 | |
| CFLAGS-test-ffs.c += -fno-builtin
 | |
| CFLAGS-tst-inlcall.c += -fno-builtin
 | |
| CFLAGS-tst-xbzero-opt.c += -O3
 | |
| CFLAGS-test-endian-sign-conversion.c += -Werror -Wsign-conversion
 | |
| # BZ 21006: Resolve all functions but at least explicit_bzero at startup.
 | |
| # Otherwise the test fails on s390x as the memcpy in prepare_test_buffer is
 | |
| # done by loading r4 / r5 with the test_pattern and using store multiple
 | |
| # instruction to store r4 / r5 to buf.  If explicit_bzero would be resolved in
 | |
| # setup_explicit_clear, r4 / r5 would be stored to stack by _dl_runtime_resolve
 | |
| # and the call to memmem in count_test_patterns will find a hit of the
 | |
| # test_pattern on the stack.
 | |
| LDFLAGS-tst-xbzero-opt = -z now
 | |
| 
 | |
| # Called during TLS initialization.
 | |
| CFLAGS-memcpy.c += $(no-stack-protector)
 | |
| CFLAGS-wordcopy.c += $(no-stack-protector)
 | |
| # Called during static initialization
 | |
| CFLAGS-strncmp.c += $(no-stack-protector)
 | |
| CFLAGS-memset.c += $(no-stack-protector)
 | |
| 
 | |
| CFLAGS-argz-next.c += $(config-cflags-wno-ignored-attributes)
 | |
| CFLAGS-basename.c += $(config-cflags-wno-ignored-attributes)
 | |
| CFLAGS-ffs.c += $(config-cflags-wno-ignored-attributes)
 | |
| CFLAGS-memmem.c += $(config-cflags-wno-ignored-attributes)
 | |
| CFLAGS-memchr.c += $(config-cflags-wno-ignored-attributes)
 | |
| CFLAGS-mempcpy.c += $(config-cflags-wno-ignored-attributes)
 | |
| CFLAGS-stpcpy.c += $(config-cflags-wno-ignored-attributes)
 | |
| CFLAGS-strnlen.c += $(config-cflags-wno-ignored-attributes)
 | |
| 
 | |
| ifeq ($(run-built-tests),yes)
 | |
| $(objpfx)tst-svc-cmp.out: tst-svc.expect $(objpfx)tst-svc.out
 | |
| 	cmp $^ > $@; \
 | |
| 	$(evaluate-test)
 | |
| 
 | |
| LOCALES := de_DE.UTF-8 en_US.ISO-8859-1 en_US.UTF-8 \
 | |
|            tr_TR.ISO-8859-9 tr_TR.UTF-8 cs_CZ.UTF-8 \
 | |
| 	   da_DK.ISO-8859-1 en_GB.UTF-8 pt_BR.UTF-8
 | |
| include ../gen-locales.mk
 | |
| 
 | |
| $(objpfx)test-strcasecmp.out: $(gen-locales)
 | |
| $(objpfx)test-strncasecmp.out: $(gen-locales)
 | |
| $(objpfx)tst-strxfrm.out: $(gen-locales)
 | |
| $(objpfx)tst-strxfrm2.out: $(gen-locales)
 | |
| # bug-strcoll2 needs cs_CZ.UTF-8 and da_DK.ISO-8859-1.
 | |
| $(objpfx)bug-strcoll2.out: $(gen-locales)
 | |
| $(objpfx)tst-strcoll-overflow.out: $(gen-locales)
 | |
| $(objpfx)tst-strsignal.out: $(gen-locales)
 | |
| $(objpfx)tst-strerror.out: $(gen-locales)
 | |
| 
 | |
| endif
 |