/[thuban]/branches/WIP-pyshapelib-bramz/libraries/pyshapelib/setup.py
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/libraries/pyshapelib/setup.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/thuban/libraries/pyshapelib/setup.py revision 1611 by jan, Tue Aug 19 21:24:20 2003 UTC branches/WIP-pyshapelib-bramz/libraries/pyshapelib/setup.py revision 2752 by bramz, Tue Apr 10 23:45:00 2007 UTC
# Line 1  Line 1 
1    
2  import os  import os
3    import sys
4  from distutils.core import setup, Extension  from distutils.core import setup, Extension
5    from distutils.util import convert_path
6    
7  # try to determine the directory where the shapelib source files are.  # try to determine the directory where the shapelib source files are.
8  # There are currently two supported situations.  # There are currently two supported situations.
9  #  #
10  # 1. "Standalone" build: the parent directory is the shapelib source  # 1. "Standalone" build: the parent directory is the shapelib source
11  #    directory  #    directory
12  # 2. Built in the Thuban source tree where it's ../shapelib/ relative to  # 2. Built in the Thuban source tree where ../shapelib/ relative to the
13  #    the directory containing this setup.py  #    directory containing this setup.py contains (the relevant parts of)
14    #    shapelib
15    #
16    # 3. Binary build with e.g. bdist_rpm.  This takes place deep in the
17    #    build directory.
18    
19  # os.path expects filenames in OS-specific form so we have to construct  # os.path expects filenames in OS-specific form so we have to construct
20  # the files with os.path functions. distutils, OTOH, uses posix-style  # the files with os.path functions. distutils, OTOH, uses posix-style
21  # filenames exclusively, so we posix when making filenames for  # filenames exclusively, so we use posix conventions when making
22  # distutils.  # filenames for distutils.
23  if os.path.exists(os.path.join(os.pardir, "shpeopen.c")):  for shp_dir in ["..", "../shapelib", "../../../../../../shapelib"]:
24      shp_dir = ".."          if (os.path.isdir(convert_path(shp_dir))
25  elif os.path.exists(os.path.join(os.pardir, "shapelib")):                  and os.path.exists(os.path.join(convert_path(shp_dir), "shpopen.c"))):
26      shp_dir = "../shapelib"                  # shp_dir contains shpopen.c, so assume it's the directory with
27                    # the shapefile library to use
28  extensions = [Extension("shapelibc",                  break
29                          ["shapelib_wrap.c",  else:
30                           shp_dir + "/shpopen.c",          print >>sys.stderr, "no shapelib directory found"
31                           shp_dir + "/shptree.c"],          sys.exit(1)
32                          include_dirs = [shp_dir]),  
33                Extension("shptree",  def dbf_macros():
34                          ["shptreemodule.c"],          """Return the macros to define when compiling the dbflib wrapper.
35                          include_dirs = [shp_dir]),  
36                Extension("dbflibc",          The returned list specifies following macros:
37                          ["dbflib_wrap.c",          - HAVE_UPDATE_HEADER, which is
38                           shp_dir + "/dbfopen.c"],          '1' if the dbflib version we will be compiling with has the
39                          include_dirs = [shp_dir])]          DBFUpdateHeader function and '0' otherwise.  To check whether
40            DBFUpdateHeader is available, we scan shapefil.h for the string
41            'DBFUpdateHeader'.
42            - HAVE_LANGUAGE_DRIVER, whics is '1' if the dbflib version we will
43            compiling with has the nLanguageDriver field in DBFInfo and '0' otherwise.
44            Again, shapefil.h is scanned to check this.
45            """
46            f = open(convert_path(shp_dir + "/shapefil.h"))
47            contents = f.read()
48            f.close()
49            
50            def have(keyword):
51                    if keyword in contents:
52                            return "1"
53                    return 0
54            
55            return [
56                    ("HAVE_UPDATE_HEADER", have("DBFUpdateHeader")),
57                    ("HAVE_LANGUAGE_DRIVER", have("nLanguageDriver"))]
58    
59    extensions = [Extension("shapelib",
60                                                    ["shapelibmodule.c",
61                                                    shp_dir + "/shpopen.c",
62                                                    shp_dir + "/shptree.c"],
63                                                    include_dirs = [shp_dir]),
64                            Extension("shptree",
65                                                    ["shptreemodule.c"],
66                                                    include_dirs = [shp_dir]),
67                            Extension("dbflib",
68                                                    ["dbflibmodule.c",
69                                                    shp_dir + "/dbfopen.c"],
70                                                    include_dirs = [shp_dir],
71                                                    define_macros = dbf_macros())]
72    
73  setup(name = "pyshapelib",  setup(name = "pyshapelib",
74        version = "0.3",          version = "0.3",
75        description = "Python bindings for shapelib",          description = "Python bindings for shapelib",
76        author = "Bernhard Herzog",          author = "Bernhard Herzog",
77        author_email = "[email protected]",          author_email = "[email protected]",
78        url = "ftp:intevation.de/users/bh",          url = "ftp:intevation.de/users/bh",
79        py_modules = ["shapelib", "dbflib"],          ext_modules = extensions)
       ext_modules = extensions)  
80    

Legend:
Removed from v.1611  
changed lines
  Added in v.2752

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26