Files
rippled/build/unix/build-oracle.tcl
Vinnie Falco 9708a12607 Squashed 'src/soci/' content from commit 6e9312c
git-subtree-dir: src/soci
git-subtree-split: 6e9312c4bb3748907bd28d62c40feca42878cfef
2015-03-18 19:36:00 -07:00

121 lines
3.4 KiB
Tcl

proc findOracle {} {
global env oracleInclude oracleLib
if {[info exists oracleInclude] &&
[info exists oracleLib]} {
set includeDir $oracleInclude
set libDir $oracleLib
} else {
if {[info exists env(ORACLE_HOME)] == 0} {
puts "The ORACLE_HOME variable is not set."
return {}
}
set ORACLE_HOME $env(ORACLE_HOME)
set includeDir [file join $ORACLE_HOME "rdbms/public"]
set header [file join $includeDir "oci.h"]
if {[file exists $header] == 0} {
puts "ORACLE_HOME is strange."
return {}
}
set libDir [file join $ORACLE_HOME "lib"]
set libraryA [file join $libDir "libclntsh.a"]
set librarySo [file join $libDir "libclntsh.so"]
if {([file exists $libraryA] == 0) && ([file exists $librarySo] == 0)} {
puts "ORACLE_HOME is strange."
return {}
}
}
return [list $includeDir $libDir]
}
proc buildOracle {} {
global CXXFLAGS
puts "building static Oracle"
set dirs [findOracle]
if {$dirs == {}} {
puts "cannot find Oracle library files, skipping this target"
return
}
set includeDir [lindex $dirs 0]
set libDir [lindex $dirs 1]
set cwd [pwd]
cd "../../src/backends/oracle"
foreach cppFile [glob "*.cpp"] {
execute "g++ -c $cppFile $CXXFLAGS -I../../core -I${includeDir}"
}
execute "ar cr libsoci_oracle.a [glob *.o]"
cd $cwd
eval exec mkdir -p "lib"
execute "cp ../../src/backends/oracle/libsoci_oracle.a lib"
eval exec mkdir -p "include"
execute "cp ../../src/backends/oracle/soci-oracle.h include"
}
proc buildOracleSo {} {
global CXXFLAGS SHARED
puts "building shared Oracle"
set dirs [findOracle]
if {$dirs == {}} {
puts "cannot find Oracle library files, skipping this target"
return
}
set includeDir [lindex $dirs 0]
set libDir [lindex $dirs 1]
set cwd [pwd]
cd "../../src/backends/oracle"
foreach cppFile [glob "*.cpp"] {
execute "g++ -c $cppFile $CXXFLAGS -fPIC -I../../core -I${includeDir}"
}
execute "g++ $SHARED -o libsoci_oracle.so [glob *.o] -L${libDir} -lclntsh -lnnz10"
cd $cwd
eval exec mkdir -p "lib"
execute "cp ../../src/backends/oracle/libsoci_oracle.so lib"
eval exec mkdir -p "include"
execute "cp ../../src/backends/oracle/soci-oracle.h include"
}
proc buildOracleTest {} {
global CXXTESTFLAGS LDL
puts "building Oracle test"
set dirs [findOracle]
if {$dirs == {}} {
puts "cannot find Oracle library files, skipping this target"
return
}
set includeDir [lindex $dirs 0]
set libDir [lindex $dirs 1]
set dirs [findBoost]
if {$dirs == {}} {
puts "cannot find Boost library files, skipping this target"
return
}
set boostIncludeDir [lindex $dirs 0]
set boostLibDir [lindex $dirs 1]
set cwd [pwd]
cd "../../src/backends/oracle/test"
execute "g++ test-oracle.cpp -o test-oracle $CXXTESTFLAGS -I.. -I../../../core -I../../../core/test -I${includeDir} -I${boostIncludeDir} -L../../../../build/unix/lib -L${libDir} -L${boostLibDir} -lsoci_core -lsoci_oracle -lboost_date_time ${LDL} -lclntsh -lnnz10"
cd $cwd
eval exec mkdir -p "tests"
execute "cp ../../src/backends/oracle/test/test-oracle tests"
}