| skipped 940 lines |
941 | 941 | | ############################################################################### |
942 | 942 | | # Header cache - bdb |
943 | 943 | | if {[get-define want-bdb]} { |
944 | | - | set bdb_versions [opt-val with-bdb-version { 5.3 6.2 4.8 }] ;# Will be checked in order |
945 | | - | set bdb_prefix [opt-val with-bdb $prefix] |
946 | | - | |
947 | | - | foreach ver $bdb_versions { |
948 | | - | lassign [split $ver .] maj min |
949 | | - | # This is ugly, but it allows us to not have an inner loop |
950 | | - | lappend bdb_majors $maj $maj $maj $maj $maj $maj |
951 | | - | lappend bdb_minors $min $min $min $min $min $min |
952 | | - | lappend bdb_exploded "" db-$maj-$min db${maj}${min} db$maj.$min db-$maj db$maj |
953 | | - | } |
954 | | - | |
955 | | - | foreach maj $bdb_majors min $bdb_minors ver $bdb_exploded { |
956 | | - | set ver_inc_dir $bdb_prefix/include/$ver |
957 | | - | set ver_lib_dir $bdb_prefix/$::libdir_tail/$ver |
| 944 | + | proc find_bdb {bdb_prefix maj min path_tail lib_names} { |
| 945 | + | set ver_inc_dir $bdb_prefix/include/$path_tail |
| 946 | + | set ver_lib_dir $bdb_prefix/$::libdir_tail/$path_tail |
958 | 947 | | set ver_inc_file $ver_inc_dir/db.h |
959 | | - | set ver_lib_file db-$maj.$min |
960 | 948 | | |
961 | 949 | | # File exists? |
962 | 950 | | msg-checking "Checking for BerkeleyDB in $ver_inc_dir..." |
963 | 951 | | if {![file exists $ver_inc_file]} { |
964 | 952 | | msg-result "no" |
965 | | - | continue |
| 953 | + | return 0 |
966 | 954 | | } |
967 | 955 | | |
968 | 956 | | # Version is coherent? |
| skipped 2 lines |
971 | 959 | | if {$inc_maj eq {} || $inc_min eq {} || |
972 | 960 | | $inc_maj != $maj || $inc_min != $min} { |
973 | 961 | | msg-result "no (expecting $maj.$min, got $inc_maj.$inc_min)" |
974 | | - | continue |
| 962 | + | return 0 |
975 | 963 | | } |
976 | 964 | | msg-result "yes" |
977 | 965 | | |
978 | 966 | | # Can link? |
979 | | - | cc-with [list -libs -L$ver_lib_dir -cflags -I$ver_inc_dir] { |
980 | | - | if {![check-inc-and-lib bdb {} db.h db_env_create db-$maj.$min]} { |
981 | | - | msg-result "no" |
982 | | - | continue |
| 967 | + | foreach lib_name $lib_names { |
| 968 | + | cc-with [list -libs -L$ver_lib_dir -cflags -I$ver_inc_dir] { |
| 969 | + | check-inc-and-lib bdb {} db.h db_env_create $lib_name |
| 970 | + | } |
| 971 | + | if {[have-feature bdb]} { |
| 972 | + | define-append CFLAGS -I$ver_inc_dir |
| 973 | + | define-append LDFLAGS -L$ver_lib_dir |
| 974 | + | define-append LIBS -l$lib_name |
| 975 | + | define-append HCACHE_BACKENDS "bdb" |
| 976 | + | define USE_HCACHE |
| 977 | + | return 1 |
983 | 978 | | } |
984 | 979 | | } |
985 | | - | define-append CFLAGS -I$ver_inc_dir |
986 | | - | define-append LDFLAGS -L$ver_lib_dir |
987 | | - | define-append LIBS -ldb-$maj.$min |
988 | | - | define-append HCACHE_BACKENDS "bdb" |
989 | | - | define USE_HCACHE |
990 | | - | break |
| 980 | + | return 0 |
| 981 | + | } |
| 982 | + | |
| 983 | + | set bdb_versions [opt-val with-bdb-version { 5.3 6.2 4.8 }] ;# Will be checked in order |
| 984 | + | set bdb_prefix [opt-val with-bdb $prefix] |
| 985 | + | |
| 986 | + | foreach ver $bdb_versions { |
| 987 | + | lassign [split $ver .] maj min |
| 988 | + | foreach path_tail [list "" db-$maj-$min db${maj}${min} db$maj.$min db-$maj db$maj] { |
| 989 | + | set lib_names [list db$maj-$maj.$min db$maj-$maj db-$maj.$min db-$maj] |
| 990 | + | if {[find_bdb $bdb_prefix $maj $min $path_tail $lib_names]} { |
| 991 | + | break |
| 992 | + | } |
| 993 | + | } |
| 994 | + | if {[have-feature bdb]} { |
| 995 | + | break |
| 996 | + | } |
991 | 997 | | } |
992 | 998 | | |
993 | 999 | | if {![have-feature bdb]} { |
| skipped 399 lines |