# three possible versions:
#   debugging
#   profiling
#   production

version = debugging

msg_production = linking production version ...
msg_profiling = linking profiling version ...
msg_debugging = linking debugging version ...

wlink_options_production = system dos4g
wlink_options_profiling = system dos4g debug all
wlink_options_debugging = system dos4g debug all

# all give full warnings, no language extensions.
# production is full full optimization, no asserts.
# profiling is some debug info, full opt, asserts.
# debugging is full debug info.
wpp_options_production = /w2 /zq /za /dNDEBUG /5r /zp4 /omaxnet
wpp_options_profiling = /w2 /zq /za /d2 /dNDEBUG /5r /zp4 /omaxnet
wpp_options_debugging = /w2 /zq /za /d2

header_files =  &
    bitvec.h    &
    charrang.h  &
    constrs.h   &
    crset.h     &
    dconstrs.h  &
    dfa.h       &
    dfacomp.h   &
    dfaseed.h   &
    dsderem.h   &
    dsdfarev.h  &
    dsfa.h      &
    dsis-opt.h  &
    dsis.h      &
    dslbfa.h    &
    dsrbfa.h    &
    dsre-opt.h  &
    dsre.h      &
    dsrfa.h     &
    dsrfa2.h    &
    dtrans.h    &
    dtransre.h  &
    extras.h    &
    fa.h        &
    faabs.h     &
    iconstrs.h  &
    is-impl.h   &
    lbfa.h      &
    rbfa.h      &
    re.h        &
    reops.h     &
    rfa.h       &
    sigma.h     &
    st-eqrel.h  &
    st-pool.h   &
    state.h     &
    staterel.h  &
    stateset.h  &
    stateto.h   &
    symrel.h    &
    tr-impl.h   &
    tr-pair.h   &
    trans.h     &
    transrel.h

object_files =      &
    bitvec.obj      &
    charrang.obj    &
    constrs.obj     &
    crset.obj       &
    dconstrs.obj    &
    deriv.obj       &
    dfa.obj         &
    dsderem.obj     &
    dsdfarev.obj    &
    dsfa.obj        &
    dsis-opt.obj    &
    dsis.obj        &
    dslbfa.obj      &
    dsrbfa.obj      &
    dsre-opt.obj    &
    dsre.obj        &
    dsrfa.obj       &
    dsrfa2.obj      &
    dtrans.obj      &
    dtransre.obj    &
    fa.obj          &
    iconstrs.obj    &
    is-impl.obj     &
    lbfa.obj        &
    min.obj         &
    min-asu.obj     &
    min-bww.obj     &
    min-hop.obj     &
    min-hu.obj      &
    rbfa.obj        &
    re.obj          &
    reops.obj       &
    rfa.obj         &
    sig-re.obj      &
    sig-rfa.obj     &
    st-eqrel.obj    &
    staterel.obj    &
    stateset.obj    &
    symrel.obj      &
    tester.obj      &
    tr-impl.obj     &
    trans.obj       &
    transrel.obj


# the build section.

fire.exe    :   $(object_files)
    echo $(msg_$(version))
    wlink name fire $(wlink_options_$(version)) @fire.lnk

.cpp.obj:
    wpp386 $[* $(wpp_options_$(version))

bitvec.obj  :   bitvec.cpp      $(header_files)
charrang.obj:   charrang.cpp    $(header_files)
constrs.obj :   constrs.cpp     $(header_files)
crset.obj   :   crset.cpp       $(header_files)
dconstrs.obj:   dconstrs.cpp    $(header_files)
deriv.obj   :   deriv.cpp       $(header_files)
dfa.obj     :   dfa.cpp         $(header_files)
dsderem.obj :   dsderem.cpp     $(header_files)
dsdfarev.obj:   dsdfarev.cpp    $(header_files)
dsfa.obj    :   dsfa.cpp        $(header_files)
dsis-opt.obj:   dsis-opt.cpp    $(header_files)
dsis.obj    :   dsis.cpp        $(header_files)
dslbfa.obj  :   dslbfa.cpp      $(header_files)
dsrbfa.obj  :   dsrbfa.cpp      $(header_files)
dsre-opt.obj:   dsre-opt.cpp    $(header_files)
dsre.obj    :   dsre.cpp        $(header_files)
dsrfa.obj   :   dsrfa.cpp       $(header_files)
dsrfa2.obj  :   dsrfa2.cpp      $(header_files)
dtrans.obj  :   dtrans.cpp      $(header_files)
dtransre.obj:   dtransre.cpp    $(header_files)
fa.obj      :   fa.cpp          $(header_files)
iconstrs.obj:   iconstrs.cpp    $(header_files)
is-impl.obj :   is-impl.cpp     $(header_files)
lbfa.obj    :   lbfa.cpp        $(header_files)
min.obj     :   min.cpp         $(header_files)
min-asu.obj :   min-asu.cpp     $(header_files)
min-bww.obj :   min-bww.cpp     $(header_files)
min-hop.obj :   min-hop.cpp     $(header_files)
min-hu.obj  :   min-hu.cpp      $(header_files)
rbfa.obj    :   rbfa.cpp        $(header_files)
re.obj      :   re.cpp          $(header_files)
reops.obj   :   reops.cpp       $(header_files)
rfa.obj     :   rfa.cpp         $(header_files)
sig-re.obj  :   sig-re.cpp      $(header_files)
sig-rfa.obj :   sig-rfa.cpp     $(header_files)
st-eqrel.obj:   st-eqrel.cpp    $(header_files)
staterel.obj:   staterel.cpp    $(header_files)
stateset.obj:   stateset.cpp    $(header_files)
symrel.obj  :   symrel.cpp      $(header_files)
tester.obj  :   tester.cpp      $(header_files)
tr-impl.obj :   tr-impl.cpp     $(header_files)
trans.obj   :   trans.cpp       $(header_files)
transrel.obj:   transrel.cpp    $(header_files)

