Makefile support for sparc-ros-gcc
authorAndrew Waterman <waterman@r53.millennium.berkeley.edu>
Mon, 30 Nov 2009 04:47:23 +0000 (20:47 -0800)
committerAndrew Waterman <waterman@r53.millennium.berkeley.edu>
Mon, 30 Nov 2009 04:47:23 +0000 (20:47 -0800)
augment-gcc [new file with mode: 0755]
user/apps/parlib/Makefrag
user/apps/parlib/pthread/Makefrag
user/parlib/Makefrag
user/parlib/src/i386/Makefrag
user/parlib/src/sparc/Makefrag

diff --git a/augment-gcc b/augment-gcc
new file mode 100755 (executable)
index 0000000..ccf1ad4
--- /dev/null
@@ -0,0 +1,56 @@
+#!/bin/bash
+
+function overwrite
+{
+       for i in `find $1 -iname $3`
+       do
+               if [ ! -f $i.bak ]
+               then
+                       cp $i $i.bak
+               fi
+               cp $2 $i
+       done
+}
+
+if [ -z "$1" -o -z "$2" ]
+then
+       echo usage: $1 path-to-ros-gcc target-arch
+       exit
+fi
+
+overwrite $1 obj/user/parlib/src/$2/crtbegin.o crtbegin.o
+overwrite $1 obj/user/parlib/src/$2/crtend.o crtend.o
+overwrite $1 obj/user/parlib/src/$2/entry.o crt0.o
+
+LIBGCC=`find $1 -iname libgcc.a.bak`
+if [ -z "$LIBGCC" ]
+then
+       LIBGCC=`find $1 -iname libgcc.a`
+fi
+LIBC=`find $1 -iname libc.a`
+LIBM=`find $1 -iname libm.a`
+LIBG=`find $1 -iname libg.a`
+LIBPARLIB=../obj/user/parlib/libparlib.a
+LIBPTHREAD=../obj/user/parlib/libpthread.a
+mkdir tmp
+cd tmp
+ar x $LIBPARLIB
+for i in *.o; do mv $i first-$i; ar xN 1 $LIBPARLIB $i 2> /dev/null; done
+ar rcs libgcc.a *.o; rm *.o
+ar x $LIBPTHREAD
+for i in *.o; do mv $i first-$i; ar xN 1 $LIBPTHREAD $i 2> /dev/null; done
+ar rcs libgcc.a *.o; rm *.o
+ar x $LIBGCC
+ar x $LIBC
+ar x $LIBM
+ar x $LIBG
+ar rcs libgcc.a *.o
+cd ..
+
+overwrite $1 tmp/libgcc.a libgcc.a
+rm -rf tmp
+
+SYS_INC=`find $1 -iname sys-include`
+rm -rf $SYS_INC/ros
+cp -r user/parlib/inc/ros $SYS_INC
+
index eab3480..6e64bab 100644 (file)
@@ -15,9 +15,13 @@ USER_APPS_PARLIB_LDFLAGS   := $(USER_LDFLAGS) -static \
 USER_APPS_PARLIB_LDDIRS    := -L$(OBJDIR)/$(USER_PARLIB_DIR) \
                               -L$(USER_PARLIB_NEWLIB_DIR)/lib/$(TARGET_ARCH)
 
-USER_APPS_PARLIB_LDLIBS    := --start-group -lc -lm -lg -lparlib -livyparlib --end-group
+USER_APPS_PARLIB_LDLIBS    := --start-group -lc -lm -lg -lparlib -lpthread \
+                              -livyparlib --end-group
 
-USER_APPS_PARLIB_LDOBJS    := $(OBJDIR)/$(USER_PARLIB_ARCH_SRC_DIR)/entry.o \
+USER_APPS_PARLIB_LDOBJS    := \
+                              $(OBJDIR)/$(USER_PARLIB_ARCH_SRC_DIR)/entry.o \
+                              $(OBJDIR)/$(USER_PARLIB_ARCH_SRC_DIR)/crtbegin.o \
+                              $(OBJDIR)/$(USER_PARLIB_ARCH_SRC_DIR)/crtend.o \
                               $(OBJDIR)/$(USER_APPS_PARLIB_DIR)/readline.o \
                               $(OBJDIR)/$(USER_APPS_PARLIB_DIR)/file_io.o \
                               $(OBJDIR)/$(USER_APPS_PARLIB_DIR)/file_error.o \
@@ -30,7 +34,6 @@ USER_APPS_PARLIB_LDOBJS    := $(OBJDIR)/$(USER_PARLIB_ARCH_SRC_DIR)/entry.o \
 
 USER_APPS_PARLIB_LDDEPENDS := $(USER_APPS_PARLIB_LDOBJS) \
                               $(OBJDIR)/$(USER_PARLIB_DIR)/libparlib.a \
-                              $(OBJDIR)/$(USER_PARLIB_DIR)/libparlib-pthread.a \
                               $(OBJDIR)/$(USER_PARLIB_DIR)/libivyparlib.a \
                               $(OBJDIR)/$(USER_APPS_PARLIB_DIR)/%.o
 
index 4a3bf35..52a1304 100644 (file)
@@ -1,6 +1,6 @@
 USER_APPS_PARLIB_PTHREAD_DIR := $(USER_APPS_PARLIB_DIR)/pthread
 
-USER_APPS_PARLIB_PTHREAD_LDLIBS := $(USER_APPS_PARLIB_LDLIBS) -lpthread
+USER_APPS_PARLIB_PTHREAD_LDLIBS := $(USER_APPS_PARLIB_LDLIBS)
 
 USER_APPS_PARLIB_PTHREAD_LDDEPENDS := $(OBJDIR)/$(USER_APPS_PARLIB_PTHREAD_DIR)/%.o \
                                       $(USER_APPS_PARLIB_LDOBJS) \
index 7258923..ffdb744 100644 (file)
@@ -8,4 +8,5 @@ include $(USER_PARLIB_DIR)/src/$(TARGET_ARCH)/Makefrag
 include $(USER_PARLIB_DIR)/src/Makefrag\r
 include $(USER_PARLIB_DIR)/ivy/Makefrag\r
 \r
-.PRECIOUS: $(OBJDIR)/$(USER_PARLIB_DIR)/%.o \r
+.PRECIOUS: $(OBJDIR)/$(USER_PARLIB_DIR)/%.o \\r
+           $(OBJDIR)/$(USER_PARLIB_SRC_DIR)/%.o\r
index 4b9998e..69896f1 100644 (file)
@@ -10,8 +10,5 @@ OBJDIRS += $(USER_PARLIB_ARCH_SRC_DIR)
 # We also snatch the use of a couple handy source files
 # from the lib directory, to avoid gratuitous code duplication.
 USER_PARLIB_ARCH_SRCFILES := $(USER_PARLIB_ARCH_SRC_DIR)/syscall.c \
-                             $(USER_PARLIB_ARCH_SRC_DIR)/entry.S \
-                             $(USER_PARLIB_ARCH_SRC_DIR)/crtbegin.S \
-                             $(USER_PARLIB_ARCH_SRC_DIR)/crtend.S \
                              $(USER_PARLIB_ARCH_SRC_DIR)/newlib_backend.c
 
index 05a8fa3..3b30cae 100644 (file)
@@ -10,8 +10,5 @@ OBJDIRS += $(USER_PARLIB_ARCH_SRC_DIR)
 # We also snatch the use of a couple handy source files
 # from the lib directory, to avoid gratuitous code duplication.
 USER_PARLIB_ARCH_SRCFILES := $(USER_PARLIB_ARCH_SRC_DIR)/syscall.c \
-                             $(USER_PARLIB_ARCH_SRC_DIR)/entry.S \
-                             $(USER_PARLIB_ARCH_SRC_DIR)/crtbegin.S \
-                             $(USER_PARLIB_ARCH_SRC_DIR)/crtend.S \
                              $(USER_PARLIB_ARCH_SRC_DIR)/divsqrt.c \
                              $(USER_PARLIB_ARCH_SRC_DIR)/newlib_backend.c