From 955a9ba74c6f0e5ad3787d149c56bc90c22ee045 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Wed, 1 Dec 1999 15:05:26 +0000 Subject: Patch rtems-rc-19991123-rc-2.diff from Ralf Corsepius which implements automake support for some score/cpu/ subdirectories and fixes a few minor configuration bugs. To apply: rm -rf c/src/exec/score/cpu/a29k/wrap rm -rf c/src/exec/score/cpu/hppa1.1/wrap rm -rf c/src/exec/score/cpu/i386/wrap rm -rf c/src/exec/score/cpu/mips64orion/wrap rm -rf c/src/exec/score/cpu/no_cpu/wrap patch -p1 < rtems-rc-19991123-rc-2.diff.gz Notes: * I don't see a possiblity to convert the powerpc subdirectory in its current layout to automake the time being. * Besides the fact that this subdirectory is not in single-tree building layout, the actual showstopper is the ifeq $(RTEMS_CPU_MODEL),mpc750) gmake-conditional in powerpc/Makefile.in, which automake (correctly) refuses to handle. * The problem is *not* specific to the powerpc. Other CPUs basically have similar problems (SH:sh7032 vs sh7045, SPARC: erc32.h in score/cpu/sparc), but have been lucky to get around real issues (cf. configuration files below score/cpu/sh/). * From a configuration focused POV this problem boils down to a file/subdirectory selection problem: ppc: 1 or others sh: 1 out of 2 sparc: 1 out of 1 Automake's means to implement such behavior is using conditionals to be evaluated at configuration-time. The old configuration scheme however used make-time conditionals. The SH port was lucky to get around this issue because it applies a selection from a limited set of possible selections, the powerpc however applies a selection from an unlimited set, based on data not being available at configuration time. * Currently I only see two general solutions: 1) make RTEMS_CPU_MODEL available at configuration time, ie. replace make-time configuration by configuration-time configuration 2) Perform the selection at build-time, i.e. always install all files, but use #ifdef #else #endif in source files. This is what the m68k has exploited at other locations inside of the source-tree. => This directory is the last one remaining not using automake below the whole exec/ hierarchy. --- c/src/exec/score/cpu/i386/rtems/Makefile.am | 10 +++ c/src/exec/score/cpu/i386/rtems/Makefile.in | 25 -------- c/src/exec/score/cpu/i386/rtems/score/Makefile.am | 26 ++++++++ c/src/exec/score/cpu/i386/rtems/score/Makefile.in | 74 ----------------------- 4 files changed, 36 insertions(+), 99 deletions(-) create mode 100644 c/src/exec/score/cpu/i386/rtems/Makefile.am delete mode 100644 c/src/exec/score/cpu/i386/rtems/Makefile.in create mode 100644 c/src/exec/score/cpu/i386/rtems/score/Makefile.am delete mode 100644 c/src/exec/score/cpu/i386/rtems/score/Makefile.in (limited to 'c/src/exec/score/cpu/i386/rtems') diff --git a/c/src/exec/score/cpu/i386/rtems/Makefile.am b/c/src/exec/score/cpu/i386/rtems/Makefile.am new file mode 100644 index 0000000000..900930a502 --- /dev/null +++ b/c/src/exec/score/cpu/i386/rtems/Makefile.am @@ -0,0 +1,10 @@ +## +## $Id$ +## + +AUTOMAKE_OPTIONS = foreign 1.4 + +SUBDIRS = score + +include $(top_srcdir)/../../../../../../automake/subdirs.am +include $(top_srcdir)/../../../../../../automake/local.am diff --git a/c/src/exec/score/cpu/i386/rtems/Makefile.in b/c/src/exec/score/cpu/i386/rtems/Makefile.in deleted file mode 100644 index 202c740086..0000000000 --- a/c/src/exec/score/cpu/i386/rtems/Makefile.in +++ /dev/null @@ -1,25 +0,0 @@ -# -# $Id$ -# - -@SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -top_builddir = ../.. -subdir = i386/rtems - -RTEMS_ROOT = @RTEMS_ROOT@ -PROJECT_ROOT = @PROJECT_ROOT@ - -VPATH = @srcdir@ - -include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg -include $(RTEMS_ROOT)/make/directory.cfg - -INSTALL_CHANGE = @INSTALL_CHANGE@ - -SUBDIRS = score - -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status diff --git a/c/src/exec/score/cpu/i386/rtems/score/Makefile.am b/c/src/exec/score/cpu/i386/rtems/score/Makefile.am new file mode 100644 index 0000000000..a3bdd523b1 --- /dev/null +++ b/c/src/exec/score/cpu/i386/rtems/score/Makefile.am @@ -0,0 +1,26 @@ +## +## $Id$ +## + +AUTOMAKE_OPTIONS = foreign 1.4 + +H_FILES = cpu.h i386.h i386types.h +noinst_HEADERS = $(H_FILES) + +# +# (OPTIONAL) Add local stuff here using += +# + +PREINSTALL_FILES = \ +$(PROJECT_INCLUDE)/rtems/score \ +$(H_FILES:%.h=$(PROJECT_INCLUDE)/rtems/score/%.h) + +$(PROJECT_INCLUDE)/rtems/score: + $(mkinstalldirs) $@ + +$(PROJECT_INCLUDE)/rtems/score/%.h: %.h + $(INSTALL_DATA) $< $@ + +all-local: $(PREINSTALL_FILES) + +include $(top_srcdir)/../../../../../../automake/local.am diff --git a/c/src/exec/score/cpu/i386/rtems/score/Makefile.in b/c/src/exec/score/cpu/i386/rtems/score/Makefile.in deleted file mode 100644 index 1547a8544d..0000000000 --- a/c/src/exec/score/cpu/i386/rtems/score/Makefile.in +++ /dev/null @@ -1,74 +0,0 @@ -# -# $Id$ -# - -@SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -top_builddir = ../../.. -subdir = i386/rtems/score - -RTEMS_ROOT = @RTEMS_ROOT@ -PROJECT_ROOT = @PROJECT_ROOT@ - -VPATH = @srcdir@ - -# C source names, if any, go here -- minus the .c -C_PIECES = -C_FILES = $(C_PIECES:%=%.c) -C_O_FILES = $(C_PIECES:%=${ARCH}/%.o) - -H_PIECES = cpu.h i386.h i386types.h -H_FILES = $(H_PIECES:%=$(srcdir)/%) - -# Assembly source names, if any, go here -- minus the .S -S_PIECES = -S_FILES = $(S_PIECES:%=%.S) -S_O_FILES = $(S_FILES:%.S=${ARCH}/%.o) - -SRCS = $(C_FILES) $(CC_FILES) $(H_FILES) $(S_FILES) -OBJS = $(C_O_FILES) $(CC_O_FILES) $(S_O_FILES) - -include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg -include $(RTEMS_ROOT)/make/leaf.cfg - -INSTALL_CHANGE = @INSTALL_CHANGE@ -mkinstalldirs = $(SHELL) $(top_srcdir)/@RTEMS_TOPdir@/mkinstalldirs - -INSTALLDIRS = $(PROJECT_INCLUDE)/rtems/score - -$(INSTALLDIRS): - @$(mkinstalldirs) $(INSTALLDIRS) - -# -# (OPTIONAL) Add local stuff here using += -# - -DEFINES += -CPPFLAGS += -CFLAGS += - -LD_PATHS += -LD_LIBS += -LDFLAGS += - -# -# Add your list of files to delete here. The config files -# already know how to delete some stuff, so you may want -# to just run 'make clean' first to see what gets missed. -# 'make clobber' already includes 'make clean' -# - -CLEAN_ADDITIONS += -CLOBBER_ADDITIONS += $(BUILT_SOURCES) - -# Install the program(s), appending _g or _p as appropriate. -# for include files, just use $(INSTALL_CHANGE) -all: preinstall - -preinstall: $(INSTALLDIRS) $(H_FILES) - @$(INSTALL_CHANGE) -m 644 $(H_FILES) $(PROJECT_INCLUDE)/rtems/score - -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status -- cgit v1.2.3