OSDN Git Service

Some minor makefile fixups
[uclinux-h8/uClibc.git] / Makefile
index fc2ced2..c80c9e8 100644 (file)
--- a/Makefile
+++ b/Makefile
 
 include Rules.mak
 
-
-DIRS = extra misc pwd_grp stdio string termios inet signal stdlib sysdeps unistd
+DIRS = misc pwd_grp stdio string termios inet signal stdlib sysdeps unistd extra
 
 ifeq ($(strip $(HAS_MMU)),true)
        DO_SHARED=shared
 endif
 
-all: $(STATIC_NAME) $(DO_SHARED) done
+all: $(LIBNAME) $(DO_SHARED) done
 
-$(STATIC_NAME): halfclean headers uClibc_config.h subdirs
-       $(CROSS)ranlib $(STATIC_NAME)
+$(LIBNAME): halfclean headers uClibc_config.h subdirs
+       $(CROSS)ranlib $(LIBNAME)
 
-# Surely there is a better way to do this then dumping all 
-# the objects into a tmp dir.  Please -- someone enlighten me.
-shared: $(STATIC_NAME)
+shared: $(LIBNAME)
+       @make -C ld.so-1
        @rm -rf tmp
        @mkdir tmp
        @(cd tmp; CC=$(CC) /bin/sh ../extra/scripts/get-needed-libgcc-objects.sh)
        if [ -s ./tmp/libgcc-need.a ] ; then \
-               $(CC) -g $(LDFLAGS) -shared -o $(SHARED_NAME) \
-                   -Wl,-soname,$(SHARED_NAME) -Wl,--whole-archive \
-                   ./libc.a ./tmp/libgcc-need.a ; \
+               $(CC) -g $(LDFLAGS) -shared -o $(SHARED_FULLNAME) \
+                   -Wl,-soname,$(SHARED_MAJORNAME) -Wl,--whole-archive \
+                   ./$(LIBNAME) ./tmp/libgcc-need.a ; \
        else \
-               $(CC) -g $(LDFLAGS) -shared -o $(SHARED_NAME) \
-                   -Wl,-soname,$(SHARED_NAME) -Wl,--whole-archive ./libc.a ; \
+               $(CC) -g $(LDFLAGS) -shared -o $(SHARED_FULLNAME) \
+                   -Wl,-soname,$(SHARED_MAJORNAME) -Wl,--whole-archive \
+                   ./$(LIBNAME) ; \
        fi
        @rm -rf tmp
+       ln -sf $(SHARED_FULLNAME) $(SHARED_MAJORNAME)
+       ln -sf $(SHARED_MAJORNAME) libc.so
 
-done: $(STATIC_NAME) $(DO_SHARED)
+done: $(LIBNAME) $(DO_SHARED)
        @echo
        @echo Finally finished compiling...
        @echo
 
 halfclean:
-       @rm -f $(STATIC_NAME) $(SHARED_NAME) crt0.o uClibc_config.h
+       @rm -f $(LIBNAME) crt0.o uClibc_config.h
+       @rm -f $(SHARED_FULLNAME) $(SHARED_MAJORNAME) libc.so
 
 headers: dummy
        @rm -f include/asm include/linux include/bits
@@ -89,9 +91,8 @@ headers: dummy
 tags:
        ctags -R
 
-clean: subdirs_clean
+clean: subdirs_clean halfclean
        @rm -rf tmp
-       rm -f $(STATIC_NAME) crt0.o $(SHARED_NAME) uClibc_config.h
        rm -f include/asm include/linux include/bits
 
 subdirs: $(patsubst %, _dir_%, $(DIRS))
@@ -103,18 +104,22 @@ $(patsubst %, _dir_%, $(DIRS)) : dummy
 $(patsubst %, _dirclean_%, $(DIRS) test) : dummy
        $(MAKE) -C $(patsubst _dirclean_%, %, $@) clean
 
-install_new: install_runtime install_dev
+install: install_runtime install_dev install_ldso
 
 # Installs shared library
 install_runtime:
 ifneq ($(DO_SHARED),)
        install -d $(INSTALL_DIR)/lib
-       install -m 644 $(SHARED_NAME) $(INSTALL_DIR)/lib/
-       (cd $(INSTALL_DIR)/lib;ln -sf $(SHARED_NAME) libuClibc.so)
+       rm -rf $(INSTALL_DIR)/lib/$(SHARED_FULLNAME)
+       rm -rf $(INSTALL_DIR)/lib/$(SHARED_MAJORNAME)
+       rm -rf $(INSTALL_DIR)/lib/libc.so
+       install -m 644 $(SHARED_FULLNAME) $(INSTALL_DIR)/lib/
+       (cd $(INSTALL_DIR)/lib;ln -sf $(SHARED_FULLNAME) $(SHARED_MAJORNAME))
+       (cd $(INSTALL_DIR)/lib;ln -sf $(SHARED_MAJORNAME) libc.so)
 # ldconfig is really not necessary, and impossible to cross
-ifeq ($(INSTALL_DIR),)
-       /sbin/ldconfig -n $(INSTALL_DIR)/lib
-endif
+#ifeq ($(INSTALL_DIR),)
+#      /sbin/ldconfig -n $(INSTALL_DIR)/lib
+#endif
 else
        echo shared library not installed
 endif
@@ -130,55 +135,23 @@ install_dev:
        rm -f $(INSTALL_DIR)/include/linux
        ln -s $(KERNEL_SOURCE)/include/asm $(INSTALL_DIR)/include/asm
        ln -s $(KERNEL_SOURCE)/include/linux $(INSTALL_DIR)/include/linux
-       find include/ -type f -depth -exec install -m 644 {} $(INSTALL_DIR)/include/ ';'
-       find include/bits/ -type f -depth -exec install -m 644 {} $(INSTALL_DIR)/include/bits/ ';'
+       find include/ -type f -depth -not -path "*CVS*" -exec install -D -m 644 {} $(INSTALL_DIR)/'{}' ';'
+       find include/bits/ -type f -depth -not -path "*CVS*" -exec install -D -m 644 {} $(INSTALL_DIR)/'{}' ';'
+       install -m 644 include/bits/uClibc_config.h $(INSTALL_DIR)/include/bits/
        install -d $(INSTALL_DIR)/lib
-       rm -f $(INSTALL_DIR)/lib/$(STATIC_NAME)
-       install -m 644 $(STATIC_NAME) $(INSTALL_DIR)/lib/
+       rm -f $(INSTALL_DIR)/lib/$(LIBNAME)
+       install -m 644 $(LIBNAME) $(INSTALL_DIR)/lib/
        @if [ -f crt0.o ] ; then install -m 644 crt0.o $(INSTALL_DIR)/lib/; fi
+       install -d $(INSTALL_DIR)/bin
+       @if [ -f extra/gcc-uClibc/$(TARGET_ARCH)-uclibc-gcc ] ; then install -m 755 extra/gcc-uClibc/$(TARGET_ARCH)-uclibc-gcc $(INSTALL_DIR)/bin/ ; fi
 
-install:
-       echo Consider using 'make install_new'
-       @if [ `id -u` -ne 0 ]; then \
-           echo "Aborting install -- You must be root."; \
-           /bin/false; \
-       fi;
-       @if [ -n "$(DO_SHARED)" ] ; then \
-           set -x; \
-           mv -f $(INSTALL_DIR)/lib/$(SHARED_NAME) \
-               $(INSTALL_DIR)/lib/$(SHARED_NAME).old > /dev/null 2>&1; \
-           rm -f $(INSTALL_DIR)/lib/$(SHARED_NAME).old; \
-           cp $(SHARED_NAME) $(INSTALL_DIR)/lib; \
-           chmod 644 $(INSTALL_DIR)/lib/$(SHARED_NAME); \
-           chown -R root.root $(INSTALL_DIR)/lib/$(SHARED_NAME); \
-           rm -f $(INSTALL_DIR)/lib/libuClibc.so; \
-           ln -s $(INSTALL_DIR)/lib/$(SHARED_NAME) \
-                   $(INSTALL_DIR)/lib/libuClibc.so; \
-           /sbin/ldconfig; \
-       fi;
-       @if [ "$(HAS_MMU)" = "false" ] ; then \
-           set -x; \
-           rm -f $(INSTALL_DIR)/include/asm; \
-           rm -f $(INSTALL_DIR)/include/linux; \
-           mkdir -p $(INSTALL_DIR)/include/bits; \
-           ln -s $(KERNEL_SOURCE)/include/asm $(INSTALL_DIR)/include/asm; \
-           ln -s $(KERNEL_SOURCE)/include/linux $(INSTALL_DIR)/include/linux; \
-           find include/ -type f -depth -print | cpio -pdmu $(INSTALL_DIR); \
-           find include/bits/ -depth -print | cpio -pdmu $(INSTALL_DIR); \
-           rm -f $(INSTALL_DIR)/lib/$(STATIC_NAME); \
-           cp $(STATIC_NAME) $(INSTALL_DIR)/lib; \
-           chmod 644 $(INSTALL_DIR)/lib/$(STATIC_NAME); \
-           chown -R root.root $(INSTALL_DIR)/lib/$(STATIC_NAME); \
-           if [ -f crt0.o ] ; then \
-               rm -f $(INSTALL_DIR)/lib/crt0.o; \
-               cp crt0.o $(INSTALL_DIR)/lib ; \
-               chmod 644 $(INSTALL_DIR)/lib/crt0.o; \
-               chown -R root.root $(INSTALL_DIR)/lib/crt0.o; \
-           fi; \
-           chmod -R 775 `find $(INSTALL_DIR)/include -type d`; \
-           chmod -R 644 `find $(INSTALL_DIR)/include -type f`; \
-           chown -R root.root $(INSTALL_DIR)/include; \
-       fi;
+
+install_ldso:
+ifeq ($(strip $(DO_SHARED)),shared)
+       @make -C ld.so-1 install
+else
+       @echo "Skipping shared library support"
+endif
 
 uClibc_config.h: Config
        @echo "/* WARNING!!! AUTO-GENERATED FILE!!! DO NOT EDIT!!! */" > uClibc_config.h
@@ -186,7 +159,7 @@ uClibc_config.h: Config
        @echo "#error Never include <bits/uClibc_config.h> directly; use <features.h> instead." >> uClibc_config.h
        @echo "#endif" >> uClibc_config.h
        @echo "#define linux 1" >> uClibc_config.h 
-       @echo "#define __linux_ 1" >> uClibc_config.h 
+       @echo "#define __linux__ 1" >> uClibc_config.h 
        @if [ "$(HAS_MMU)" = "true" ] ; then \
            echo "#define __UCLIBC_HAS_MMU__ 1" >> uClibc_config.h ; \
        else \