Import qw( env );

$env = $env->clone(
   OCAMLC      => "$env->{OCAMLC} -I $env->{CAMLP4STDLIB}",
   OCAMLLINK   => "$env->{OCAMLLINK} -I $env->{CAMLP4STDLIB}",
   OCAMLCFLAGS => "$env->{OCAMLCFLAGS} -linkall -pp '%CAMLP4MACRO'",
   PPFLAGS     => "q_MLast.cmo pa_extend.cmo $env->{PPFLAGS}",
   MLLIBS      => "unix$env->{SUFLIB} threads$env->{SUFLIB}",
   CCLIBS      => "-cclib $env->{MP}/clib/clib.a"
);

$nenv = $env->clone(
	MLLIBS => "$env->{MLLIBS} odyl$env->{SUFLIB} camlp4$env->{SUFLIB} pa_o$env->{SUFOBJ} pr_dump$env->{SUFOBJ} pa_extend$env->{SUFOBJ} q_MLast$env->{SUFOBJ}"
);

$oenv = $env->clone(
	MLLIBS => "$env->{MLLIBS} odyl$env->{SUFLIB} camlp4$env->{SUFLIB} pa_o$env->{SUFOBJ} pr_o$env->{SUFOBJ} pa_extend$env->{SUFOBJ} q_MLast$env->{SUFOBJ}"
);

$poenv = $env->clone(
	MLLIBS => "$env->{MLLIBS} odyl$env->{SUFLIB} camlp4$env->{SUFLIB} pr_dump$env->{SUFOBJ}"
);

$pnenv = $env->clone(
	MLLIBS => "$env->{MLLIBS} odyl$env->{SUFLIB} camlp4$env->{SUFLIB} pr_o$env->{SUFOBJ}"
);

$penv = $env->clone(
	MLLIBS => "unix$env->{SUFLIB}",
	OCAMLCFLAGS => ""
);

OCamlSources $env
	'filter_parse.ml',
	'filter_main.ml',
	'filter_bin.ml',
	'filter_convert.ml',
	'prlcomp.ml';

# filter_main.ml uses external symbols from clib.a
Depends $env "filter_main$env->{SUFOBJ}", "$env->{MP_HASH}/clib/clib.a";

OCamlLibrary $env 'filter',
	'filter_parse',
	'filter_main',
	'filter_bin',
	'filter_convert',
	'prlcomp';

OCamlProgram $nenv  'camlp4n', 'filter_main';
OCamlProgram $oenv  'camlp4o', 'filter_main';
OCamlProgram $pnenv 'prlcn', 'filter_bin';
OCamlProgram $poenv 'prlco', 'filter_bin';
OCamlProgram $env   'convert', 'filter_convert';
OCamlProgram $penv  'prlc', 'prlcomp';

## Add the library to the default target list
#Default ( "filter$env->{SUFLIB}", "camlp4n", "camlp4o", "prlcn", "prlco", "prlc" );
