2 # Kbuild file for klibc
5 libc-y := vsnprintf.o snprintf.o vsprintf.o sprintf.o \
6 asprintf.o vasprintf.o \
7 vsscanf.o sscanf.o ctypes.o \
8 strntoumax.o strntoimax.o \
9 atoi.o atol.o atoll.o \
10 strtol.o strtoll.o strtoul.o strtoull.o \
11 strtoimax.o strtoumax.o \
12 globals.o exitc.o atexit.o onexit.o \
13 execl.o execle.o execv.o execvpe.o execvp.o execlp.o execlpe.o \
14 fork.o wait.o wait3.o waitpid.o system.o setpgrp.o getpgrp.o \
16 printf.o vprintf.o fprintf.o vfprintf.o perror.o \
17 statfs.o fstatfs.o umount.o \
18 open.o fopen.o fread.o fread2.o fgetc.o fgets.o \
19 fwrite.o fwrite2.o fputc.o fputs.o puts.o putchar.o \
20 sleep.o usleep.o strtotimespec.o strtotimeval.o \
21 raise.o abort.o assert.o alarm.o pause.o \
22 __signal.o sysv_signal.o bsd_signal.o siglist.o siglongjmp.o \
23 sigaction.o sigpending.o sigprocmask.o sigsuspend.o \
24 brk.o sbrk.o malloc.o realloc.o calloc.o mmap.o \
25 memcpy.o memcmp.o memset.o memccpy.o memmem.o memswap.o \
26 memmove.o memchr.o memrchr.o \
27 strcasecmp.o strncasecmp.o strndup.o strerror.o \
28 strcat.o strchr.o strcmp.o strcpy.o strdup.o strlen.o strnlen.o \
29 strncat.o strlcpy.o strlcat.o \
30 strstr.o strncmp.o strncpy.o strrchr.o \
31 strxspn.o strspn.o strcspn.o strpbrk.o strsep.o strtok.o \
32 gethostname.o getdomainname.o getcwd.o \
34 getenv.o setenv.o putenv.o __put_env.o unsetenv.o \
36 syslog.o closelog.o pty.o getpt.o isatty.o reboot.o \
37 time.o utime.o llseek.o nice.o getpriority.o \
39 lrand48.o jrand48.o mrand48.o nrand48.o srand48.o seed48.o \
40 inet/inet_ntoa.o inet/inet_aton.o inet/inet_addr.o \
41 inet/inet_ntop.o inet/inet_pton.o inet/bindresvport.o \
44 libc-$(CONFIG_KLIBC_ERRLIST) += errlist.o
46 libc-$(CONFIG_KLIBC_ZLIB) += \
47 zlib/adler32.o zlib/compress.o zlib/crc32.o zlib/gzio.o \
48 zlib/uncompr.o zlib/deflate.o zlib/trees.o zlib/zutil.o \
49 zlib/inflate.o zlib/infback.o zlib/inftrees.o zlib/inffast.o
52 # Add any architecture-specific rules
53 include $(obj)/arch/$(ARCH)/Makefile.inc
60 CRT0 := arch/$(ARCH)/crt0.o
63 always := $(CRT0) $(LIB) $(SOLIB) $(SOHASH) $(INTERP_O)
64 LIB := $(call objectify,$(LIB))
65 SOLIB := $(call objectify,$(SOLIB))
66 SOHASH := $(call objectify,$(SOHASH))
67 CRT0 := $(call objectify,$(CRT0))
68 INTERP_O := $(call objectify,$(INTERP_O))
70 targets := arch/$(ARCH)/crt0.o
71 targets += $(libc-y) $(ARCHOBJS)
73 # Generate syscall stubs
75 # Generate socket calls stubs
76 subdir-y += socketcalls
78 # Tell make to descend before building libs
79 $(obj)/syscalls/syscalls.o: $(obj)/syscalls
80 $(obj)/socketcalls/socketcalls.o: $(obj)/socketcalls
83 # Readable errormessages extracted from src..
85 quiet_cmd_errlist = GEN $@
86 cmd_errlist = $(PERL) $< $(LINUXINCLUDE) -errlist > $@ || rm -f $@
88 $(obj)/errlist.c: $(srctree)/$(src)/makeerrlist.pl
91 # full list of dependencies for klibc
92 libc-deps = $(call objectify, $(libc-y) $(ARCHOBJS)) \
93 $(call objectify, syscalls/syscalls.o socketcalls/socketcalls.o)
96 # Build static library: libc.a
97 targets += libc.a __static_init.o
98 quiet_cmd_libc = USERAR $@
99 cmd_libc = rm -f $@; \
100 $(USERAR) cq $@ $(filter-out FORCE,$^); \
103 $(LIB): $(call objectify,__static_init.o) $(libc-deps) FORCE
104 $(call if_changed,libc)
107 # Build shared library
108 targets += libc.so __shared_init.o
110 quiet_cmd_libcso = LD $@
111 cmd_libcso = $(USERLD) $(USERLDFLAGS) $(USERSHAREDFLAGS) \
112 -o $@ $(filter-out FORCE,$^) $(USERLIBGCC)
114 $(SOLIB): $(CRT0) $(call objectify,__shared_init.o) $(libc-deps) FORCE
115 $(call if_changed,libcso)
119 # Build sha1 hash values
120 targets += klibc.so libc.so.hash
121 hostprogs-y := sha1hash
123 quiet_cmd_solibhash = HASH $@
124 cmd_solibhash = $(USERNM) $< | egrep '^[0-9a-fA-F]+ [ADRTW] ' | \
125 sort | $(obj)/sha1hash > $@
126 $(SOLIB).hash: $(SOLIB) $(obj)/sha1hash FORCE
127 $(call if_changed,solibhash)
129 quiet_cmd_sohash = GEN $@
130 cmd_sohash = cat $< > $@; \
131 $(USERSTRIP) $(USERSTRIPFLAGS) $@; \
132 rm -f $(obj)/klibc-??????????????????????.so; \
133 ln -f $@ $(obj)/klibc-`cat $(SOLIB).hash`.so
134 $(SOHASH): $(SOLIB) $(SOLIB).hash
142 quiet_cmd_interp = BUILD $@
143 cmd_interp = $(USERCC) $(usercflags) -D__ASSEMBLY__ \
144 -DLIBDIR=\"$(SHLIBDIR)\" \
145 -DSOHASH=\"`cat $(SOLIB).hash`\" \
148 $(INTERP_O): $(obj)/interp.S $(SOLIB).hash
149 $(call if_changed,interp)