diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 1999-03-19 22:27:02 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 1999-03-19 22:27:02 +0000 |
commit | d8ff79366bb0f4646436e4c298e4f5505a51c007 (patch) | |
tree | 7b69d0627eca83ab40473a31ad3568ea0bbfb996 /tools | |
parent | Towards automake X patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>: (diff) | |
download | rtems-d8ff79366bb0f4646436e4c298e4f5505a51c007.tar.bz2 |
Towards automake XI patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>:
This patch is the most scary of all proposals I've been mailing to you
this week until now.
It consists of 3 parts:
1. a patch
2. a perl script (acpolish)
3. a shell script wrapper to invoke the perl-script.
The perl-script reads in each Makefile.in and modifies them
("polishes/beautifies" them :-).
These modifications are not easy to describe:
Basically, it hard-codes some automake Makefile-variables and rules into
RTEMS autoconf-Makefile.ins (Note: autoconf vs. automake!!) and converts
some settings/variables to configure scripts' requirements (Yes,
plural).
E.g. it adds the automake standard variables $top_builddir and $subdir,
adds dependency rules for automatic re-generation of Makefiles from
Makefile.in, adds support variables for relative paths to multiple
configure scripts etc.
The patch is a one-line patch to enable the support of the new features
added by acpolish.
The shell script is a wrapper which pokes around inside of the source
tree for Makefile.ins and invokes acpolish on all autoconf-Makefile.ins.
acpolish is designed to be able to run several times on the same
Makefile.in and may once become a more general tool to convert RTEMS
Makefile.in to automake. Therefore, I'd like to keep it inside of source
tree. (e.g. as contrib/acpolish or c/update-tools/acpolish). However, it
doesn't make sense to export it outside of RTEMS.
To apply this:
cd <source-tree>
patch -p1 -E < <path-to-patch>/rtems-rc-19990318-1.diff
tar xzvf <path-to>/rtems-rc-polish.tar.gz
./rtems-polish.sh
./autogen
Note: The path contrib/acpolish is hard-coded into rtems-polish.sh, if
you decide to put it in an alternative place, please modify
rtems-polish.sh to reflect this change.
Later:
cvs rm make/rtems.cfg (It isn't used anymore)
cvs add contrib
cvs add contrib/acpolish
cvs commit
I've tested this intensively, but naturally I can't exclude bugs.
Ralf.
PS.: Most probably, this is the last "Towards automake" patch. The next
one probably will be a real automake patch.
Diffstat (limited to 'tools')
-rw-r--r-- | tools/build/Makefile.in | 15 | ||||
-rw-r--r-- | tools/build/os/Makefile.in | 15 | ||||
-rw-r--r-- | tools/build/os/msdos/Makefile.in | 14 | ||||
-rw-r--r-- | tools/build/scripts/Makefile.in | 16 | ||||
-rw-r--r-- | tools/build/src/Makefile.in | 17 | ||||
-rw-r--r-- | tools/cpu/Makefile.in | 15 | ||||
-rw-r--r-- | tools/cpu/generic/Makefile.in | 16 | ||||
-rw-r--r-- | tools/cpu/sh/Makefile.in | 15 | ||||
-rw-r--r-- | tools/cpu/unix/Makefile.in | 15 | ||||
-rw-r--r-- | tools/update/Makefile.in | 15 | ||||
-rwxr-xr-x | tools/update/acpolish | 159 |
11 files changed, 278 insertions, 34 deletions
diff --git a/tools/build/Makefile.in b/tools/build/Makefile.in index e58758025b..e72c35c79e 100644 --- a/tools/build/Makefile.in +++ b/tools/build/Makefile.in @@ -4,13 +4,22 @@ @SET_MAKE@ srcdir = @srcdir@ -VPATH = @srcdir@ -RTEMS_ROOT = @top_srcdir@ -PROJECT_ROOT = @PROJECT_ROOT@ +top_srcdir = @top_srcdir@ +top_builddir = ../.. +subdir = c/build-tools INSTALL = @INSTALL@ +RTEMS_ROOT = $(top_srcdir)/@RTEMS_TOPdir@ +PROJECT_ROOT = @PROJECT_ROOT@ + +VPATH = @srcdir@ + include $(RTEMS_ROOT)/make/custom/$(RTEMS_BSP).cfg include $(RTEMS_ROOT)/make/directory.cfg SUB_DIRS=os scripts src + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status diff --git a/tools/build/os/Makefile.in b/tools/build/os/Makefile.in index 884a8c9b9e..86e2497722 100644 --- a/tools/build/os/Makefile.in +++ b/tools/build/os/Makefile.in @@ -4,13 +4,22 @@ @SET_MAKE@ srcdir = @srcdir@ -VPATH = @srcdir@ -RTEMS_ROOT = @top_srcdir@ -PROJECT_ROOT = @PROJECT_ROOT@ +top_srcdir = @top_srcdir@ +top_builddir = ../../.. +subdir = c/build-tools/os INSTALL = @INSTALL@ +RTEMS_ROOT = $(top_srcdir)/@RTEMS_TOPdir@ +PROJECT_ROOT = @PROJECT_ROOT@ + +VPATH = @srcdir@ + include $(RTEMS_ROOT)/make/custom/$(RTEMS_BSP).cfg include $(RTEMS_ROOT)/make/directory.cfg SUB_DIRS=$(wildcard $(RTEMS_HOST)) + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status diff --git a/tools/build/os/msdos/Makefile.in b/tools/build/os/msdos/Makefile.in index bcd523fb64..022d2e5df2 100644 --- a/tools/build/os/msdos/Makefile.in +++ b/tools/build/os/msdos/Makefile.in @@ -4,12 +4,17 @@ @SET_MAKE@ srcdir = @srcdir@ -VPATH = @srcdir@ -RTEMS_ROOT = @top_srcdir@ -PROJECT_ROOT = @PROJECT_ROOT@ +top_srcdir = @top_srcdir@ +top_builddir = ../../../.. +subdir = c/build-tools/os/msdos INSTALL = @INSTALL@ +RTEMS_ROOT = $(top_srcdir)/@RTEMS_TOPdir@ +PROJECT_ROOT = @PROJECT_ROOT@ + +VPATH = @srcdir@ + include $(RTEMS_ROOT)/make/custom/$(RTEMS_BSP).cfg include $(RTEMS_ROOT)/make/leaf.cfg @@ -39,3 +44,6 @@ $(DESTDIR)/fixtimer.exe: fixtimer.uue uudecode <fixtimer.uue mv fixtimer.exe $(DESTDIR)/fixtimer.exe +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status diff --git a/tools/build/scripts/Makefile.in b/tools/build/scripts/Makefile.in index eaf1dd397f..0cf29845f4 100644 --- a/tools/build/scripts/Makefile.in +++ b/tools/build/scripts/Makefile.in @@ -8,15 +8,19 @@ @SET_MAKE@ srcdir = @srcdir@ -VPATH = @srcdir@ -RTEMS_ROOT = @top_srcdir@ -PROJECT_ROOT = @PROJECT_ROOT@ +top_srcdir = @top_srcdir@ +top_builddir = ../../.. +subdir = c/build-tools/scripts INSTALL = @INSTALL@ +RTEMS_ROOT = $(top_srcdir)/@RTEMS_TOPdir@ +PROJECT_ROOT = @PROJECT_ROOT@ + +VPATH = @srcdir@ + include $(RTEMS_ROOT)/make/custom/$(RTEMS_BSP).cfg include $(RTEMS_ROOT)/make/leaf.cfg -include $(RTEMS_ROOT)/make/rtems.cfg DESTDIR=$(PROJECT_RELEASE)/build-tools @@ -36,3 +40,7 @@ $(INSTALLED_PGMS): $(PGMS) $(INSTALL) $(INSTBINFLAGS) $^ $(DESTDIR) install: $(DESTDIR) $(INSTALLED_PGMS) + +%: $(srcdir)/%.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status diff --git a/tools/build/src/Makefile.in b/tools/build/src/Makefile.in index 415017a9aa..40558baec3 100644 --- a/tools/build/src/Makefile.in +++ b/tools/build/src/Makefile.in @@ -4,6 +4,15 @@ @SET_MAKE@ srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +top_builddir = ../../.. +subdir = c/build-tools/src + +INSTALL = @INSTALL@ + +RTEMS_ROOT = $(top_srcdir)/@RTEMS_TOPdir@ +PROJECT_ROOT = @PROJECT_ROOT@ + exec_prefix = @exec_prefix@ bindir = @bindir@ libdir = @libdir@ @@ -16,10 +25,6 @@ mandir = @mandir@/man$(manext) EXEEXT=@EXEEXT@ VPATH = @srcdir@ -RTEMS_ROOT = @top_srcdir@ -PROJECT_ROOT = @PROJECT_ROOT@ - -INSTALL = @INSTALL@ # we use host compiler in this directory USE_HOST_COMPILER=yes @@ -70,3 +75,7 @@ $(DESTDIR): all: $(ARCH) $(DESTDIR) $(SRCS) $(PGMS) $(INSTALL) $(INSTBINFLAGS) $(PGMS) $(DESTDIR) + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status diff --git a/tools/cpu/Makefile.in b/tools/cpu/Makefile.in index 72d96812df..c8d387af9f 100644 --- a/tools/cpu/Makefile.in +++ b/tools/cpu/Makefile.in @@ -4,13 +4,22 @@ @SET_MAKE@ srcdir = @srcdir@ -VPATH = @srcdir@ -RTEMS_ROOT = @top_srcdir@ -PROJECT_ROOT = @PROJECT_ROOT@ +top_srcdir = @top_srcdir@ +top_builddir = ../../../../.. +subdir = c/src/exec/score/tools INSTALL = @INSTALL@ +RTEMS_ROOT = $(top_srcdir)/@RTEMS_TOPdir@ +PROJECT_ROOT = @PROJECT_ROOT@ + +VPATH = @srcdir@ + include $(RTEMS_ROOT)/make/custom/$(RTEMS_BSP).cfg include $(RTEMS_ROOT)/make/directory.cfg SUB_DIRS=generic $(wildcard $(RTEMS_CPU)) + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status diff --git a/tools/cpu/generic/Makefile.in b/tools/cpu/generic/Makefile.in index d81dfe5ffa..9710c36d06 100644 --- a/tools/cpu/generic/Makefile.in +++ b/tools/cpu/generic/Makefile.in @@ -8,15 +8,19 @@ @SET_MAKE@ srcdir = @srcdir@ -VPATH = @srcdir@ -RTEMS_ROOT = @top_srcdir@ -PROJECT_ROOT = @PROJECT_ROOT@ +top_srcdir = @top_srcdir@ +top_builddir = ../../../../../.. +subdir = c/src/exec/score/tools/generic INSTALL = @INSTALL@ +RTEMS_ROOT = $(top_srcdir)/@RTEMS_TOPdir@ +PROJECT_ROOT = @PROJECT_ROOT@ + +VPATH = @srcdir@ + include $(RTEMS_ROOT)/make/custom/$(RTEMS_BSP).cfg include $(RTEMS_ROOT)/make/leaf.cfg -include $(RTEMS_ROOT)/make/rtems.cfg DESTDIR=$(PROJECT_RELEASE)/bin @@ -36,3 +40,7 @@ $(INSTALLED_PGMS): $(PGMS) $(INSTALL) $(INSTBINFLAGS) $^ $@ install: $(DESTDIR) $(INSTALLED_PGMS) + +%: $(srcdir)/%.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status diff --git a/tools/cpu/sh/Makefile.in b/tools/cpu/sh/Makefile.in index 75537ef4ca..93fe29cfcf 100644 --- a/tools/cpu/sh/Makefile.in +++ b/tools/cpu/sh/Makefile.in @@ -6,12 +6,17 @@ @SET_MAKE@ srcdir = @srcdir@ -VPATH = @srcdir@ -RTEMS_ROOT = @top_srcdir@ -PROJECT_ROOT = @PROJECT_ROOT@ +top_srcdir = @top_srcdir@ +top_builddir = ../../../../../.. +subdir = c/src/exec/score/tools/sh INSTALL = @INSTALL@ +RTEMS_ROOT = $(top_srcdir)/@RTEMS_TOPdir@ +PROJECT_ROOT = @PROJECT_ROOT@ + +VPATH = @srcdir@ + # we use the host compiler here USE_HOST_COMPILER=yes @@ -62,3 +67,7 @@ $(DESTDIR): # Install the program install: $(DESTDIR) $(PGMS) $(INSTALL) $(INSTBINFLAGS) ${PGMS} $(DESTDIR) + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status diff --git a/tools/cpu/unix/Makefile.in b/tools/cpu/unix/Makefile.in index 75320594ea..e1098093b0 100644 --- a/tools/cpu/unix/Makefile.in +++ b/tools/cpu/unix/Makefile.in @@ -4,12 +4,17 @@ @SET_MAKE@ srcdir = @srcdir@ -VPATH = @srcdir@ -RTEMS_ROOT = @top_srcdir@ -PROJECT_ROOT = @PROJECT_ROOT@ +top_srcdir = @top_srcdir@ +top_builddir = ../../../../../.. +subdir = c/src/exec/score/tools/unix INSTALL = @INSTALL@ +RTEMS_ROOT = $(top_srcdir)/@RTEMS_TOPdir@ +PROJECT_ROOT = @PROJECT_ROOT@ + +VPATH = @srcdir@ + # we use host compiler here for gensize. Hopefully it has same alignment!! USE_HOST_COMPILER=yes @@ -58,3 +63,7 @@ preinstall: ${ARCH} $(SRCS) $(PGMS) # Install the program(s), appending _g or _p as appropriate. # for include files, just use $(INSTALL_CHANGE) + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status diff --git a/tools/update/Makefile.in b/tools/update/Makefile.in index 2bd9896aa6..91a9ebcfb6 100644 --- a/tools/update/Makefile.in +++ b/tools/update/Makefile.in @@ -4,15 +4,19 @@ @SET_MAKE@ srcdir = @srcdir@ -VPATH = @srcdir@ -RTEMS_ROOT = @top_srcdir@ -PROJECT_ROOT = @PROJECT_ROOT@ +top_srcdir = @top_srcdir@ +top_builddir = ../.. +subdir = c/update-tools INSTALL = @INSTALL@ +RTEMS_ROOT = $(top_srcdir)/@RTEMS_TOPdir@ +PROJECT_ROOT = @PROJECT_ROOT@ + +VPATH = @srcdir@ + include $(RTEMS_ROOT)/make/custom/$(RTEMS_BSP).cfg include $(RTEMS_ROOT)/make/leaf.cfg -include $(RTEMS_ROOT)/make/rtems.cfg DESTDIR=$(PROJECT_RELEASE)/update-tools @@ -43,3 +47,6 @@ $(INSTALLED_DATA): $(MISC_SUPPORT) install: $(DESTDIR) $(INSTALLED_PGMS) $(INSTALLED_DATA) +%: $(srcdir)/%.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status diff --git a/tools/update/acpolish b/tools/update/acpolish new file mode 100755 index 0000000000..485ba2131c --- /dev/null +++ b/tools/update/acpolish @@ -0,0 +1,159 @@ +#!/usr/bin/perl + +# +# Perl script to beautify and enhance RTEMS autoconf Makefile.ins +# +# Reads from stdin and writes to stdout +# +# usage: +# acpolish <Makefile.in >Makefile.in~ +# mv Makefile.in~ Makefile.in +# +# ATTENTION: This file contains embedded tabs + +if ( -f "Makefile.am" ) +{ + # Refuse to work on autoconfiscated Makefile.ins; + # redirecting STDOUT to Makefile.in will trash the Makefile.in ;- + + die "acpolish must not be run in autoconfiscated directories" ; +} + + +my $build_pgms_seen = "" ; +my $top_builddir = ""; +my $subdir = ""; + +sub find_root +{ + $top_builddir = "." ; + $subdir=""; + my $pwd = `pwd`; chomp $pwd; + $pwd .= "/" ; + my $len ; + + if ( -f "configure.in" ) { return $top_builddir ; } + my $i = rindex($pwd,'/'); + + $len = $i; + $pwd = substr($pwd,0,$len); + $i = rindex($pwd,'/'); + $subdir = substr($pwd,$i+1,$len - 1); + $top_builddir = ".." ; + + while( -d "$top_builddir" ) + { + if ( -f "${top_builddir}/configure.in" ) + { + return $top_builddir ; + } + $len=$i; + $pwd = substr($pwd,0,$len); + $i = rindex($pwd,'/'); + $subdir = substr($pwd,$i+1,$len - 1) . "/$subdir"; + $top_builddir .= "/.." ; + } ; + die "Can't find configure.in\n" ; +} + +find_root(); + +my $nl_seen = 0 ; + +while( <> ) +{ + if ( /^[ ]*$/o ) + { + $nl_seen = $nl_seen+1; + } + + if ( /^[ ]*srcdir[ ]*=.*$/o ) + { + print "\@SET_MAKE\@\n" ; + print "$_" ; + print "top_srcdir = \@top_srcdir\@\n" ; + print "top_builddir = $top_builddir\n" ; + print "subdir = $subdir\n" if "$subdir" ; + print "\nINSTALL = \@INSTALL\@\n\n"; + print "RTEMS_ROOT = \$(top_srcdir)/\@RTEMS_TOPdir\@\n" ; + print "PROJECT_ROOT = \@PROJECT_ROOT\@\n\n" ; + $nl_seen=1; + } + elsif ( /^[ ]*top_srcdir[ ]*=.*$/o ) + { + # remove the line + } + elsif ( /^[ ]*top_builddir[ ]*=.*$/o ) + { + # remove the line + } + elsif ( /^[ ]*Makefile:.*/o ) + { # consume the block + while( <> ) { last if /^[ ]*$/o ; } + } + elsif ( /^[ ]*%:[ ]\$\(srcdir\)\/%\.in.*$/o ) + { # consume the block + while( <> ) { last if /^[ ]*$/o ; } + } + elsif ( /^[ ]*RTEMS_ROOT[ ]*=.*$/o ) + { + # remove the line + } + elsif ( /^[ ]*PROJECT_ROOT[ ]*=.*$/o ) + { + # remove the line + } + elsif ( /^[ ]*INSTALL[ ]*=[ ]*\@INSTALL\@.*$/o ) + { + # remove the line + } + elsif ( /^[ ]*subdir[ ]*=.*$/o ) + { + # remove the line + } + elsif ( /^[ ]*\@SET_MAKE\@.*$/o ) + { + # remove the line + } + elsif ( /^include[ ]*.*rtems\.cfg.*$/o ) + { + # remove the line + } + elsif ( /^[ ]*BUILD_PGMS.*=.*$/o ) + { + $build_pgms_seen = "true" ; + print "$_" ; + $nl_seen=0; + } + elsif ( /^[ ]*$/o ) + { + print "$_" if $nl_seen < 2 ; + } + else + { + print "$_" ; + $nl_seen = 0; + } +} # while + +print "\n" if $nl_seen < 1 ; + +# Add rules for config.status generated files +if ( "$build_pgms_seen" ) +{ +print "%: \$(srcdir)/%.in \$(top_builddir)/config.status\n" ; +print " cd \$(top_builddir) \\\n" ; +print " && CONFIG_FILES=" ; +print "\$(subdir)/" if ( "$subdir" ); +print "\$@ CONFIG_HEADERS= \$(SHELL) ./config.status\n"; +} +else +{ +print "Makefile: \$(srcdir)/Makefile.in \$(top_builddir)/config.status\n" ; +print " cd \$(top_builddir) \\\n" ; +print " && CONFIG_FILES=" ; +print "\$(subdir)/" if ( "$subdir" ); +print "\$@ CONFIG_HEADERS= \$(SHELL) ./config.status\n"; +} + +;1 |