mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-01-19 12:59:21 +08:00
754f8def0d
For about half the ports, we don't need a subdir configure script. They're using the config/default.m[ht] rules, and they aren't doing any unique configure tests, so they exist just to pass top-level settings down to create the arch Makefile. We can just as easily do that from the top-level Mkaefile directly and skip configure. Most of the remaining configure scripts could be migrated up to the top-level too, but that would require care in each subdir. So let's be lazy and put that off to another day.
331 lines
8.2 KiB
Makefile
331 lines
8.2 KiB
Makefile
#-------------------------------------------------------------------------
|
|
# Source files
|
|
#-------------------------------------------------------------------------
|
|
|
|
gloss_hdrs = \
|
|
machine/syscall.h \
|
|
|
|
gloss_srcs = \
|
|
nanosleep.c \
|
|
sys_access.c \
|
|
sys_chdir.c \
|
|
sys_chmod.c \
|
|
sys_chown.c \
|
|
sys_close.c \
|
|
sys_conv_stat.c \
|
|
sys_execve.c \
|
|
sys_exit.c \
|
|
sys_faccessat.c \
|
|
sys_fork.c \
|
|
sys_fstatat.c \
|
|
sys_fstat.c \
|
|
sys_ftime.c \
|
|
sys_getcwd.c \
|
|
sys_getpid.c \
|
|
sys_gettimeofday.c \
|
|
sys_isatty.c \
|
|
sys_kill.c \
|
|
sys_link.c \
|
|
sys_lseek.c \
|
|
sys_lstat.c \
|
|
sys_openat.c \
|
|
sys_open.c \
|
|
sys_read.c \
|
|
sys_sbrk.c \
|
|
sys_stat.c \
|
|
sys_sysconf.c \
|
|
sys_times.c \
|
|
sys_unlink.c \
|
|
sys_utime.c \
|
|
sys_wait.c \
|
|
sys_write.c
|
|
|
|
# libsemihost reuses some of the libgloss minimal implementations
|
|
|
|
semihost_srcs = \
|
|
nanosleep.c \
|
|
sys_chdir.c \
|
|
sys_chmod.c \
|
|
sys_chown.c \
|
|
sys_execve.c \
|
|
sys_fork.c \
|
|
sys_getcwd.c \
|
|
sys_getpid.c \
|
|
sys_kill.c \
|
|
sys_utime.c \
|
|
sys_wait.c \
|
|
semihost-sys_close.c \
|
|
semihost-sys_exit.c \
|
|
semihost-sys_fdtable.c \
|
|
semihost-sys_fstat.c \
|
|
semihost-sys_ftime.c \
|
|
semihost-sys_isatty.c \
|
|
semihost-sys_link.c \
|
|
semihost-sys_lseek.c \
|
|
semihost-sys_open.c \
|
|
semihost-sys_read.c \
|
|
semihost-sys_sbrk.c \
|
|
semihost-sys_stat.c \
|
|
semihost-sys_stat_common.c \
|
|
semihost-sys_unlink.c \
|
|
semihost-sys_write.c
|
|
|
|
gloss_specs = \
|
|
nano.specs sim.specs semihost.specs
|
|
|
|
# Extra files
|
|
|
|
crt0_asm = crt0.S
|
|
|
|
# Multilib support variables.
|
|
# TOP is used instead of MULTI{BUILD,SRC}TOP.
|
|
|
|
MULTIDIRS =
|
|
MULTISUBDIR =
|
|
MULTIDO = true
|
|
MULTICLEAN = true
|
|
|
|
#-------------------------------------------------------------------------
|
|
# Basic setup
|
|
#-------------------------------------------------------------------------
|
|
|
|
# Remove all default implicit rules since they can cause subtle bugs
|
|
# and they just make things run slower
|
|
|
|
.SUFFIXES:
|
|
% : %,v
|
|
% : RCS/%,v
|
|
% : RCS/%
|
|
% : s.%
|
|
% : SCCS/s.%
|
|
|
|
# Default is to build the prereqs of the all target (defined at bottom)
|
|
|
|
default : all
|
|
.PHONY : default
|
|
|
|
# Source directory
|
|
|
|
obj_dir := .
|
|
src_dir := @srcdir@
|
|
VPATH := $(src_dir) $(src_dir)/machine
|
|
|
|
# Installation directories
|
|
|
|
prefix := @prefix@
|
|
DESTDIR ?= $(prefix)
|
|
|
|
install_hdrs_dir := $(DESTDIR)$(prefix)/$(target_alias)/include/machine
|
|
install_libs_dir = $(DESTDIR)$(prefix)/$(target_alias)/lib${MULTISUBDIR}
|
|
|
|
#-------------------------------------------------------------------------
|
|
# Programs and flags
|
|
#-------------------------------------------------------------------------
|
|
|
|
# C compiler
|
|
|
|
CC := @CC@
|
|
CFLAGS := @CFLAGS@
|
|
CPPFLAGS := -I$(obj_dir) -I$(src_dir)
|
|
COMPILE := $(CC) -MMD -MP $(CPPFLAGS) $(CFLAGS)
|
|
|
|
# Library creation
|
|
|
|
AR := @AR@
|
|
RANLIB := @RANLIB@
|
|
|
|
# Installation
|
|
|
|
INSTALL := @INSTALL@
|
|
INSTALL_DATA := @INSTALL_DATA@
|
|
|
|
#-------------------------------------------------------------------------
|
|
# Build Object Files from C Source
|
|
#-------------------------------------------------------------------------
|
|
|
|
gloss_c_srcs = $(filter %.c, $(gloss_srcs))
|
|
gloss_c_objs = $(patsubst %.c, %.o, $(notdir $(gloss_c_srcs)))
|
|
gloss_c_deps = $(patsubst %.c, %.d, $(notdir $(gloss_c_srcs)))
|
|
|
|
$(gloss_c_objs) : %.o : %.c
|
|
$(COMPILE) -c $<
|
|
|
|
gloss_objs += $(gloss_c_objs)
|
|
deps += $(gloss_c_deps)
|
|
junk += $(gloss_c_deps) $(gloss_c_objs)
|
|
|
|
sim_c_objs = $(patsubst %.c, sim-%.o, $(notdir $(gloss_c_srcs)))
|
|
sim_c_deps = $(patsubst %.c, sim-%.d, $(notdir $(gloss_c_srcs)))
|
|
|
|
$(sim_c_objs): sim-%.o : %.c
|
|
$(COMPILE) -c -DUSING_SIM_SPECS -o $@ $<
|
|
|
|
sim_objs += $(sim_c_objs)
|
|
deps += $(sim_c_deps)
|
|
junk += $(sim_c_deps) $(sim_c_objs)
|
|
|
|
semihost_c_srcs = $(filter %.c, $(semihost_srcs))
|
|
semihost_c_objs = $(patsubst %.c, semihost-%.o, $(notdir $(semihost_c_srcs)))
|
|
semihost_c_deps = $(patsubst %.c, semihost-%.d, $(notdir $(semihost_c_srcs)))
|
|
|
|
$(semihost_c_objs): semihost-%.o : %.c
|
|
$(COMPILE) -c -o $@ $<
|
|
|
|
semihost_objs += $(semihost_c_objs)
|
|
deps += $(semihost_c_deps)
|
|
junk += $(semihost_c_deps) $(semihost_c_objs)
|
|
|
|
#-------------------------------------------------------------------------
|
|
# Build Object Files from Assembly Source
|
|
#-------------------------------------------------------------------------
|
|
|
|
gloss_asm_srcs = $(filter %.S, $(gloss_srcs))
|
|
gloss_asm_objs = $(patsubst %.S, %.o, $(notdir $(gloss_asm_srcs)))
|
|
gloss_asm_deps = $(patsubst %.S, %.d, $(notdir $(gloss_asm_srcs)))
|
|
|
|
$(gloss_asm_objs) : %.o : %.S
|
|
$(COMPILE) -c -o $@ $<
|
|
|
|
gloss_objs += $(gloss_asm_objs)
|
|
deps += $(gloss_asm_deps)
|
|
junk += $(gloss_asm_deps) $(gloss_asm_objs)
|
|
|
|
sim_asm_objs = $(patsubst %.S, sim-%.o, $(notdir $(gloss_asm_srcs)))
|
|
sim_asm_deps = $(patsubst %.S, sim-%.d, $(notdir $(gloss_asm_srcs)))
|
|
|
|
$(sim_asm_objs) : sim-%.o : %.S
|
|
$(COMPILE) -c -DUSING_SIM_SPECS -o $@ $<
|
|
|
|
sim_objs += $(sim_asm_objs)
|
|
deps += $(sim_asm_deps)
|
|
junk += $(sim_asm_deps) $(sim_asm_objs)
|
|
|
|
semihost_asm_objs = $(patsubst %.S, semihost-%.o, $(notdir $(gloss_asm_srcs)))
|
|
semihost_asm_deps = $(patsubst %.S, semihost-%.d, $(notdir $(gloss_asm_srcs)))
|
|
|
|
$(semihost_asm_objs) : semihost-%.o : %.S
|
|
$(COMPILE) -c -DUSING_SEMIHOST_SPECS -o $@ $<
|
|
|
|
semihost_objs += $(semihost_asm_objs)
|
|
deps += $(semihost_asm_deps)
|
|
junk += $(semihost_asm_deps) $(semihost_asm_objs)
|
|
|
|
#-------------------------------------------------------------------------
|
|
# Build libgloss.a
|
|
#-------------------------------------------------------------------------
|
|
|
|
gloss_lib = libgloss.a
|
|
$(gloss_lib) : $(gloss_objs)
|
|
$(AR) rcv $@ $^
|
|
$(RANLIB) $@
|
|
|
|
junk += $(gloss_lib)
|
|
|
|
install_hdrs += $(gloss_hdrs)
|
|
install_libs += $(gloss_lib)
|
|
install_specs += $(gloss_specs)
|
|
|
|
#-------------------------------------------------------------------------
|
|
# Build libsim.a
|
|
#-------------------------------------------------------------------------
|
|
|
|
sim_lib = libsim.a
|
|
$(sim_lib) : $(sim_objs)
|
|
$(AR) rcv $@ $^
|
|
$(RANLIB) $@
|
|
|
|
junk += $(sim_lib)
|
|
|
|
install_libs += $(sim_lib)
|
|
|
|
#-------------------------------------------------------------------------
|
|
# Build libsemihost.a
|
|
#-------------------------------------------------------------------------
|
|
|
|
semihost_lib = libsemihost.a
|
|
$(semihost_lib) : $(semihost_objs)
|
|
$(AR) rcv $@ $^
|
|
$(RANLIB) $@
|
|
|
|
junk += $(semihost_lib)
|
|
|
|
install_libs += $(semihost_lib)
|
|
|
|
#-------------------------------------------------------------------------
|
|
# Build crt0.o
|
|
#-------------------------------------------------------------------------
|
|
|
|
crt0_obj = $(patsubst %.S, %.o, $(crt0_asm))
|
|
crt0_deps = $(patsubst %.S, %.d, $(crt0_asm))
|
|
|
|
$(crt0_obj) : %.o : %.S
|
|
$(COMPILE) -c $<
|
|
|
|
deps += $(crt0_deps)
|
|
junk += $(crt0_deps) $(crt0_obj)
|
|
|
|
install_libs += $(crt0_obj)
|
|
|
|
#-------------------------------------------------------------------------
|
|
# Autodependency files
|
|
#-------------------------------------------------------------------------
|
|
|
|
-include $(deps)
|
|
|
|
deps : $(deps)
|
|
.PHONY : deps
|
|
|
|
#-------------------------------------------------------------------------
|
|
# Installation
|
|
#-------------------------------------------------------------------------
|
|
|
|
install_hdrs_wdir += $(addprefix $(src_dir)/, $(install_hdrs))
|
|
install-hdrs : $(install_hdrs_wdir)
|
|
test -d $(install_hdrs_dir) || mkdir -p $(install_hdrs_dir)
|
|
for file in $^; do \
|
|
$(INSTALL_DATA) $$file $(install_hdrs_dir)/; \
|
|
done
|
|
|
|
install-libs : $(install_libs)
|
|
test -d $(install_libs_dir) || mkdir -p $(install_libs_dir)
|
|
for file in $^; do \
|
|
$(INSTALL_DATA) $$file $(install_libs_dir)/$$file; \
|
|
done
|
|
|
|
install-specs : $(install_specs)
|
|
test -d $(install_libs_dir) || mkdir -p $(install_libs_dir)
|
|
for file in $^; do \
|
|
$(INSTALL_DATA) $$file $(install_libs_dir)/; \
|
|
done
|
|
|
|
install : install-hdrs install-libs install-specs
|
|
.PHONY : install install-hdrs install-libs
|
|
|
|
#-------------------------------------------------------------------------
|
|
# Regenerate configure information
|
|
#-------------------------------------------------------------------------
|
|
|
|
Makefile : $(src_dir)/Makefile.in ../config.status
|
|
cd .. && $(SHELL) config.status
|
|
|
|
dist_junk += Makefile
|
|
|
|
#-------------------------------------------------------------------------
|
|
# Default
|
|
#-------------------------------------------------------------------------
|
|
|
|
all : $(install_libs)
|
|
.PHONY : all
|
|
|
|
#-------------------------------------------------------------------------
|
|
# Clean up junk
|
|
#-------------------------------------------------------------------------
|
|
|
|
clean :
|
|
rm -rf *~ \#* $(junk)
|
|
|
|
distclean :
|
|
rm -rf *~ \#* $(junk) $(dist_junk)
|
|
|
|
.PHONY : clean distclean
|