Coder Social home page Coder Social logo

Comments (12)

rgrinberg avatar rgrinberg commented on September 24, 2024

Bsdowl sounds like a decent choice because you're obviously an expert with it. One of the only redeeming qualities of oasis/ocamlbuild is that it's relatively portable on Windows. How does bsdowl fare in this respect?

OMakefile is also a fairly sane and portable makefile system

from camomile.

seliopou avatar seliopou commented on September 24, 2024

The "If it ain't broke don't fix it" philosophy should probably be applied here. The Makefile.in and configure.in look pretty clean and carefully constructed. configure.in is also where the WinGW hacks happen to to maintain windows compatibility. In addition, a lot of what the library does is process Unicode specifications to spit out data files that are then shipped with the distribution. No matter which way you cut it, the Makefile is going to need some custom attention, and this is already written and working.

Regarding portability, autotools is required to build a tarball distribution, but after that there is no build dependency on autotools (as far as I can tell).

from camomile.

foretspaisibles avatar foretspaisibles commented on September 24, 2024

The "If it ain't broke don't fix it" philosophy should probably be applied here.

While I definitely agree, purely handwritten Makefiles on large projects are usually very inflexible when it comes to reorganise code across directories and so on. But let's wait to see the problems before touching this! :)

from camomile.

 avatar commented on September 24, 2024

In case you are still interested in this, today I imported Camomile in the Jane Street repository. Before doing this I converted Camomile to jbuilder to understand properly it's build process. I put the result on my github: https://github.com/diml/Camomile/tree/jbuilder

Some of the jbuild files are a bit verbose, it's because jbuilder is not yet able to generate rules dynamically and doesn't yet support multi-directory libraries properly.

Nevertheless, apart from charmaps/jbuild the jbuild files are pretty straightforward. Camomile builds quite a lot faster as a result: 4s on my machine with -j16. I couldn't build in parallel with the original Makefile.

from camomile.

yoriyuki avatar yoriyuki commented on September 24, 2024

Thank you. Since I'm not familiar with jbuilder, I can't see how you handled data file generation. I only saw jbuild in charmaps directory. How you handled other data?

from camomile.

 avatar commented on September 24, 2024

There are also jbuild files in the other directories: database, locales and mappings. For each directory, I added an install stanza listing the files to install as well as user rules for generating the various files, such as:

(rule
 ((targets (White_Space.mar White_Space_set.mar))
  (deps    (../unidata/PropList.txt))
  (action  (run ../tools/parse_uniset.exe -filter . White_Space ${<}))))

Currently the rules are listed manually. Some directories, such as charmaps where a bit complicated to handle as the list of targets is dynamic. For now I wrote the jbuild in OCaml, which is a feature allowing you to generate the contents of the jbuild file on the fly with some OCaml code.

from camomile.

yoriyuki avatar yoriyuki commented on September 24, 2024

I see. It would be worthwhile to move jbuilder from GNU Make, but I want to make the targets in locales also dynamically generated.

How do other guys think?

from camomile.

rgrinberg avatar rgrinberg commented on September 24, 2024

@diml is there anything left in this effort?

from camomile.

 avatar commented on September 24, 2024

I suppose converting locales/jbuild to OCaml syntax to have them dynamically generated. And once ocaml/dune#35 is finished the main jbuild file can be cleaned.

Otherwise the current version should work well already.

from camomile.

rgrinberg avatar rgrinberg commented on September 24, 2024

Mind putting up a PR? I'll see if I can put in the finishing touches if you're too busy for this.

from camomile.

 avatar commented on September 24, 2024

Sure: #22

from camomile.

yoriyuki avatar yoriyuki commented on September 24, 2024

We have moved to jbuilder. Thank you for PR @diml @rgrinberg

from camomile.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.