summaryrefslogtreecommitdiffstats
path: root/libc/string/Makefile.in
blob: 0adcaee3963704d68c76e3d8a04ef066b107e014 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# Makefile for uClibc
#
# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
#
# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
#

# order is relevant
-include $(top_srcdir)libc/string/$(TARGET_ARCH)/Makefile.arch
include $(top_srcdir)libc/string/generic/Makefile.in

MSRC:=wstring.c
MOBJ:=	basename.o bcopy.o bzero.o dirname.o ffs.o memccpy.o \
	memrchr.o rawmemchr.o strcasecmp.o strcasestr.o \
	strncasecmp.o strndup.o strsep.o \
	strtok.o strerror.o __xpg_strerror_r.o \
	_string_syserrmsgs.o __glibc_strerror_r.o \
	_string_syssigmsgs.o sys_siglist.o strsignal.o psignal.o \
	 __xpg_basename.o strlcat.o sys_errlist.o memmem.o

MOBJW:=
ifeq ($(UCLIBC_HAS_WCHAR),y)
MOBJW:=	wcscasecmp.o wcsncasecmp.o \
	wcsxfrm.o strxfrm.o # wcscoll strcoll.o
endif

MOBJx:=
MOBJWx:=
ifeq ($(UCLIBC_HAS_XLOCALE),y)
MOBJx:=strcasecmp_l.o strncasecmp_l.o
ifeq ($(UCLIBC_HAS_WCHAR),y)
MOBJWx:=wcscasecmp_l.o wcsncasecmp_l.o wcsxfrm_l.o strxfrm_l.o
endif
endif

#ffsl ffsll

ifeq ($(UCLIBC_HAS_STRING_ARCH_OPT),y)
ifneq ($(strip $(STRING_ARCH_OBJS)),)
MOBJ:=$(filter-out $(notdir $(STRING_ARCH_OBJS)),$(MOBJ))
endif
endif

ifeq ($(UCLIBC_HAS_STRING_GENERIC_OPT),y)
ifneq ($(strip $(STRING_GENERIC_OBJS)),)
MOBJ:=$(filter-out $(notdir $(STRING_GENERIC_OBJS)),$(MOBJ))
endif
endif

STRING_DIR:=$(top_srcdir)libc/string
STRING_OUT:=$(top_builddir)libc/string

STRING_WSRC:=$(filter-out $(STRING_DIR)/wstring.c,$(wildcard $(STRING_DIR)/w*.c))
STRING_CSRC:=$(filter-out $(STRING_DIR)/wstring.c $(STRING_WSRC),$(wildcard $(STRING_DIR)/*.c))

ifeq ($(UCLIBC_HAS_STRING_ARCH_OPT),y)
ifneq ($(strip $(STRING_ARCH_OBJS)),)
MOBJ:=$(filter-out $(notdir $(STRING_ARCH_OBJS)),$(MOBJ))
STRING_CSRC:=$(filter-out $(patsubst %.o,$(STRING_DIR)/%.c,$(notdir $(STRING_ARCH_OBJS))),$(STRING_CSRC))
STRING_WSRC:=$(filter-out $(patsubst %.o,$(STRING_DIR)/%.c,$(notdir $(STRING_ARCH_OBJS))),$(STRING_WSRC))
endif
endif

ifeq ($(UCLIBC_HAS_STRING_GENERIC_OPT),y)
ifneq ($(strip $(STRING_GENERIC_OBJS)),)
MOBJ:=$(filter-out $(notdir $(STRING_GENERIC_OBJS)),$(MOBJ))
STRING_CSRC:=$(filter-out $(patsubst %.o,$(STRING_DIR)/%.c,$(notdir $(STRING_GENERIC_OBJS))),$(STRING_CSRC))
STRING_WSRC:=$(filter-out $(patsubst %.o,$(STRING_DIR)/%.c,$(notdir $(STRING_GENERIC_OBJS))),$(STRING_WSRC))
endif
endif


STRING_COBJ:=$(patsubst $(STRING_DIR)/%.c,$(STRING_OUT)/%.o,$(STRING_CSRC))
ifeq ($(UCLIBC_HAS_WCHAR),y)
STRING_WOBJ:=$(patsubst $(STRING_DIR)/%.c,$(STRING_OUT)/%.o,$(STRING_WSRC))
endif
STRING_MSRC:=$(patsubst %.c,$(STRING_DIR)/%.c,$(MSRC))
STRING_MOBJ:=$(patsubst %.o,$(STRING_OUT)/%.o,$(MOBJ))
STRING_MOBJW:=$(patsubst %.o,$(STRING_OUT)/%.o,$(MOBJW))
STRING_MOBJx:=$(patsubst %.o,$(STRING_OUT)/%.o,$(MOBJx))
STRING_MOBJWx:=$(patsubst %.o,$(STRING_OUT)/%.o,$(MOBJWx))

STRING_DEF:=$(patsubst %,-DL_%,$(subst .o,,$(notdir $(STRING_MOBJ))))

STRING_Wx:=$(STRING_MOBJW) $(STRING_MOBJx) $(STRING_MOBJWx)
STRING_OBJS:=$(STRING_COBJ) $(STRING_WOBJ) $(STRING_MOBJ) $(STRING_Wx)

$(STRING_MOBJ): $(STRING_MSRC)
	$(compile.m)

$(STRING_MOBJ:.o=.os): $(STRING_MSRC)
	$(compile.m)

$(STRING_MOBJW): $(STRING_MSRC)
	$(compile.m) -DWANT_WIDE

$(STRING_MOBJW:.o=.os): $(STRING_MSRC)
	$(compile.m) -DWANT_WIDE

$(STRING_MOBJx): $(STRING_MSRC)
	$(compile.m) -D__UCLIBC_DO_XLOCALE

$(STRING_MOBJx:.o=.os): $(STRING_MSRC)
	$(compile.m) -D__UCLIBC_DO_XLOCALE

$(STRING_MOBJWx): $(STRING_MSRC)
	$(compile.m) -DWANT_WIDE -D__UCLIBC_DO_XLOCALE

$(STRING_MOBJWx:.o=.os): $(STRING_MSRC)
	$(compile.m) -DWANT_WIDE -D__UCLIBC_DO_XLOCALE

libc-a-y+=$(STRING_OBJS)
libc-so-y+=$(STRING_OBJS:.o=.os)

CFLAGS-multi-y+=$(STRING_DEF)
libc-multi-y+=$(STRING_MSRC) $(STRING_CSRC) $(STRING_WSRC)
libc-nomulti-y+=$(STRING_Wx)

objclean-y+=string_objclean

string_objclean:
	$(RM) $(STRING_OUT)/{,*/}*.{o,os}