Annotation of dietlibc/Makefile, revision 1.41
1.25 fefe 1: ARCH=$(shell uname -m | sed 's/i[4-9]86/i386/')
2:
3: OBJDIR=bin-$(ARCH)
1.1 cvs 4:
1.38 fefe 5: HOME=$(shell pwd)
6:
1.39 olaf 7: all: $(OBJDIR) $(OBJDIR)/start.o $(OBJDIR)/dyn_start.o $(OBJDIR)/dyn_stop.o \
8: $(OBJDIR)/dietlibc.a $(OBJDIR)/liblatin1.a $(OBJDIR)/librpc.a $(OBJDIR)/libpthread.a \
9: $(OBJDIR)/diet $(OBJDIR)/elftrunc
1.1 cvs 10:
11: CFLAGS=-pipe
12: CROSS=
13:
1.16 fefe 14: CC=gcc
15:
1.33 fefe 16: VPATH=lib:libstdio:libugly:libcruft:libcrypt:libshell:liblatin1:librpc:libregex:syscalls.c
1.1 cvs 17:
1.25 fefe 18: SYSCALLOBJ=$(patsubst syscalls.s/%.S,$(OBJDIR)/%.o,$(wildcard syscalls.s/*.S))
1.1 cvs 19:
1.25 fefe 20: LIBOBJ=$(patsubst lib/%.c,$(OBJDIR)/%.o,$(wildcard lib/*.c))
21: LIBUGLYOBJ=$(patsubst libugly/%.c,$(OBJDIR)/%.o,$(wildcard libugly/*.c))
22: LIBSTDIOOBJ=$(patsubst libstdio/%.c,$(OBJDIR)/%.o,$(wildcard libstdio/*.c))
23: LIBCRUFTOBJ=$(patsubst libcruft/%.c,$(OBJDIR)/%.o,$(wildcard libcruft/*.c))
24: LIBCRYPTOBJ=$(patsubst libcrypt/%.c,$(OBJDIR)/%.o,$(wildcard libcrypt/*.c))
25: LIBSHELLOBJ=$(patsubst libshell/%.c,$(OBJDIR)/%.o,$(wildcard libshell/*.c))
1.1 cvs 26:
1.31 fefe 27: LIBRPCOBJ=$(patsubst librpc/%.c,$(OBJDIR)/%.o,$(wildcard librpc/*.c))
1.33 fefe 28: LIBREGEXOBJ=$(patsubst libregex/%.c,$(OBJDIR)/%.o,$(wildcard libregex/*.c))
1.31 fefe 29:
1.41 ! olaf 30: LIBPTHREAD_OBJS=$(patsubst libpthread/%.c,$(OBJDIR)/%.o,$(wildcard libpthread/pthread_*.c)) $(OBJDIR)/__testandset.o
1.37 fefe 31:
1.1 cvs 32: include $(ARCH)/Makefile.add
33:
34: ifeq ($(CFLAGS),-pipe)
35: CFLAGS+=-O -fomit-frame-pointer
36: endif
37:
1.28 fefe 38: ifneq ($(DEBUG),)
39: CFLAGS = -g
40: COMMENT = :
41: endif
1.31 fefe 42: CFLAGS += -Wall -Wno-switch
1.1 cvs 43:
1.14 fefe 44: PWD=$(shell pwd)
45:
1.1 cvs 46: .SUFFIXES:
47: .SUFFIXES: .S .c
48:
1.25 fefe 49: $(OBJDIR):
50: mkdir $@
51:
1.2 olaf 52: % :: %,v
1.1 cvs 53:
1.25 fefe 54: $(OBJDIR)/%.o: %.S
55: $(CROSS)$(CC) -I. -Iinclude $(CFLAGS) -c $< -o $@
1.1 cvs 56:
1.37 fefe 57: $(OBJDIR)/pthread_%.o: libpthread/pthread_%.c
58: $(CROSS)$(CC) -I. -Iinclude $(CFLAGS) -c $< -o $@
59: $(COMMENT) $(CROSS)strip -x -R .comment -R .note $@
60:
1.25 fefe 61: $(OBJDIR)/%.o: %.c
62: $(CROSS)$(CC) -I. -Iinclude $(CFLAGS) -c $< -o $@
1.28 fefe 63: $(COMMENT) $(CROSS)strip -x -R .comment -R .note $@
1.1 cvs 64:
1.5 fefe 65: DIETLIBC_OBJ = $(SYSCALLOBJ) $(LIBOBJ) $(LIBSTDIOOBJ) $(LIBUGLYOBJ) \
1.33 fefe 66: $(LIBCRUFTOBJ) $(LIBCRYPTOBJ) $(LIBSHELLOBJ) $(LIBREGEXOBJ) \
1.25 fefe 67: $(OBJDIR)/__longjmp.o $(OBJDIR)/setjmp.o $(OBJDIR)/unified.o \
68: $(OBJDIR)/mmap.o $(OBJDIR)/clone.o
1.1 cvs 69:
1.25 fefe 70: $(OBJDIR)/dietlibc.a: $(DIETLIBC_OBJ) $(OBJDIR)/start.o
71: $(CROSS)ar cru $@ $(DIETLIBC_OBJ)
1.31 fefe 72:
1.32 fefe 73: $(OBJDIR)/librpc.a: $(LIBRPCOBJ)
1.31 fefe 74: $(CROSS)ar cru $@ $(LIBRPCOBJ)
1.17 fefe 75:
1.25 fefe 76: LIBLATIN1_OBJS=$(patsubst liblatin1/%.c,$(OBJDIR)/%.o,$(wildcard liblatin1/*.c))
77: $(OBJDIR)/liblatin1.a: $(LIBLATIN1_OBJS)
1.37 fefe 78: $(CROSS)ar cru $@ $^
79:
80: $(OBJDIR)/libpthread.a: $(LIBPTHREAD_OBJS)
1.17 fefe 81: $(CROSS)ar cru $@ $^
1.1 cvs 82:
1.25 fefe 83: $(OBJDIR)/libdietc.so: $(OBJDIR)/dietlibc.a
1.1 cvs 84: $(CROSS)ld -whole-archive -shared -o $@ $^
85:
86: $(SYSCALLOBJ): syscalls.h
87:
1.39 olaf 88: $(OBJDIR)/elftrunc: $(OBJDIR)/diet contrib/elftrunc.c
89: $(OBJDIR)/diet $(CROSS)$(CC) $(CFLAGS) -o $@ contrib/elftrunc.c
1.1 cvs 90:
1.39 olaf 91: $(OBJDIR)/diet: $(OBJDIR)/start.o $(OBJDIR)/dyn_start.o diet.c $(OBJDIR)/dietlibc.a $(OBJDIR)/dyn_stop.o
1.38 fefe 92: $(CROSS)$(CC) -Iinclude $(CFLAGS) -nostdlib -o $@ $^ -DDIETHOME=\"$(HOME)\"
1.26 fefe 93: $(CROSS)strip -R .comment -R .note $@
1.25 fefe 94:
95: $(OBJDIR)/djb: $(OBJDIR)/compile $(OBJDIR)/load
1.1 cvs 96:
1.25 fefe 97: $(OBJDIR)/compile:
98: echo 'exec gcc $(CFLAGS) -I$(PWD)/$(OBJDIR)/include -c $${1+"$$@"}' > $@
1.1 cvs 99: chmod 755 $@
100:
1.25 fefe 101: $(OBJDIR)/load:
102: echo 'main="$$1"; shift; exec gcc -nostdlib -o "$$main" $(PWD)/$(OBJDIR)/start.o "$$main".o $${1+"$$@"} $(PWD)/$(OBJDIR)/dietlibc.a -lgcc' > $@
1.1 cvs 103: chmod 755 $@
104:
105: clean:
106: rm -f *.o *.a t t1 compile load elftrunc exports mapfile libdietc.so
1.25 fefe 107: rm -rf bin-*
1.1 cvs 108: $(MAKE) -C examples clean
109:
110: tar: clean
1.11 fefe 111: rm -f armv4l
1.3 fefe 112: ln -sf arm armv4l
1.8 fefe 113: cd ..; tar cvvf dietlibc.tar.bz2 dietlibc --use=bzip2 --exclude CVS
1.1 cvs 114:
1.25 fefe 115: $(OBJDIR)/exports: $(OBJDIR)/dietlibc.a
116: nm -g $(OBJDIR)/dietlibc.a | grep -w T | awk '{ print $$3 }' | sort -u > $(OBJDIR)/exports
1.1 cvs 117:
118: .PHONY: t t1
119: t:
1.38 fefe 120: $(CROSS)$(CC) -g $(CFLAGS) -fno-builtin -nostdlib -Iinclude -o t t.c $(OBJDIR)/start.o $(OBJDIR)/libpthread.a $(OBJDIR)/dietlibc.a -lgcc -Wl,-Map,mapfile
1.1 cvs 121:
122: t1:
1.16 fefe 123: $(CROSS)$(CC) -g -o t1 t.c
1.1 cvs 124:
1.27 fefe 125: install: $(OBJDIR)/start.o $(OBJDIR)/dietlibc.a $(OBJDIR)/liblatin1.a $(OBJDIR)/elftrunc $(OBJDIR)/diet
126: cp $(OBJDIR)/start.o $(INSTALLPREFIX)$(prefix)/lib/dietstart.o
127: cp $(OBJDIR)/dietlibc.a $(INSTALLPREFIX)$(prefix)/lib/libdietc.a
128: cp $(OBJDIR)/liblatin1.a $(INSTALLPREFIX)$(prefix)/lib/libdietlatin1.a
129: cp $(OBJDIR)/diet $(INSTALLPREFIX)$(prefix)/bin/diet
1.1 cvs 130:
131: .PHONY: sparc ppc mips arm alpha i386
132:
1.19 fefe 133: arm sparc ppc alpha i386:
1.25 fefe 134: $(MAKE) ARCH=$@ CROSS=$@-linux- all t bin-$@/libdietc.so
1.1 cvs 135:
1.19 fefe 136: mips:
1.25 fefe 137: $(MAKE) ARCH=$@ CROSS=$@-linux-gnu- all t bin-$@/libdietc.so
1.1 cvs 138:
1.25 fefe 139: cross:
140: $(MAKE) arm sparc ppc alpha i386 mips
1.15 fefe 141:
142:
143: # these depend on dietfeatures.h for large file backward compatibility
1.36 fefe 144: $(OBJDIR)/__fstat64.o $(OBJDIR)/__lstat64.o $(OBJDIR)/__stat64.o: dietfeatures.h
1.15 fefe 145:
146: # these depend on dietfeatures.h for thread support
1.36 fefe 147: $(OBJDIR)/alloc.o $(OBJDIR)/perror.o $(OBJDIR)/logging.o $(OBJDIR)/unified.o: dietfeatures.h
1.15 fefe 148:
149: # these depend on dietfeatures.h for linker warnings
1.36 fefe 150: $(OBJDIR)/assert_fail.o $(OBJDIR)/sprintf.o $(OBJDIR)/vsnprintf.o $(OBJDIR)/___div.o $(OBJDIR)/fflush.o $(OBJDIR)/setvbuf.o $(OBJDIR)/system.o $(OBJDIR)/sendfile.o $(OBJDIR)/setenv.o: dietfeatures.h
1.15 fefe 151:
152: # these depend on dietfeatures.h for buffered stdio
1.36 fefe 153: fclose.o $(OBJDIR)/fdglue.o $(OBJDIR)/fflush.o $(OBJDIR)/fgetc.o $(OBJDIR)/fputc.o $(OBJDIR)/fread.o $(OBJDIR)/fseek.o $(OBJDIR)/printf.o $(OBJDIR)/setvbuf.o $(OBJDIR)/stderr.o $(OBJDIR)/stdin.o $(OBJDIR)/stdout.o $(OBJDIR)/fwrite.o $(OBJDIR)/puts.o: dietfeatures.h
1.15 fefe 154:
155: # these depend on dietfeatures.h for fast string routines
1.36 fefe 156: strcasecmp.o $(OBJDIR)/strcat.o $(OBJDIR)/strchr.o $(OBJDIR)/strcmp.o $(OBJDIR)/strcpy.o $(OBJDIR)/strlen.o $(OBJDIR)/strncasecmp.o $(OBJDIR)/strncat.o $(OBJDIR)/strrchr.o: dietfeatures.h
1.15 fefe 157:
158: # these depend on dietfeatures.h for /proc
1.36 fefe 159: $(OBJDIR)/tty.o: dietfeatures.h
1.15 fefe 160:
161: # these depend on dietfeatures.h for ungetc support ;-)
1.36 fefe 162: $(OBJDIR)/ungetc.o: dietfeatures.h
1.15 fefe 163:
1.18 fefe 164: # these depend on dietfeatures.h for WANT_TZFILE_PARSER
1.36 fefe 165: $(OBJDIR)/localtime_r.o: dietfeatures.h
1.40 fefe 166:
167: # these depend on dietfeatures.h for WANT_BUGGY_GLIBC_STRSEP
168: $(OBJDIR)/strsep.o: dietfeatures.h
LinuxTV legacy CVS <linuxtv.org/cvs>