]> granicus.if.org Git - python/commitdiff
Patch #1355883: Build Python-ast.c and Python-ast.h
authorMartin v. Löwis <martin@v.loewis.de>
Fri, 14 Apr 2006 15:02:32 +0000 (15:02 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Fri, 14 Apr 2006 15:02:32 +0000 (15:02 +0000)
independently. Fixes #1355883.

Makefile.pre.in
Parser/asdl_c.py

index 6d4d622e3a7a2d27bb599b5e1d021c7620d6a24d..5ddcdc2b40e5dce4c9e2a28e40800a2693e93474 100644 (file)
@@ -219,13 +219,15 @@ PGENOBJS= $(PGENMAIN) $(POBJS) $(PGOBJS)
 
 ##########################################################################
 # AST
-AST_H=         $(srcdir)/Include/Python-ast.h
-AST_C=         $(srcdir)/Python/Python-ast.c
+AST_H_DIR=     $(srcdir)/Include
+AST_H=         $(AST_H_DIR)/Python-ast.h
+AST_C_DIR=     $(srcdir)/Python
+AST_C=         $(AST_C_DIR)/Python-ast.c
 AST_ASDL=      $(srcdir)/Parser/Python.asdl
 
 ASDLGEN_FILES= $(srcdir)/Parser/asdl.py $(srcdir)/Parser/asdl_c.py
 # XXX Note that a build now requires Python exist before the build starts
-ASDLGEN=       $(srcdir)/Parser/asdl_c.py -h $(srcdir)/Include -c $(srcdir)/Python
+ASDLGEN=       $(srcdir)/Parser/asdl_c.py
 
 ##########################################################################
 # Python
@@ -465,9 +467,12 @@ Parser/metagrammar.o:      $(srcdir)/Parser/metagrammar.c
 
 Parser/tokenizer_pgen.o:       $(srcdir)/Parser/tokenizer.c
 
-$(AST_H) $(AST_C): $(AST_ASDL) $(ASDLGEN_FILES)
-       $(ASDLGEN) $(AST_ASDL)
+$(AST_H): $(AST_ASDL) $(ASDLGEN_FILES)
+       $(ASDLGEN) -h $(AST_H_DIR) $(AST_ASDL)
 
+$(AST_C): $(AST_ASDL) $(ASDLGEN_FILES)
+       $(ASDLGEN) -c $(AST_C_DIR) $(AST_ASDL)
+       
 Python/compile.o Python/symtable.o: $(GRAMMAR_H) $(AST_H)
 
 Python/getplatform.o: $(srcdir)/Python/getplatform.c
index 6a8d981cd146986912385558790baaf25eef1002..b6d9830d37ff72db7e6094cbd383be6942b4d391 100755 (executable)
@@ -726,39 +726,35 @@ def main(srcfile):
         sys.exit(1)
     if INC_DIR:
         p = "%s/%s-ast.h" % (INC_DIR, mod.name)
-    else:
-        p = "%s-ast.h" % mod.name
-    f = open(p, "wb")
-    print >> f, auto_gen_msg
-    print >> f, '#include "asdl.h"\n'
-    c = ChainOfVisitors(TypeDefVisitor(f),
-                        StructVisitor(f),
-                        PrototypeVisitor(f),
-                        )
-    c.visit(mod)
-    print >>f, "PyObject* PyAST_mod2obj(mod_ty t);"
-    f.close()
+        f = open(p, "wb")
+        print >> f, auto_gen_msg
+        print >> f, '#include "asdl.h"\n'
+        c = ChainOfVisitors(TypeDefVisitor(f),
+                            StructVisitor(f),
+                            PrototypeVisitor(f),
+                            )
+        c.visit(mod)
+        print >>f, "PyObject* PyAST_mod2obj(mod_ty t);"
+        f.close()
 
     if SRC_DIR:
         p = os.path.join(SRC_DIR, str(mod.name) + "-ast.c")
-    else:
-        p = "%s-ast.c" % mod.name
-    f = open(p, "wb")
-    print >> f, auto_gen_msg
-    print >> f, '#include "Python.h"'
-    print >> f, '#include "%s-ast.h"' % mod.name
-    print >> f
-    print >>f, "static PyTypeObject* AST_type;"
-    v = ChainOfVisitors(
-                        PyTypesDeclareVisitor(f),
-                        PyTypesVisitor(f),
-                        FunctionVisitor(f),
-                        ObjVisitor(f),
-                        ASTModuleVisitor(f),
-                        PartingShots(f),
-                        )
-    v.visit(mod)
-    f.close()
+        f = open(p, "wb")
+        print >> f, auto_gen_msg
+        print >> f, '#include "Python.h"'
+        print >> f, '#include "%s-ast.h"' % mod.name
+        print >> f
+        print >>f, "static PyTypeObject* AST_type;"
+        v = ChainOfVisitors(
+            PyTypesDeclareVisitor(f),
+            PyTypesVisitor(f),
+            FunctionVisitor(f),
+            ObjVisitor(f),
+            ASTModuleVisitor(f),
+            PartingShots(f),
+            )
+        v.visit(mod)
+        f.close()
 
 if __name__ == "__main__":
     import sys
@@ -767,6 +763,9 @@ if __name__ == "__main__":
     INC_DIR = ''
     SRC_DIR = ''
     opts, args = getopt.getopt(sys.argv[1:], "h:c:")
+    if len(opts) != 1:
+        print "Must specify exactly one output file"
+        sys.exit(1)
     for o, v in opts:
         if o == '-h':
             INC_DIR = v
@@ -774,4 +773,5 @@ if __name__ == "__main__":
             SRC_DIR = v
     if len(args) != 1:
         print "Must specify single input file"
+        sys.exit(1)
     main(args[0])