198 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Makefile
		
	
	
	
			
		
		
	
	
			198 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Makefile
		
	
	
	
# Makefile for libgloss/epiphany
 | 
						|
 | 
						|
# Copyright (c) 2011, 2012 Adapteva, Inc.
 | 
						|
# All rights reserved.
 | 
						|
 | 
						|
# Contributor Jeremy Bennett <jeremy.bennett@embecosm.com> for Adapteva Inc
 | 
						|
 | 
						|
# Redistribution and use in source and binary forms, with or without
 | 
						|
# modification, are permitted provided that the following conditions are met:
 | 
						|
#  * Redistributions of source code must retain the above copyright notice,
 | 
						|
#    this list of conditions and the following disclaimer.
 | 
						|
#  * Redistributions in binary form must reproduce the above copyright
 | 
						|
#    notice, this list of conditions and the following disclaimer in the
 | 
						|
#    documentation and/or other materials provided with the distribution.
 | 
						|
#  * Neither the name of Adapteva nor the names of its contributors may be
 | 
						|
#    used to endorse or promote products derived from this software without
 | 
						|
#    specific prior written permission.
 | 
						|
 | 
						|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | 
						|
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
						|
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
						|
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 | 
						|
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 | 
						|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 | 
						|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 | 
						|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 | 
						|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 | 
						|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 | 
						|
# POSSIBILITY OF SUCH DAMAGE.
 | 
						|
 | 
						|
# Standard proforma copied from libnosys
 | 
						|
DESTDIR =
 | 
						|
VPATH = @srcdir@
 | 
						|
srcdir = @srcdir@
 | 
						|
objdir = .
 | 
						|
srcroot = $(srcdir)/../..
 | 
						|
objroot = $(objdir)/../..
 | 
						|
 | 
						|
prefix = @prefix@
 | 
						|
exec_prefix = @exec_prefix@
 | 
						|
 | 
						|
host_alias = @host_alias@
 | 
						|
target_alias = @target_alias@
 | 
						|
program_transform_name = @program_transform_name@
 | 
						|
 | 
						|
bindir = @bindir@
 | 
						|
libdir = @libdir@
 | 
						|
tooldir = $(exec_prefix)/$(target_alias)
 | 
						|
 | 
						|
# Multilib support variables.
 | 
						|
# TOP is used instead of MULTI{BUILD,SRC}TOP.
 | 
						|
MULTIDIRS =
 | 
						|
MULTISUBDIR =
 | 
						|
MULTIDO = true
 | 
						|
MULTICLEAN = true
 | 
						|
 | 
						|
INSTALL = @INSTALL@
 | 
						|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
 | 
						|
INSTALL_DATA = @INSTALL_DATA@
 | 
						|
 | 
						|
SHELL =	/bin/sh
 | 
						|
 | 
						|
CC = @CC@
 | 
						|
 | 
						|
#AS = @AS@
 | 
						|
AS = `if [ -f ${objroot}/../gas/as-new ] ; \
 | 
						|
	then echo ${objroot}/../gas/as-new ; \
 | 
						|
	else echo as ; fi`
 | 
						|
 | 
						|
AR = @AR@
 | 
						|
 | 
						|
#LD = @LD@
 | 
						|
LD = `if [ -f ${objroot}/../ld/ld-new ] ; \
 | 
						|
	then echo ${objroot}/../ld/ld-new ; \
 | 
						|
	else echo ld ; fi`
 | 
						|
 | 
						|
RANLIB = @RANLIB@
 | 
						|
 | 
						|
OBJDUMP = `if [ -f ${objroot}/../binutils/objdump ] ; \
 | 
						|
	then echo ${objroot}/../binutils/objdump ; \
 | 
						|
	else t='$(program_transform_name)'; echo objdump | sed -e $$t ; fi`
 | 
						|
OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \
 | 
						|
	then echo ${objroot}/../binutils/objcopy ; \
 | 
						|
	else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi`
 | 
						|
 | 
						|
GCC_LDFLAGS = `if [ -d ${objroot}/../gcc ] ; \
 | 
						|
	then echo -L${objroot}/../gcc ; fi`
 | 
						|
 | 
						|
NEWLIB_CFLAGS = `if [ -d ${objroot}/newlib ]; then echo -I${objroot}/newlib/targ-include -I${srcroot}/newlib/libc/include; fi`
 | 
						|
NEWLIB_LDFLAGS = `if [ -d ${objroot}/newlib ]; then echo -B${objroot}/newlib/ -L${objroot}/newlib/; fi`
 | 
						|
 | 
						|
INCLUDES = -I. -I$(srcdir)/.. -I$(srcdir)/../../newlib/libc/machine/epiphany
 | 
						|
 | 
						|
# Note that when building the library, ${MULTILIB} is not the way multilib
 | 
						|
# options are passed; they're passed in $(CFLAGS).
 | 
						|
CFLAGS_FOR_TARGET = ${MULTILIB} ${INCLUDES} ${NEWLIB_CFLAGS}
 | 
						|
LDFLAGS_FOR_TARGET = ${MULTILIB} ${NEWLIB_LDFLAGS}
 | 
						|
AR_FLAGS = qc
 | 
						|
 | 
						|
.c.o:
 | 
						|
	$(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $<
 | 
						|
 | 
						|
.C.o:
 | 
						|
	$(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $<
 | 
						|
.S.o:
 | 
						|
	$(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) -c $(CFLAGS) $<
 | 
						|
.s.o:
 | 
						|
	$(AS) $(ASFLAGS_FOR_TARGET) $(INCLUDES) $(ASFLAGS) -o $*.o $<
 | 
						|
 | 
						|
#
 | 
						|
# GCC knows to run the preprocessor on .S files before it assembles them.
 | 
						|
#
 | 
						|
.S.o:
 | 
						|
	$(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) $(CFLAGS) -c $<
 | 
						|
 | 
						|
#
 | 
						|
# this is a bogus target that'll produce an assembler from the
 | 
						|
# C source with the right compiler options. this is so we can
 | 
						|
# track down code generation or debug symbol bugs.
 | 
						|
#
 | 
						|
.c.s:
 | 
						|
	$(CC) $(CFLAGS_FOR_TARGET) -S $(INCLUDES) $(CFLAGS) $<
 | 
						|
 | 
						|
# EPIPHANY specific stuff
 | 
						|
 | 
						|
# Object files needed for all libraries
 | 
						|
COMMON_OBJS = access.o  \
 | 
						|
              close.o    \
 | 
						|
              environ.o  \
 | 
						|
              execve.o   \
 | 
						|
              fork.o     \
 | 
						|
              fstat.o    \
 | 
						|
              getpid.o   \
 | 
						|
              gettimeofday.o \
 | 
						|
              _isatty.o  \
 | 
						|
              kill.o     \
 | 
						|
              link.o     \
 | 
						|
              lseek.o    \
 | 
						|
              open.o     \
 | 
						|
              read.o     \
 | 
						|
              sbrk.o     \
 | 
						|
              stat.o     \
 | 
						|
              times.o    \
 | 
						|
              unlink.o   \
 | 
						|
              wait.o     \
 | 
						|
              write.o    \
 | 
						|
              _exit.o    \
 | 
						|
              epiphany-syscalls.o \
 | 
						|
              epiphany-ivthandlers.o
 | 
						|
 | 
						|
UNUSED_OBJS = chown.o    \
 | 
						|
              errno.o    \
 | 
						|
              gettod.o   \
 | 
						|
              readlink.o \
 | 
						|
              symlink.o
 | 
						|
 | 
						|
# Object files specific to particular targets.
 | 
						|
SIMOBJS = $(COMMON_OBJS)
 | 
						|
 | 
						|
OUTPUTS = libepiphany.a crt0.o
 | 
						|
 | 
						|
all: $(OUTPUTS)
 | 
						|
 | 
						|
#
 | 
						|
# here's where we build the library for each target
 | 
						|
#
 | 
						|
 | 
						|
libepiphany.a: $(SIMOBJS)
 | 
						|
	${AR} ${ARFLAGS} $@ $(SIMOBJS)
 | 
						|
	${RANLIB} $@
 | 
						|
 | 
						|
_exit.o: _exit.S
 | 
						|
	$(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) $(CFLAGS) -c $<
 | 
						|
 | 
						|
doc:
 | 
						|
 | 
						|
clean mostlyclean:
 | 
						|
	rm -f $(OUTPUTS) *.i *~ *.o *-test *.srec *.dis *.map *.x
 | 
						|
 | 
						|
distclean maintainer-clean realclean: clean
 | 
						|
	rm -f Makefile config.status $(OUTPUTS)
 | 
						|
 | 
						|
.PHONY: install info install-info clean-info
 | 
						|
install:
 | 
						|
	@for outputs in ${OUTPUTS}; do\
 | 
						|
	 mkdir -p $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}; \
 | 
						|
	 $(INSTALL_PROGRAM) $${outputs} $(DESTDIR)$(tooldir)/lib${MULTISUBDIR}; \
 | 
						|
	done
 | 
						|
info:
 | 
						|
install-info:
 | 
						|
clean-info:
 | 
						|
 | 
						|
Makefile: Makefile.in config.status @host_makefile_frag_path@
 | 
						|
	$(SHELL) config.status
 | 
						|
 | 
						|
config.status: configure
 | 
						|
	$(SHELL) config.status --recheck
 |