mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-01 16:35:53 +00:00
Squashed 'src/soci/' content from commit 6e9312c
git-subtree-dir: src/soci git-subtree-split: 6e9312c4bb3748907bd28d62c40feca42878cfef
This commit is contained in:
120
build/unix/build-oracle.tcl
Normal file
120
build/unix/build-oracle.tcl
Normal file
@@ -0,0 +1,120 @@
|
||||
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"
|
||||
}
|
||||
Reference in New Issue
Block a user