# file : mod/buildfile # license : MIT; see accompanying LICENSE file define mod: libs mod{*}: { bin.lib.prefix = mod_ backlink = true # Backlink in forwarded configurations. install = libexec/ } import libs = libcmark-gfm%lib{cmark-gfm} import libs += libcmark-gfm-extensions%lib{cmark-gfm-extensions} import libs += libodb%lib{odb} import libs += libodb-pgsql%lib{odb-pgsql} import libs += libbutl%lib{butl} import libs += libbpkg%lib{bpkg} import libs += libbbot%lib{bbot} include ../libbrep/ include ../web/xhtml/ include ../web/server/ ./: mod{brep} {libue libus}{mod} libu_src = options-types types-parsers build-config mod{brep}: {hxx ixx txx cxx}{* -module-options -{$libu_src}} \ libus{mod} ../libbrep/lib{brep} ../web/server/libus{web-server} \ $libs {libue libus}{mod}: {hxx ixx txx cxx}{+{$libu_src}} $libs libus{mod}: ../web/xhtml/libus{xhtml} libue{mod}: ../web/xhtml/libue{xhtml} ## Consumption build ($develop == false). # # Use pregenerated versions in the consumption build. # {libue libus}{mod}: pregenerated/{hxx ixx cxx}{**}: include = (!$develop) if! $develop cxx.poptions =+ "-I($src_base/pregenerated)" # Distribute pregenerated versions only in the consumption build. # pregenerated/{hxx ixx cxx}{*}: dist = (!$develop) # ## ## Development build ($develop == true). # {libue libus}{mod}: {hxx ixx cxx}{module-options}: include = $develop if $develop import! [metadata] cli = cli%exe{cli} # In the development build distribute regenerated # {hxx ixx cxx}{module-options}, remapping their locations to the paths of the # pregenerated versions (which are only distributed in the consumption build; # see above). This way we make sure that the distributed files are always # up-to-date. # <{hxx ixx cxx}{module-options}>: cli{module} $cli { # Set option prefix to the empty value to handle all unknown request # parameters uniformly with a single catch block. # options = --std c++11 -I $src_root --include-with-brackets \ --include-prefix mod --guard-prefix MOD --generate-specifier \ --cxx-prologue "#include " \ --cli-namespace brep::cli --generate-file-scanner \ --option-length 46 --generate-modifier --generate-description \ --option-prefix "" --output-suffix "-options" } % if $develop {{ diag cli ($<[0]) ($<[1]) $options -o $out_base/ $path($<[0]) if diff $src_base/pregenerated/mod/module-options.hxx $path($>[0]) >- && \ diff $src_base/pregenerated/mod/module-options.ixx $path($>[1]) >- && \ diff $src_base/pregenerated/mod/module-options.cxx $path($>[2]) >- exit end cp $path($>[0]) $src_base/pregenerated/mod/module-options.hxx cp $path($>[1]) $src_base/pregenerated/mod/module-options.ixx cp $path($>[2]) $src_base/pregenerated/mod/module-options.cxx }} # ## # Don't install any of the module's headers. # {hxx ixx txx}{*}: install = false