Skip to content

Commit

Permalink
Added support for building cx_Oracle with a pre-compiled version of O…
Browse files Browse the repository at this point in the history
…DPI-C,

as requested (#103).
  • Loading branch information
anthony-tuininga committed Mar 31, 2018
1 parent 623718f commit 9baa55b
Showing 1 changed file with 27 additions and 8 deletions.
35 changes: 27 additions & 8 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,22 +70,41 @@ def run(self):
sourceDir = "src"
sources = [os.path.join(sourceDir, n) \
for n in sorted(os.listdir(sourceDir)) if n.endswith(".c")]

# define ODPI-C sources
dpiSourceDir = os.path.join("odpi", "src")
dpiSources = [os.path.join(dpiSourceDir, n) \
for n in sorted(os.listdir(dpiSourceDir)) if n.endswith(".c")]
depends = ["src/cxoModule.h"]


# define ODPI-C sources, libraries and include directories; if the environment
# variables ODPIC_INC_DIR and ODPIC_LIB_DIR are both set, assume these
# locations contain a compiled installation of ODPI-C; otherwise, use the
# source of ODPI-C found in the odpi subdirectory
dpiIncludeDir = os.environ.get("ODPIC_INC_DIR")
dpiLibDir = os.environ.get("ODPIC_LIB_DIR")
if dpiIncludeDir and dpiLibDir:
dpiSources = []
includeDirs = [dpiIncludeDir]
libraries = ["odpic"]
libraryDirs = [dpiLibDir]
else:
includeDirs = ["odpi/include", "odpi/src"]
dpiSourceDir = os.path.join("odpi", "src")
dpiSources = [os.path.join(dpiSourceDir, n) \
for n in sorted(os.listdir(dpiSourceDir)) if n.endswith(".c")]
depends.extend(["odpi/include/dpi.h", "odpi/src/dpiImpl.h",
"odpi/src/dpiErrorMessages.h"])
libraries = []
libraryDirs = []

# setup the extension
extension = Extension(
name = "cx_Oracle",
include_dirs = ["odpi/include", "odpi/src"],
include_dirs = includeDirs,
extra_compile_args = extraCompileArgs,
define_macros = [("CXO_BUILD_VERSION", BUILD_VERSION)],
extra_link_args = extraLinkArgs,
sources = sources + dpiSources,
depends = ["src/cxoModule.h", "odpi/include/dpi.h",
"odpi/src/dpiImpl.h", "odpi/src/dpiErrorMessages.h"])
depends = depends,
libraries = libraries,
library_dirs = libraryDirs)

# perform the setup
setup(
Expand Down

0 comments on commit 9baa55b

Please sign in to comment.