X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=Makefile;h=2eb7b3084589207e99662087d3bd1dc66fa103f8;hb=2a780aa3050b86d888489361f04220bfb58890a1;hp=33c2de1b19a2f877ecebf461fc42442a26eb6398;hpb=fb72a97df9222be61ec582ba7b1e9ce496b65e3e;p=musl diff --git a/Makefile b/Makefile index 33c2de1b..2eb7b308 100644 --- a/Makefile +++ b/Makefile @@ -20,6 +20,7 @@ SRCS = $(sort $(wildcard src/*/*.c arch/$(ARCH)/src/*.c)) OBJS = $(SRCS:.c=.o) LOBJS = $(OBJS:.o=.lo) GENH = include/bits/alltypes.h +GENH_INT = src/internal/version.h IMPH = src/internal/stdio_impl.h src/internal/pthread_impl.h src/internal/libc.h LDFLAGS = @@ -36,13 +37,14 @@ CFLAGS_ALL_SHARED = $(CFLAGS_ALL) -fPIC -DSHARED AR = $(CROSS_COMPILE)ar RANLIB = $(CROSS_COMPILE)ranlib +INSTALL = ./tools/install.sh ARCH_INCLUDES = $(wildcard arch/$(ARCH)/bits/*.h) ALL_INCLUDES = $(sort $(wildcard include/*.h include/*/*.h) $(GENH) $(ARCH_INCLUDES:arch/$(ARCH)/%=include/%)) EMPTY_LIB_NAMES = m rt pthread crypt util xnet resolv dl EMPTY_LIBS = $(EMPTY_LIB_NAMES:%=lib/lib%.a) -CRT_LIBS = lib/crt1.o lib/Scrt1.o lib/crti.o lib/crtn.o +CRT_LIBS = lib/crt1.o lib/Scrt1.o lib/rcrt1.o lib/crti.o lib/crtn.o STATIC_LIBS = lib/libc.a SHARED_LIBS = lib/libc.so TOOL_LIBS = lib/musl-gcc.specs @@ -63,7 +65,7 @@ clean: rm -f $(LOBJS) rm -f $(ALL_LIBS) lib/*.[ao] lib/*.so rm -f $(ALL_TOOLS) - rm -f $(GENH) + rm -f $(GENH) $(GENH_INT) rm -f include/bits distclean: clean @@ -78,11 +80,18 @@ include/bits/alltypes.h.in: include/bits include/bits/alltypes.h: include/bits/alltypes.h.in include/alltypes.h.in tools/mkalltypes.sed sed -f tools/mkalltypes.sed include/bits/alltypes.h.in include/alltypes.h.in > $@ -src/ldso/dynlink.lo: arch/$(ARCH)/reloc.h +src/internal/version.h: $(wildcard VERSION .git) + printf '#define VERSION "%s"\n' "$$(sh tools/version.sh)" > $@ -crt/crt1.o crt/Scrt1.o: $(wildcard arch/$(ARCH)/crt_arch.h) +src/internal/version.lo: src/internal/version.h -crt/Scrt1.o: CFLAGS += -fPIC +crt/rcrt1.o src/ldso/dlstart.lo src/ldso/dynlink.lo: src/internal/dynlink.h arch/$(ARCH)/reloc.h + +crt/crt1.o crt/Scrt1.o crt/rcrt1.o src/ldso/dlstart.lo: $(wildcard arch/$(ARCH)/crt_arch.h) + +crt/rcrt1.o: src/ldso/dlstart.c + +crt/Scrt1.o crt/rcrt1.o: CFLAGS += -fPIC OPTIMIZE_SRCS = $(wildcard $(OPTIMIZE_GLOBS:%=src/%)) $(OPTIMIZE_SRCS:%.c=%.o) $(OPTIMIZE_SRCS:%.c=%.lo): CFLAGS += -O3 @@ -90,6 +99,15 @@ $(OPTIMIZE_SRCS:%.c=%.o) $(OPTIMIZE_SRCS:%.c=%.lo): CFLAGS += -O3 MEMOPS_SRCS = src/string/memcpy.c src/string/memmove.c src/string/memcmp.c src/string/memset.c $(MEMOPS_SRCS:%.c=%.o) $(MEMOPS_SRCS:%.c=%.lo): CFLAGS += $(CFLAGS_MEMOPS) +NOSSP_SRCS = $(wildcard crt/*.c) \ + src/env/__libc_start_main.c src/env/__init_tls.c \ + src/thread/__set_thread_area.c src/env/__stack_chk_fail.c \ + src/string/memset.c src/string/memcpy.c \ + src/ldso/dlstart.c src/ldso/dynlink.c +$(NOSSP_SRCS:%.c=%.o) $(NOSSP_SRCS:%.c=%.lo): CFLAGS += $(CFLAGS_NOSSP) + +$(CRT_LIBS:lib/%=crt/%): CFLAGS += -DCRT + # This incantation ensures that changes to any subarch asm files will # force the corresponding object file to be rebuilt, even if the implicit # rule below goes indirectly through a .sub file. @@ -118,7 +136,7 @@ $(foreach s,$(wildcard src/*/$(ARCH)*/*.s),$(eval $(call mkasmdep,$(s)))) lib/libc.so: $(LOBJS) $(CC) $(CFLAGS_ALL_SHARED) $(LDFLAGS) -nostdlib -shared \ - -Wl,-e,_start -Wl,-Bsymbolic-functions \ + -Wl,-e,_dlstart -Wl,-Bsymbolic-functions \ -o $@ $(LOBJS) $(LIBCC) lib/libc.a: $(OBJS) @@ -141,25 +159,22 @@ tools/musl-gcc: config.mak chmod +x $@ $(DESTDIR)$(bindir)/%: tools/% - install -D $< $@ + $(INSTALL) -D $< $@ $(DESTDIR)$(libdir)/%.so: lib/%.so - install -D -m 755 $< $@ + $(INSTALL) -D -m 755 $< $@ $(DESTDIR)$(libdir)/%: lib/% - install -D -m 644 $< $@ + $(INSTALL) -D -m 644 $< $@ $(DESTDIR)$(includedir)/bits/%: arch/$(ARCH)/bits/% - install -D -m 644 $< $@ + $(INSTALL) -D -m 644 $< $@ $(DESTDIR)$(includedir)/%: include/% - install -D -m 644 $< $@ - -$(DESTDIR)$(LDSO_PATHNAME): $(DESTDIR)$(syslibdir) - ln -sf $(libdir)/libc.so $@ || true + $(INSTALL) -D -m 644 $< $@ -$(DESTDIR)$(syslibdir): - install -d -m 755 $(DESTDIR)$(syslibdir) +$(DESTDIR)$(LDSO_PATHNAME): $(DESTDIR)$(libdir)/libc.so + $(INSTALL) -D -l $(libdir)/libc.so $@ || true install-libs: $(ALL_LIBS:lib/%=$(DESTDIR)$(libdir)/%) $(if $(SHARED_LIBS),$(DESTDIR)$(LDSO_PATHNAME),) @@ -167,7 +182,11 @@ install-headers: $(ALL_INCLUDES:include/%=$(DESTDIR)$(includedir)/%) install-tools: $(ALL_TOOLS:tools/%=$(DESTDIR)$(bindir)/%) +musl-git-%.tar.gz: .git + git archive --format=tar.gz --prefix=$(patsubst %.tar.gz,%,$@)/ -o $@ $(patsubst musl-git-%.tar.gz,%,$@) +musl-%.tar.gz: .git + git archive --format=tar.gz --prefix=$(patsubst %.tar.gz,%,$@)/ -o $@ v$(patsubst musl-%.tar.gz,%,$@) .PRECIOUS: $(CRT_LIBS:lib/%=crt/%)