mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-19 18:45:52 +00:00
121 lines
3.4 KiB
Tcl
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"
|
|
}
|