HDRS += [ FDirName $(TOP) db ] ;

SubDir TOP db ;
SubInclude TOP server ;

rule PrivilegeList
{
    LISTPRIVILEGES = [ FDirName $(TOP) schema list-privileges ] ;
    Depends $(<) : $(>) $(LISTPRIVILEGES) ;
    Clean clean : $(<) ;
    SEARCH on $(>) = [ FDirName $(TOP) schema ] ;
    MakeLocate $(<) : $(LOCATE_SOURCE) ;
}

actions PrivilegeList bind LISTPRIVILEGES
{
    perl $(LISTPRIVILEGES) > $(<) ;
}

PrivilegeList privileges.inc : schema.pg ;

rule ColumnList
{
    LISTCOLUMNS = [ FDirName $(TOP) schema list-columns ] ;
    Depends $(<) : $(>) $(LISTCOLUMNS) ;
    Clean clean : $(<) ;
    SEARCH on $(>) = [ FDirName $(TOP) schema ] ;
    MakeLocate $(<) : $(LOCATE_SOURCE) ;
}

actions ColumnList bind LISTCOLUMNS
{
    perl $(LISTCOLUMNS) > $(<) < $(>) ;
}

ColumnList columns.inc : schema.pg ;


rule DowngradeList
{
    DOWNGRADES = [ FDirName $(TOP) schema list-downgrades ] ;
    Depends $(<) : $(>) $(DOWNGRADES) ;
    Clean clean : $(<) ;
    SEARCH on $(>) = [ FDirName $(TOP) schema ] ;
    MakeLocate $(<) : $(LOCATE_SOURCE) ;
}

actions DowngradeList bind DOWNGRADES
{
    perl $(DOWNGRADES) > $(<) < $(>) ;
}

DowngradeList downgrades.inc : downgrades ;


Build database : database.cpp postgres.cpp pgmessage.cpp
    query.cpp transaction.cpp schema.cpp dbsignal.cpp granter.cpp
    schemachecker.cpp ;

if $(OS) != "OPENBSD" && $(OS) != "DARWIN" {
    UseLibrary postgres.cpp : crypt ;
}
