Re: [pcre-dev] Missing files in SVN

トップ ページ
このメッセージを削除
著者: Daniel Richard G
日付:  
To: pcre-dev
題目: Re: [pcre-dev] Missing files in SVN
Hi Philip,

On Tue, 23 Oct 2012, Philip Hazel wrote:

>> This is why I was pushing to move the generation of config.h.generic
>> into the top-level makefile, and out of the PrepareRelease script. See
>> this thread:
>
> The problem I have with this is that there is a circularity.
>
> . You can't run "make anything" until you have run configure.
>
> . You need to run configure with default options before creating
> config.h.generic ... because that's what it is. It is the default
> config.h. It is provided for people who build PCRE "by hand" without
> using configure or CMake.
>
> . Therefore, logically, "make config.h.generic" should first of all run
> "./configure", but of course you can't re-run configure from within a
> makefile created by configure because it re-creates that very
> makefile. (And it would also mess up your existing configuration.)
>
> If "make config.h.generic" just does stuff without running configure,
> the resulting config.h.generic will contain whatever the current
> configuration is, which may not be the default.
>
> Currently config.h.generic is created, essentially by hand, in the
> script PrepareRelease. A basic configure is done and then the generic
> files config.h.generic and pcre.h.generic are created. When I run this
> script, I know I am going to destroy my existing configuration (and the
> script outputs comments to say so, as well).


I've prepared a new patch that should address these concerns. My proposed
rule for config.h.generic is now as follows:

config.h.generic: configure.ac
     rm -rf $@ _generic
     mkdir _generic
     cd _generic && $(abs_top_srcdir)/configure
     perl -pe '<insert Perl one-liner here>' _generic/config.h >$@
     rm -rf _generic


So regardless of how the build tree is currently configured, this re-runs
the configure script with default settings, but in a temporary
subdirectory so that the existing configuration remains untouched.


--Daniel


--
Daniel Richard G. || danielg@??? || Software Developer
Teragram Linguistic Technologies (a division of SAS)
http://www.teragram.com/Index: PrepareRelease
===================================================================
--- PrepareRelease    (revision 1168)
+++ PrepareRelease    (working copy)
@@ -248,34 +248,6 @@
 echo Detrailing
 perl ./Detrail $files doc/p* doc/html/*
 
-echo Doing basic configure to get default pcre.h and config.h
-# This is in case the caller has set aliases (as I do - PH)
-unset cp ls mv rm
-./configure >/dev/null
-
-echo Converting pcre.h and config.h to generic forms
-cp -f pcre.h pcre.h.generic
-
-perl <<'END'
-  open(IN, "<config.h") || die "Can't open config.h: $!\n";
-  open(OUT, ">config.h.generic") || die "Can't open config.h.generic: $!\n";
-  while (<IN>)
-    {
-    if (/^#define\s(?!PACKAGE)(\w+)/)
-      {
-      print OUT "#ifndef $1\n";
-      print OUT;
-      print OUT "#endif\n";
-      }
-    else
-      {
-      print OUT;
-      }
-    }
-  close IN;
-  close OUT;
-END
-
 echo Done
 
 #End
Index: Makefile.am
===================================================================
--- Makefile.am    (revision 1168)
+++ Makefile.am    (working copy)
@@ -132,11 +132,18 @@
   pcre.h.generic \
   config.h.generic
 
-pcre.h.generic: configure.ac
+pcre.h.generic: pcre.h.in configure.ac
     rm -f $@
     cp -p pcre.h $@
 
-MAINTAINERCLEANFILES += pcre.h.generic
+config.h.generic: configure.ac
+    rm -rf $@ _generic
+    mkdir _generic
+    cd _generic && $(abs_top_srcdir)/configure
+    perl -pe 'if(/^#define\s(?!PACKAGE)(\w+)/){print"#ifndef $$1\n$$_#endif\n";$$_="";}' _generic/config.h >$@
+    rm -rf _generic
+
+MAINTAINERCLEANFILES += pcre.h.generic config.h.generic
 
 # These are the header files we'll install. We do not distribute pcre.h because
 # it is generated from pcre.h.in.