aboutsummaryrefslogtreecommitdiff
path: root/libcrystfel
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2020-07-27 14:44:06 +0200
committerThomas White <taw@physics.org>2020-07-29 18:53:45 +0200
commitbb099d6c25a2868907b093053bd5205ac7bc8b94 (patch)
treea6704d9bcbf82ea58d2083c6977c58cd49ac76bf /libcrystfel
parentbaa140938c9915842a526473d5bbde81cbcaae23 (diff)
Update Meson build files for dtempl branch
Diffstat (limited to 'libcrystfel')
-rw-r--r--libcrystfel/config.h.in12
-rw-r--r--libcrystfel/meson.build105
2 files changed, 117 insertions, 0 deletions
diff --git a/libcrystfel/config.h.in b/libcrystfel/config.h.in
new file mode 100644
index 00000000..364f7060
--- /dev/null
+++ b/libcrystfel/config.h.in
@@ -0,0 +1,12 @@
+/* config.h for libcrystfel */
+
+#mesondefine HAVE_FFTW
+#mesondefine HAVE_XGANDALF
+#mesondefine HAVE_PINKINDEXER
+#mesondefine HAVE_FDIP
+#mesondefine HAVE_CURSES
+
+#mesondefine HAVE_FORKPTY_PTY_H
+#mesondefine HAVE_FORKPTY_UTIL_H
+
+#define CRYSTFEL_VERSIONSTRING "${CRYSTFEL_VERSION}"
diff --git a/libcrystfel/meson.build b/libcrystfel/meson.build
new file mode 100644
index 00000000..a7d946ce
--- /dev/null
+++ b/libcrystfel/meson.build
@@ -0,0 +1,105 @@
+# libcrystfel
+
+zlibdep = dependency('zlib', required : true)
+
+fftwdep = dependency('fftw3', required : false)
+if fftwdep.found()
+ conf_data.set10('HAVE_FFTW', 1)
+endif
+
+# FIXME: Curses, Xgandalf, pinkindexer, FDIP
+
+libcrystfel_includes = include_directories('src')
+
+# Find forkpty()
+utildep = cc.find_library('util', required : true)
+if cc.has_function('forkpty', dependencies : utildep, prefix : '#include <pty.h>')
+ add_project_arguments('-DHAVE_FORKPTY_PTY_H', language : 'c')
+elif cc.has_function('forkpty', dependencies : utildep, prefix : '#include <util.h>')
+ add_project_arguments('-DHAVE_FORKPTY_UTIL_H', language : 'c')
+else
+ error('Couldn\'t find forkpty()')
+endif
+
+
+# Symmetry operation parser Flex/Bison stuff
+flex = find_program('flex')
+bison = find_program('bison')
+
+flex_gen = generator(flex,
+ output : ['@BASENAME@-lex.c', '@BASENAME@-lex.h'],
+ arguments : ['--outfile=@OUTPUT0@',
+ '--header-file=@OUTPUT1@',
+ '@INPUT@'])
+
+bison_gen = generator(bison,
+ output : ['@BASENAME@-parse.c', '@BASENAME@-parse.h'],
+ arguments : ['--output=@OUTPUT0@',
+ '--defines=@OUTPUT1@',
+ '--report=all',
+ '@INPUT@'])
+
+symop_parse_ch = bison_gen.process('src/symop.y')
+symop_lex_ch = flex_gen.process('src/symop.l')
+
+
+libcrystfel_sources = ['src/image.c',
+ 'src/cell.c',
+ 'src/index.c',
+ 'src/spectrum.c',
+ 'src/cell-utils.c',
+ 'src/integer_matrix.c',
+ 'src/stream.c',
+ 'src/crystal.c',
+ 'src/integration.c',
+ 'src/symmetry.c',
+ 'src/mosflm.c',
+ 'src/taketwo.c',
+ 'src/dirax.c',
+ 'src/peakfinder8.c',
+ 'src/thread-pool.c',
+ 'src/peaks.c',
+ 'src/utils.c',
+ 'src/felix.c',
+ 'src/predict-refine.c',
+ 'src/xds.c',
+ 'src/filters.c',
+ 'src/rational.c',
+ 'src/xgandalf.c',
+ 'src/pinkindexer.c',
+ 'src/geometry.c',
+ 'src/reflist.c',
+ 'src/reflist-utils.c',
+ 'src/datatemplate.c',
+ 'src/colscale.c',
+ 'src/detgeom.c',
+ 'src/image-cbf.c',
+ 'src/image-hdf5.c',
+ 'src/image-msgpack.c',
+ symop_lex_ch,
+ symop_parse_ch,
+ ]
+
+if fftwdep.found()
+ libcrystfel_sources += 'src/asdf.c'
+endif
+
+configure_file(input : 'config.h.in',
+ output : 'config.h',
+ configuration : conf_data)
+
+libcrystfel_conf_inc = include_directories('.')
+
+libcrystfel = library('crystfel', libcrystfel_sources,
+ include_directories : [libcrystfel_includes, libcrystfel_conf_inc],
+ dependencies : [mdep, utildep, fftwdep, gsldep, zlibdep,
+ hdf5dep, pthreaddep],
+ install : true)
+
+libcrystfeldep = declare_dependency(include_directories : libcrystfel_includes,
+ link_with : libcrystfel)
+
+
+# FIXME: pkgconfig file
+# FIXME: API documents (Doxygen)
+# FIXME: install headers