mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-21 19:45:53 +00:00
Squashed 'src/soci/' content from commit 6e9312c
git-subtree-dir: src/soci git-subtree-split: 6e9312c4bb3748907bd28d62c40feca42878cfef
This commit is contained in:
148
build/unix/build-postgresql.tcl
Normal file
148
build/unix/build-postgresql.tcl
Normal file
@@ -0,0 +1,148 @@
|
||||
proc findPostgreSQL {} {
|
||||
global postgresqlInclude postgresqlLib
|
||||
|
||||
# candidate directories for local PostgreSQL:
|
||||
set includeDirs {
|
||||
"/usr/local/pgsql/include"
|
||||
"/usr/local/postgresql/include"
|
||||
"/usr/local/include/pgsql"
|
||||
"/usr/local/include/postgresql"
|
||||
"/usr/include/pgsql"
|
||||
"/usr/include/postgresql"
|
||||
"/usr/local/include"
|
||||
"/usr/include"
|
||||
"/opt/local/include"
|
||||
}
|
||||
set libDirs {
|
||||
"/usr/local/pgsql/lib"
|
||||
"/usr/local/postgresql/lib"
|
||||
"/usr/local/lib/pgsql"
|
||||
"/usr/local/lib/postgresql"
|
||||
"/usr/lib/pgsql"
|
||||
"/usr/lib/postgresql"
|
||||
"/usr/local/lib"
|
||||
"/usr/lib"
|
||||
"/opt/local/lib"
|
||||
}
|
||||
|
||||
if [info exists postgresqlInclude] {
|
||||
set includeDirs [list $postgresqlInclude]
|
||||
}
|
||||
if [info exists postgresqlLib] {
|
||||
set libDirs [list $postgresqlLib]
|
||||
}
|
||||
|
||||
set includeDir ""
|
||||
foreach I $includeDirs {
|
||||
set header "${I}/libpq/libpq-fs.h"
|
||||
if {[file exists $header]} {
|
||||
set includeDir $I
|
||||
break
|
||||
}
|
||||
}
|
||||
if {$includeDir == ""} {
|
||||
return {}
|
||||
}
|
||||
|
||||
set libDir ""
|
||||
foreach L $libDirs {
|
||||
set libraryA "${L}/libpq.a"
|
||||
set librarySo "${L}/libpq.so"
|
||||
if {[file exists $libraryA] || [file exists $librarySo]} {
|
||||
set libDir $L
|
||||
break
|
||||
}
|
||||
}
|
||||
if {$libDir == ""} {
|
||||
return {}
|
||||
}
|
||||
|
||||
return [list $includeDir $libDir]
|
||||
}
|
||||
|
||||
proc buildPostgreSQL {} {
|
||||
global CXXFLAGS
|
||||
|
||||
puts "building static PostgreSQL"
|
||||
|
||||
set dirs [findPostgreSQL]
|
||||
if {$dirs == {}} {
|
||||
puts "cannot find PostgreSQL library files, skipping this target"
|
||||
return
|
||||
}
|
||||
|
||||
set includeDir [lindex $dirs 0]
|
||||
set libDir [lindex $dirs 1]
|
||||
|
||||
set cwd [pwd]
|
||||
cd "../../src/backends/postgresql"
|
||||
foreach cppFile [glob "*.cpp"] {
|
||||
execute "g++ -c $cppFile $CXXFLAGS -I../../core -I${includeDir}"
|
||||
}
|
||||
|
||||
execute "ar cr libsoci_postgresql.a [glob *.o]"
|
||||
cd $cwd
|
||||
eval exec mkdir -p "lib"
|
||||
execute "cp ../../src/backends/postgresql/libsoci_postgresql.a lib"
|
||||
eval exec mkdir -p "include"
|
||||
execute "cp ../../src/backends/postgresql/soci-postgresql.h include"
|
||||
}
|
||||
|
||||
proc buildPostgreSQLSo {} {
|
||||
global CXXFLAGS SHARED
|
||||
|
||||
puts "building shared PostgreSQL"
|
||||
|
||||
set dirs [findPostgreSQL]
|
||||
if {$dirs == {}} {
|
||||
puts "cannot find PostgreSQL library files, skipping this target"
|
||||
return
|
||||
}
|
||||
|
||||
set includeDir [lindex $dirs 0]
|
||||
set libDir [lindex $dirs 1]
|
||||
|
||||
set cwd [pwd]
|
||||
cd "../../src/backends/postgresql"
|
||||
foreach cppFile [glob "*.cpp"] {
|
||||
execute "g++ -c $cppFile $CXXFLAGS -fPIC -I../../core -I${includeDir}"
|
||||
}
|
||||
|
||||
execute "g++ $SHARED -o libsoci_postgresql.so [glob *.o] -L${libDir} -lpq"
|
||||
cd $cwd
|
||||
eval exec mkdir -p "lib"
|
||||
execute "cp ../../src/backends/postgresql/libsoci_postgresql.so lib"
|
||||
eval exec mkdir -p "include"
|
||||
execute "cp ../../src/backends/postgresql/soci-postgresql.h include"
|
||||
}
|
||||
|
||||
proc buildPostgreSQLTest {} {
|
||||
global CXXTESTFLAGS LDL
|
||||
|
||||
puts "building PostgreSQL test"
|
||||
|
||||
set dirs [findPostgreSQL]
|
||||
if {$dirs == {}} {
|
||||
puts "cannot find PostgreSQL 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/postgresql/test"
|
||||
execute "g++ test-postgresql.cpp -o test-postgresql $CXXTESTFLAGS -I.. -I../../../core -I../../../core/test -I${includeDir} -I${boostIncludeDir} -L../../../../build/unix/lib -L${libDir} -L${boostLibDir} -lsoci_core -lsoci_postgresql -lboost_date_time ${LDL} -lpq"
|
||||
cd $cwd
|
||||
eval exec mkdir -p "tests"
|
||||
execute "cp ../../src/backends/postgresql/test/test-postgresql tests"
|
||||
}
|
||||
Reference in New Issue
Block a user