Comments (12)
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.
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.
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.
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.
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.
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.
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.
@diml is there anything left in this effort?
from camomile.
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.
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.
Sure: #22
from camomile.
We have moved to jbuilder. Thank you for PR @diml @rgrinberg
from camomile.
Related Issues (20)
- Update case mapping algorithm to latest ones
- Update locale sensitive sorting algorithm (collation)
- Improve character encoding/decoding engine
- Remove/Rename deprecated functions HOT 1
- camomile doesn't compile with OCaml 4.06 HOT 3
- Stack overflow when building on ppc64, ppc64le HOT 5
- Use Uchar in stdlib
- Introduce quick check and use a modern unit test framework HOT 2
- Not_found exception thrown in Camomile/internal/database.ml HOT 7
- SEGV while processing zh locale HOT 2
- Reduce stack usage of ocamllocaldef HOT 6
- Proposal: Use topkg for releases. HOT 2
- v.1.0.0 opam CI test failure HOT 8
- 1.0.0 doesn't compile on macOS (OCaml 4.04.0) HOT 4
- Roadmap to 2.0.0 HOT 1
- tools/parse_specialcasing sometimes fails HOT 2
- Can`t install on OpenBSD HOT 4
- Camomile's config files are incompatible with js_of_ocaml
- Tests seem to fail in 1.0.2 HOT 2
- Does not compile with OCaml 4.09.0 HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from camomile.