hkl-4.0.3/0000755000175000017500000000000011402652654007302 500000000000000hkl-4.0.3/NEWS0000644000175000017500000001307711402652607007727 000000000000004.0.3 06-06-2010 * remove the usage.c file to avoid a GPL2-GPL3+ incompatibility * update the documentation * fix warning catched by clang 4.0.2 01-06-2010 * add the ghkl manpage and .desktop file * fix the ghkl quit menuitem bugs 4.0.1 10-05-2010 * fix a few ghkl bugs (.ui files installation) * add a --enable-ghkl=[yes,no] flag to allow compiling the gui interface * do not forgot to link ghkl against gsl. * display by default the preference panel of ghkl. 4.0.0 14-04-2010 * add the autotools buildsystem and remove all other systems. * add a GUI ghkl for testing purpose based on gtkmm. * add the GNU info doc * add the gtk-doc to document the api (work in progress) * new structure for the HklDetector (prepare for 2D detectors) * HklGeometryConfig shared between all equivalent HklGeometries. * fix for 64 bits computers runtime error. * add the HklError class to report calculation errors (not yet used) * new way to set the UB matrix of a sample (hkl_sample_set_UB). * new ZAxis geometry - mode zaxis - mode reflectivity (mu = gamma) 3.0.1 23-10-2009 * add the psi_constant mode to the e4cv, e6c, k4cv and k6c geometries. (thanks teresa) * upgrade the user guide to explain how to add a mode. * the horizontal modes are also valid if omega = +-PI. (e6c, k6c) * remove geometries with an invalid range from the list of solutions. 3.0.0 15-07-2009 * Rewrote from scratch in C with the GSL library. - now most of pseudo axes modes are numeric. So a 6 circles mode is now a real 6 circles mode. * Eulerian 4 circles - PseudoAxisEngine "hkl": "h", "k", "l" * Mode "bissector" * Mode "constant_omega" * Mode "constant_chi" * Mode "constant_phi" * Mode "double_diffraction" - PseudoAxisEngine "psi": "psi" * Mode "psi" * Kappa 4 circles - PseudoAxisEngine "hkl": "h", "k", "l" * Mode "bissector" * Mode "constant_omega" * Mode "constant_chi" * Mode "constant_phi" * Mode "double_diffraction" - PseudoAxisEngine "psi": "psi" * Mode "psi" - PseudoAxisEngien "eulerians": "omega", "chi", "phi" * mode "eulerians" * Eulerian 6 circles - PseudoAxisEngine "hkl": "h", "k", "l" * Mode "bissector_vertical" * Mode "constant_omega_vertical" * Mode "constant_chi_vertical" * Mode "constant_phi_vertical" * Mode "double_diffraction_vertical" * Mode "lifting_detector" * Mode "bissector_horizontal" * Mode "double_diffraction_horizontal" - PseudoAxisEngine "psi": "psi" * Mode "psi" * Kappa 6 circles - PseudoAxisEngine "hkl": "h", "k", "l" * Mode "bissector_vertical" * Mode "constant_omega_vertical" * Mode "constant_chi_vertical" * Mode "constant_phi_vertical" * Mode "double_diffraction_vertical" * Mode "lifting_detector" * Mode "bissector_horizontal" * Mode "constant_phi_horizontal" * Mode "constant_kphi_horizontal" * Mode "double_diffraction_horizontal" - PseudoAxisEngine "psi": "psi" * Mode "psi" - PseudoAxisEngien "eulerians": "omega", "chi", "phi" * mode "eulerians" 2.3.0 24-01-2007 * Refactoring of the sample part. - It is now possible to create different kind of samples easily. - MonoCrystal type. * Diffractometers: - Eulerian 6 Circles. - kappa 4 Circles Vertical. * Refactoring of the PseudoAxe part. - Derived PseudoAxe can be created from an already existing PseudoAxe if the Geometry conversion exist. - Better related PseudoAxes (ex Eulerians on a Kappa) - The PseudoAxe is just a interface, computation is done by the PseudoAxeEngine. - Eulerian 4 Circles Vertical - "th2th" : derived from the twoC - "q2th" : derived from the twoC - "q" : derived from the twoC - kappa 4 Circles Vertical - "omega", "chi", "phi" : eulerian 4 circles Vertical pseudoAxes. - "th2th" : derived from the twoC - "q2th" : derived from the twoC - "q" : derived from the twoC - "psi" : derived from the Eulerian 4 Circlers Vertical. - Eulerian 6 Circles: - "tth" : 2 * theta - "q" : 2 * tau * sin(theta) / lambda - "psi" : derived from the Eulerian 4 Circlers Vertical. - Kappa6C - "omega", "chi", "phi" : derived from the Kappa 4 Circles Vertical. - "tth" derived from the Eulerian6C. - "q" derived from the Eulerian6C. - "psi" : derived from the Eulerian 4 Circlers Vertical. * Refactoring of the Modes. - Derived Mode can be created from an already existing Mode if the Geometry conversion exist. - all Eulerian 4 Circles on the kappa4C, Eulerian6c and Kappa6C diffractometers. 2.2.0 19-06-2006 * Diffractometers: - twoC Vertical. - Eulerian 4 Circles Vertical. - Kappa 6 Circles. * PseudoAxes - twoC - "th2th": omega - 2theta (domega = d2theta / 2) - "q2th" : omega - 2theta (domega = d2theta / 2) but q2th = 2 tau sin(theta) / lambda - "q" : 2 * tau * sin(theta) / lambda - Eulerian 4 Circles Vertical - "th2th": omega - 2theta (domega = d2theta / 2) - "q2th" : omega - 2theta (domega = d2theta / 2) but q2th = 2 tau sin(theta) / lambda - "q" : 2 * tau * sin(theta) / lambda - "psi" : Rotation of the sample oaround the Q vector. * Modes - twoC - "symetric" (omega = theta, 2theta = 2 * theta) - "fix incidence" (omega = free, 2theta = 2 * theta) - Eulerian 4 circles: - "Bissector" - "Delta Theta" - "Constant Omega" - "Constant Chi" - 'Constant Phi" - Kappa6C - all Eulerian 4 Circles modes. hkl-4.0.3/config.h.in0000644000175000017500000001013011402652636011240 00000000000000/* config.h.in. Generated from configure.ac by autoheader. */ /* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP systems. This function is required for `alloca.c' support on those systems. */ #undef CRAY_STACKSEG_END /* Define to 1 if using `alloca.c'. */ #undef C_ALLOCA /* Define to 1 if you have `alloca', as a function or macro. */ #undef HAVE_ALLOCA /* Define to 1 if you have and it should be used (not on Ultrix). */ #undef HAVE_ALLOCA_H /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ #undef HAVE_DOPRNT /* Define to 1 if you have the header file. */ #undef HAVE_FLOAT_H /* Define to 1 if you have the `floor' function. */ #undef HAVE_FLOOR /* Define to 1 if you have the `gettimeofday' function. */ #undef HAVE_GETTIMEOFDAY /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if your system has a GNU libc compatible `malloc' function, and to 0 otherwise. */ #undef HAVE_MALLOC /* Define to 1 if you have the `memmove' function. */ #undef HAVE_MEMMOVE /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the `memset' function. */ #undef HAVE_MEMSET /* Define to 1 if your system has a GNU libc compatible `realloc' function, and to 0 otherwise. */ #undef HAVE_REALLOC /* Define to 1 if you have the `sqrt' function. */ #undef HAVE_SQRT /* Define to 1 if stdbool.h conforms to C99. */ #undef HAVE_STDBOOL_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the `strdup' function. */ #undef HAVE_STRDUP /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if you have the `vprintf' function. */ #undef HAVE_VPRINTF /* Define to 1 if the system has the type `_Bool'. */ #undef HAVE__BOOL /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at runtime. STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION = 0 => direction of growth unknown */ #undef STACK_DIRECTION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Define to 1 if you can safely include both and . */ #undef TIME_WITH_SYS_TIME /* Version number of package */ #undef VERSION /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define to `__inline__' or `__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus #undef inline #endif /* Define to rpl_malloc if the replacement function should be used. */ #undef malloc /* Define to rpl_realloc if the replacement function should be used. */ #undef realloc /* Define to `unsigned int' if does not define. */ #undef size_t hkl-4.0.3/Makefile.am0000644000175000017500000000162211402652607011255 00000000000000## Process this file with automake to produce Makefile.in ACLOCAL_AMFLAGS = -I m4 DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc SUBDIRS = hkl test Documentation if GHKL SUBDIRS += gui endif EXTRA_DIST = hkl.pc.in include_HEADERS = hkl.h pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = hkl.pc ## Generate the Changelog file for the distribution. dist-hook: @if test -d "$(srcdir)/.git"; \ then \ echo Creating ChangeLog && \ ( cd "$(top_srcdir)" && \ echo '# Generated by Makefile. Do not edit.'; echo; \ $(top_srcdir)/config/missing --run git log --stat ) > ChangeLog.tmp \ && mv -f ChangeLog.tmp $(top_distdir)/ChangeLog \ || ( rm -f ChangeLog.tmp ; \ echo Failed to generate ChangeLog >&2 ); \ else \ echo A git clone is required to generate a ChangeLog >&2; \ fihkl-4.0.3/README0000644000175000017500000000031011366756371010106 00000000000000To build you need -PREREQUIRED gsl >= 1.12 (required) http://www.gnu.org/software/gsl/ gtkmm >= 2.18 (required) http://www.gtkmm.org gtk-doc >= 1.9 (optional) http://www.gtk.org/gtk-doc/hkl-4.0.3/TODO0000644000175000017500000000206011402652607007706 00000000000000Roadmap ------- 4.0.0 * HklPseudoAxisEngine "q" -> "qper" and "qpar" * HklAxis degenerated. an axis is degenerated if its position have no effect on the HklPseudoAxis calculus. * HklAxis method to use min/max to check for the validity * HklGeometryList different method to help select a solution. this select solution can depend on the geometry for example the kappa axis must be in one side of the plane. * add a fit on the Hklaxis offsets. * API to put a detector and a sample on the Geometry. * HklSample add the cell volum computation. * HklPseudoAxisEngine "zone" * HklPseudoAxisEngine "custom" for now this pseudoaxis let you select the axis you want to use for the computation. * create a macro to help compare two real the right way fabs(a-b) < epsilon * max(1, abs(a), abs(b)) * ghkl change the color of fitparameter cells if they differ from the current sample values * add an hkl_sample_set_lattice_unit() * use the liboil to speed calculation (in HklVector, HklMatrix and HklQuaternion) * add a .spec file for rpm generation hkl-4.0.3/hkl/0000755000175000017500000000000011402652636010060 500000000000000hkl-4.0.3/hkl/hkl-pseudoaxis-zaxis.h0000644000175000017500000000225511400153354014240 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_PSEUDOAXIS_ZAXIS_H__ #define __HKL_PSEUDOAXIS_ZAXIS_H__ #include HKL_BEGIN_DECLS extern HklPseudoAxisEngine *hkl_pseudo_axis_engine_zaxis_hkl_new(void); HKL_END_DECLS #endif /* __HKL_PSEUDOAXIS_ZAXIS_H__ */ hkl-4.0.3/hkl/hkl-pseudoaxis-common-eulerians.h0000644000175000017500000000231111400153354016350 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_PSEUDOAXIS_COMMON_EULERIANS_H__ #define __HKL_PSEUDOAXIS_COMMON_EULERIANS_H__ #include HKL_BEGIN_DECLS extern HklPseudoAxisEngine *hkl_pseudo_axis_engine_eulerians_new(void); HKL_END_DECLS #endif /* __HKL_PSEUDOAXIS_COMMON_EULERIANS_H__ */ hkl-4.0.3/hkl/hkl-pseudoaxis-common.c0000644000175000017500000000327511400153354014370 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include int hkl_pseudo_axis_engine_init_func(HklPseudoAxisEngineMode *mode, HklPseudoAxisEngine *self, HklGeometry *geometry, HklDetector const *detector, HklSample const *sample) { if (!self || !mode || !geometry || !detector || !sample) return HKL_FAIL; /* update the geometry internals */ hkl_geometry_update(geometry); if(mode->geometry_init) hkl_geometry_free(mode->geometry_init); mode->geometry_init = hkl_geometry_new_copy(geometry); if(mode->detector_init) hkl_detector_free(mode->detector_init); mode->detector_init = hkl_detector_new_copy(detector); if(mode->sample_init) hkl_sample_free(mode->sample_init); mode->sample_init = hkl_sample_new_copy(sample); return HKL_SUCCESS; } hkl-4.0.3/hkl/hkl-pseudoaxis-e6c.h0000644000175000017500000000235311400153354013556 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_PSEUDOAXIS_E6C_H__ #define __HKL_PSEUDOAXIS_E6C_H__ #include HKL_BEGIN_DECLS extern HklPseudoAxisEngine *hkl_pseudo_axis_engine_e6c_hkl_new(void); extern HklPseudoAxisEngine *hkl_pseudo_axis_engine_e6c_psi_new(void); HKL_END_DECLS #endif /* __HKL_PSEUDOAXIS_E6C_H__ */ hkl-4.0.3/hkl/hkl-pseudoaxis-e6c-hkl.c0000644000175000017500000001465711400153354014337 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel * Maria-Teresa Nunez-Pardo-de-Verra * Jens Krüger */ #include #include #include #include /***********************/ /* numerical functions */ /***********************/ static int bissector_horizontal(const gsl_vector *x, void *params, gsl_vector *f) { double mu, omega, gamma; double const *x_data = gsl_vector_const_ptr(x, 0); double *f_data = gsl_vector_ptr(f, 0); RUBh_minus_Q(x_data, params, f_data); mu = x_data[0]; omega = x_data[1]; gamma = x_data[4]; f_data[3] = fmod(omega, M_PI); f_data[4] = gamma - 2 * fmod(mu, M_PI); return GSL_SUCCESS; } static int bissector_vertical(const gsl_vector *x, void *params, gsl_vector *f) { double omega, tth; double const *x_data = gsl_vector_const_ptr(x, 0); double *f_data = gsl_vector_ptr(f, 0); RUBh_minus_Q(x_data, params, f_data); omega = x_data[0]; tth = x_data[3]; f_data[3] = tth - 2 * fmod(omega,M_PI); return GSL_SUCCESS; } /***********************/ /* E6C PseudoAxeEngine */ /***********************/ HklPseudoAxisEngine *hkl_pseudo_axis_engine_e6c_hkl_new(void) { HklPseudoAxisEngine *self; HklPseudoAxisEngineMode *mode; HklParameter h2; HklParameter k2; HklParameter l2; HklParameter psi; self = hkl_pseudo_axis_engine_hkl_new(); /* bissector_vertical */ mode = hkl_pseudo_axis_engine_mode_new( "bissector_vertical", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, bissector_vertical, (size_t)0, (size_t)4, "omega", "chi", "phi", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* constant_omega_vertical */ mode = hkl_pseudo_axis_engine_mode_new( "constant_omega_vertical", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, RUBh_minus_Q_func, (size_t)0, (size_t)3, "chi", "phi", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* constant_chi_vertical */ mode = hkl_pseudo_axis_engine_mode_new( "constant_chi_vertical", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, RUBh_minus_Q_func, (size_t)0, (size_t)3, "omega", "phi", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* constant_phi_vertical */ mode = hkl_pseudo_axis_engine_mode_new( "constant_phi_vertical", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, RUBh_minus_Q_func, (size_t)0, (size_t)3, "omega", "chi", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* lifting_detector_phi */ mode = hkl_pseudo_axis_engine_mode_new( "lifting_detector_phi", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, RUBh_minus_Q_func, (size_t)0, (size_t)3, "phi", "gamma", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* lifting_detector_omega */ mode = hkl_pseudo_axis_engine_mode_new( "lifting_detector_omega", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, RUBh_minus_Q_func, (size_t)0, (size_t)3, "omega", "gamma", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* lifting_detector_mu */ mode = hkl_pseudo_axis_engine_mode_new( "lifting_detector_mu", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, RUBh_minus_Q_func, (size_t)0, (size_t)3, "mu", "gamma", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* double_diffraction vertical*/ hkl_parameter_init(&h2, "h2", -1, 1, 1, HKL_TRUE, HKL_TRUE, NULL, NULL); hkl_parameter_init(&k2, "k2", -1, 1, 1, HKL_TRUE, HKL_TRUE, NULL, NULL); hkl_parameter_init(&l2, "l2", -1, 1, 1, HKL_TRUE, HKL_TRUE, NULL, NULL); mode = hkl_pseudo_axis_engine_mode_new( "double_diffraction_vertical", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, double_diffraction_func, (size_t)3, h2, k2, l2, (size_t)4, "omega", "chi", "phi", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* bissector_horizontal */ mode = hkl_pseudo_axis_engine_mode_new( "bissector_horizontal", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, bissector_horizontal, (size_t)0, (size_t)5, "mu", "omega", "chi", "phi", "gamma"); hkl_pseudo_axis_engine_add_mode(self, mode); /* double_diffraction_horizontal */ mode = hkl_pseudo_axis_engine_mode_new( "double_diffraction_horizontal", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, double_diffraction_func, (size_t)3, h2, k2, l2, (size_t)4, "mu", "chi", "phi", "gamma"); hkl_pseudo_axis_engine_add_mode(self, mode); /* psi_constant_vertical */ hkl_parameter_init(&h2, "h2", -1, 1, 1, HKL_TRUE, HKL_TRUE, NULL, NULL); hkl_parameter_init(&k2, "k2", -1, 0, 1, HKL_TRUE, HKL_TRUE, NULL, NULL); hkl_parameter_init(&l2, "l2", -1, 0, 1, HKL_TRUE, HKL_TRUE, NULL, NULL); hkl_parameter_init(&psi, "psi", -M_PI, 0, M_PI, HKL_TRUE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg); mode = hkl_pseudo_axis_engine_mode_new( "psi_constant_vertical", hkl_pseudo_axis_engine_mode_init_psi_constant_vertical_real, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, psi_constant_vertical_func, (size_t)4, h2, k2, l2, psi, (size_t)4, "omega", "chi", "phi", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); hkl_pseudo_axis_engine_select_mode(self, 0); return self; } hkl-4.0.3/hkl/hkl-pseudoaxis-common-q.c0000644000175000017500000001437211402652607014635 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel * Jens Krüger */ #include #include #include #include #include #include /*****/ /* q */ /*****/ static int q(const gsl_vector *x, void *params, gsl_vector *f) { size_t i; double q; double q0; double tth; double const *x_data; double *f_data; HklPseudoAxisEngine *engine; x_data = gsl_vector_const_ptr(x, 0); f_data = gsl_vector_ptr(f, 0); engine = params; /* update the workspace from x */ for(i=0; iaxes); ++i) hkl_axis_set_value(engine->axes[i], x_data[i]); hkl_geometry_update(engine->geometry); q0 = ((HklParameter *)engine->pseudoAxes[0])->value; tth = gsl_sf_angle_restrict_symm(x_data[0]); q = 2 * HKL_TAU / hkl_source_get_wavelength(&engine->geometry->source) * sin(tth/2.); f_data[0] = q0 - q; return GSL_SUCCESS; } static int hkl_pseudo_axis_engine_mode_get_q_real(HklPseudoAxisEngineMode *self, HklPseudoAxisEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, HklError **error) { double wavelength; double theta; double q; HklInterval range = {0}; HklVector ki, kf; HklParameter *parameter; wavelength = hkl_source_get_wavelength(&geometry->source); hkl_source_compute_ki(&geometry->source, &ki); hkl_detector_compute_kf(detector, geometry, &kf); theta = hkl_vector_angle(&ki, &kf) / 2.; hkl_vector_vectorial_product(&ki, &kf); if(ki.data[1] > 0) theta = -theta; q = 2 * HKL_TAU / wavelength * sin(theta); /* update q */ parameter = (HklParameter *)(engine->pseudoAxes[0]); hkl_parameter_set_value(parameter, q); hkl_parameter_set_range(parameter, range.min, range.max); return HKL_SUCCESS; } HklPseudoAxisEngine *hkl_pseudo_axis_engine_q_new(void) { HklPseudoAxisEngine *self; HklPseudoAxisEngineMode *mode; self = hkl_pseudo_axis_engine_new("q", 1, "q"); /* q */ hkl_parameter_init((HklParameter *)self->pseudoAxes[0], "q", -1, 0., 1, HKL_TRUE, HKL_TRUE, NULL, NULL); /* q */ mode = hkl_pseudo_axis_engine_mode_new( "q", NULL, hkl_pseudo_axis_engine_mode_get_q_real, hkl_pseudo_axis_engine_mode_set_real, 1, q, (size_t)0, (size_t)1, "tth"); hkl_pseudo_axis_engine_add_mode(self, mode); hkl_pseudo_axis_engine_select_mode(self, 0); return self; } /******/ /* q2 */ /******/ static int q2(const gsl_vector *x, void *params, gsl_vector *f) { size_t i; double q0, q; double alpha0, alpha; double wavelength, theta; double const *x_data; double *f_data; HklPseudoAxisEngine *engine; HklVector kf, ki; HklVector X = {{1, 0, 0}}; x_data = gsl_vector_const_ptr(x, 0); f_data = gsl_vector_ptr(f, 0); engine = params; /* update the workspace from x */ for(i=0; iaxes); ++i) hkl_axis_set_value(engine->axes[i], x_data[i]); hkl_geometry_update(engine->geometry); q0 = ((HklParameter *)engine->pseudoAxes[0])->value; alpha0 = ((HklParameter *)engine->pseudoAxes[1])->value; wavelength = hkl_source_get_wavelength(&engine->geometry->source); hkl_source_compute_ki(&engine->geometry->source, &ki); hkl_detector_compute_kf(engine->detector, engine->geometry, &kf); theta = hkl_vector_angle(&ki, &kf) / 2.; q = 2 * HKL_TAU / wavelength * sin(theta); /* project kf on the x plan to compute alpha */ hkl_vector_project_on_plan(&kf, &X); alpha = atan2(kf.data[2], kf.data[1]); f_data[0] = q0 - q; f_data[1] = alpha0 - alpha; return GSL_SUCCESS; } static int hkl_pseudo_axis_engine_mode_get_q2_real(HklPseudoAxisEngineMode *self, HklPseudoAxisEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, HklError **error) { double wavelength; double theta; double q, alpha; HklVector x = {{1, 0, 0}}; HklVector ki, kf; HklParameter *parameter; wavelength = hkl_source_get_wavelength(&geometry->source); hkl_source_compute_ki(&geometry->source, &ki); hkl_detector_compute_kf(detector, geometry, &kf); theta = hkl_vector_angle(&ki, &kf) / 2.; q = 2 * HKL_TAU / wavelength * sin(theta); /* project kf on the x plan to compute alpha */ hkl_vector_project_on_plan(&kf, &x); alpha = atan2(kf.data[2], kf.data[1]); /* update q */ parameter = (HklParameter *)(engine->pseudoAxes[0]); hkl_parameter_set_value(parameter, q); /* update alpha */ parameter = (HklParameter *)(engine->pseudoAxes[1]); hkl_parameter_set_value(parameter, alpha); hkl_parameter_set_range(parameter, -M_PI, M_PI); return HKL_SUCCESS; } HklPseudoAxisEngine *hkl_pseudo_axis_engine_q2_new(void) { HklPseudoAxisEngine *self; HklPseudoAxisEngineMode *mode; self = hkl_pseudo_axis_engine_new("q2", 2, "q", "alpha"); /* q */ hkl_parameter_init((HklParameter *)self->pseudoAxes[0], "q", 0., 0., 1, HKL_TRUE, HKL_TRUE, NULL, NULL); /* alpha */ hkl_parameter_init((HklParameter *)self->pseudoAxes[1], "alpha", -M_PI, 0., M_PI, HKL_TRUE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg); /* q */ mode = hkl_pseudo_axis_engine_mode_new( "q2", NULL, hkl_pseudo_axis_engine_mode_get_q2_real, hkl_pseudo_axis_engine_mode_set_real, 1, q2, (size_t)0, (size_t)2, "gamma", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); hkl_pseudo_axis_engine_select_mode(self, 0); return self; } hkl-4.0.3/hkl/hkl-detector.h0000644000175000017500000000302011400153353012517 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_DETECTOR_H__ #define __HKL_DETECTOR_H__ #include HKL_BEGIN_DECLS typedef struct _HklDetector HklDetector; struct _HklDetector { size_t idx; HklHolder const *holder; }; extern HklDetector *hkl_detector_new(void); extern HklDetector *hkl_detector_new_copy(HklDetector const *src); extern void hkl_detector_free(HklDetector *self); extern void hkl_detector_attach_to_holder(HklDetector *self, HklHolder const *holder); extern int hkl_detector_compute_kf(HklDetector const *self, HklGeometry *g, HklVector *kf); HKL_END_DECLS #endif /* __HKL_DETECTOR_H__ */ hkl-4.0.3/hkl/hkl-interval.h0000644000175000017500000000437611400153353012551 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef _HKL_INTERVAL_H #define _HKL_INTERVAL_H #include HKL_BEGIN_DECLS typedef struct _HklInterval HklInterval; struct _HklInterval { double min; double max; }; extern int hkl_interval_cmp(HklInterval const *self, HklInterval const *interval); extern void hkl_interval_plus_interval(HklInterval *self, HklInterval const *interval); extern void hkl_interval_plus_double(HklInterval *self, double const d); extern void hkl_interval_minus_interval(HklInterval *self, HklInterval const *interval); extern void hkl_interval_minus_double(HklInterval *self, double const d); extern void hkl_interval_times_interval(HklInterval *self, HklInterval const *interval); extern void hkl_interval_times_double(HklInterval *self, double const d); extern void hkl_interval_divides_double(HklInterval *self, double const d); extern int hkl_interval_contain_zero(HklInterval const *self); extern void hkl_interval_cos(HklInterval *self); extern void hkl_interval_acos(HklInterval *self); extern void hkl_interval_sin(HklInterval *self); extern void hkl_interval_asin(HklInterval *self); extern void hkl_interval_tan(HklInterval *self); extern void hkl_interval_atan(HklInterval *self); extern double hkl_interval_length(HklInterval const *self); extern void hkl_interval_angle_restrict_symm(HklInterval *self); HKL_END_DECLS #endif hkl-4.0.3/hkl/hkl-detector-factory.h0000644000175000017500000000240511400153353014172 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_DETECTOR_FACTORY_H__ #define __HKL_DETECTOR_FACTORY_H__ #include HKL_BEGIN_DECLS enum _HklDetectorType { HKL_DETECTOR_TYPE_0D }; typedef enum _HklDetectorType HklDetectorType; extern HklDetector *hkl_detector_factory_new(HklDetectorType type); HKL_END_DECLS #endif /* __HKL_DETECTOR_FACTORY_H__ */ hkl-4.0.3/hkl/hkl-quaternion.h0000644000175000017500000000421111366756371013122 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_QUATERNION_H__ #define __HKL_QUATERNION_H__ #include #include #include #include #include HKL_BEGIN_DECLS struct _HklQuaternion { double data[4]; }; extern void hkl_quaternion_init(HklQuaternion *self, double a, double b, double c, double d); extern void hkl_quaternion_init_from_vector(HklQuaternion *self, const HklVector *v); extern void hkl_quaternion_init_from_angle_and_axe(HklQuaternion *self, double angle, const HklVector *v); extern void hkl_quaternion_fprintf(FILE *file, const HklQuaternion *self); extern int hkl_quaternion_cmp(const HklQuaternion *self, const HklQuaternion *q); extern void hkl_quaternion_minus_quaternion(HklQuaternion *self, const HklQuaternion *q); extern void hkl_quaternion_times_quaternion(HklQuaternion *self, const HklQuaternion *q); extern double hkl_quaternion_norm2(const HklQuaternion *self); extern void hkl_quaternion_conjugate(HklQuaternion *self); extern void hkl_quaternion_to_matrix(const HklQuaternion *self, HklMatrix *m); extern void hkl_quaternion_to_angle_and_axe(const HklQuaternion *self, double *angle, HklVector *v); HKL_END_DECLS #endif hkl-4.0.3/hkl/hkl-pseudoaxis-k4cv-psi.c0000644000175000017500000000272311400153354014535 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include HklPseudoAxisEngine *hkl_pseudo_axis_engine_k4cv_psi_new(void) { HklPseudoAxisEngine *self; HklPseudoAxisEngineModePsi *mode; char const *axes_names_psi[] = {"komega", "kappa", "kphi", "tth"}; self = hkl_pseudo_axis_engine_psi_new(); /* psi get/set */ mode = hkl_pseudo_axis_engine_mode_psi_new("psi", 4, axes_names_psi); hkl_pseudo_axis_engine_add_mode(self, (HklPseudoAxisEngineMode *)mode); hkl_pseudo_axis_engine_select_mode(self, 0); return self; } hkl-4.0.3/hkl/hkl-detector-factory.c0000644000175000017500000000224711400153353014171 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include HklDetector *hkl_detector_factory_new(HklDetectorType type) { HklDetector *detector = NULL; switch(type) { case HKL_DETECTOR_TYPE_0D: detector = hkl_detector_new(); break; } return detector; } hkl-4.0.3/hkl/hkl-pseudoaxis-e4cv-psi.c0000644000175000017500000000271711400153354014532 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include HklPseudoAxisEngine *hkl_pseudo_axis_engine_e4cv_psi_new(void) { HklPseudoAxisEngine *self; HklPseudoAxisEngineModePsi *mode; char const *axes_names_psi[] = {"omega", "chi", "phi", "tth"}; self = hkl_pseudo_axis_engine_psi_new(); /* psi get/set */ mode = hkl_pseudo_axis_engine_mode_psi_new("psi", 4, axes_names_psi); hkl_pseudo_axis_engine_add_mode(self, (HklPseudoAxisEngineMode *)mode); hkl_pseudo_axis_engine_select_mode(self, 0); return self; } hkl-4.0.3/hkl/Makefile.am0000644000175000017500000000361611402652607012040 00000000000000## Process this file with automake to produce Makefile.in AM_LDFLAGS = -no-undefined -version-info 4:0:0 AM_LDFLAGS += $(GSL_LIBS) AM_CFLAGS = -Wmissing-declarations -std=c89 -ansi -pedantic \ -I$(top_srcdir) \ $(GSL_CFLAGS) lib_LTLIBRARIES = \ libhkl.la libhkl_la_SOURCES = \ hkl-error.c \ hkl-axis.c \ hkl-detector.c \ hkl-detector-factory.c \ hkl-geometry.c \ hkl-geometry-factory.c \ hkl-interval.c \ hkl-lattice.c \ hkl-macros.c \ hkl-matrix.c \ hkl-parameter.c \ hkl-pseudoaxis.c \ hkl-pseudoaxis-auto.c \ hkl-pseudoaxis-common.c \ hkl-pseudoaxis-common-eulerians.c \ hkl-pseudoaxis-common-hkl.c \ hkl-pseudoaxis-common-psi.c \ hkl-pseudoaxis-common-q.c \ hkl-pseudoaxis-e4cv-hkl.c \ hkl-pseudoaxis-e4cv-psi.c \ hkl-pseudoaxis-e6c-hkl.c \ hkl-pseudoaxis-e6c-psi.c \ hkl-pseudoaxis-factory.c \ hkl-pseudoaxis-k4cv-hkl.c \ hkl-pseudoaxis-k4cv-psi.c \ hkl-pseudoaxis-k6c-hkl.c \ hkl-pseudoaxis-k6c-psi.c \ hkl-pseudoaxis-zaxis-hkl.c \ hkl-quaternion.c \ hkl-sample.c \ hkl-source.c \ hkl-unit.c \ hkl-vector.c hklincludedir=$(includedir)/hkl hklinclude_HEADERS = \ hkl-axis.h \ hkl-detector.h \ hkl-detector-factory.h \ hkl-error.h \ hkl-geometry.h \ hkl-geometry-factory.h \ hkl-interval.h \ hkl-parameter.h \ hkl-lattice.h \ hkl-list.h \ hkl-macros.h \ hkl-matrix.h \ hkl-pseudoaxis.h \ hkl-pseudoaxis-auto.h \ hkl-pseudoaxis-common.h \ hkl-pseudoaxis-common-eulerians.h \ hkl-pseudoaxis-common-hkl.h \ hkl-pseudoaxis-common-psi.h \ hkl-pseudoaxis-common-q.h \ hkl-pseudoaxis-e4cv.h \ hkl-pseudoaxis-e6c.h \ hkl-pseudoaxis-factory.h \ hkl-pseudoaxis-k4cv.h \ hkl-pseudoaxis-k6c.h \ hkl-pseudoaxis-zaxis.h \ hkl-quaternion.h \ hkl-sample.h \ hkl-source.h \ hkl-unit.h \ hkl-vector.h # Support for GNU Flymake, in Emacs. check-syntax: AM_CFLAGS += -fsyntax-only -pipe check-syntax: test -z "$(CHK_SOURCES)" || $(COMPILE) $(CHK_SOURCES) .PHONY: check-syntax hkl-4.0.3/hkl/hkl-axis.c0000644000175000017500000001460011400153353011653 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include #include #include #include /***********/ /* HklAxis */ /***********/ static void hkl_axis_update(HklAxis *self) { hkl_quaternion_init_from_angle_and_axe(&self->q, ((HklParameter *)self)->value, &self->axis_v); } /* * given a current position of angle a min and max interval find the closest * equivalent angle + n delta_angle in a given direction. * CAUSION angle MUST be in [min, max] otherwise... */ static void find_angle(double current, double *angle, double *distance, double min, double max, double delta_angle) { double new_angle = *angle; double new_distance; while(new_angle >= min && new_angle <= max) { new_distance = fabs(new_angle - current); if (new_distance <= *distance) { *angle = new_angle; *distance = new_distance; } new_angle += delta_angle; } } /* * check if the angle or its equivalent is in between [min, max] */ int hkl_axis_is_value_compatible_with_range(HklAxis const *self) { double value; int res = HKL_FALSE; HklInterval range; value = ((HklParameter *)self)->value; range = ((HklParameter *)self)->range; if(hkl_interval_length(&range) > 2*M_PI) res = HKL_TRUE; else{ hkl_interval_angle_restrict_symm(&range); value = gsl_sf_angle_restrict_symm(value); if(range.min <= range.max){ if(range.min <= value && range.max >= value) res = HKL_TRUE; }else{ if(value <= range.max || value >= range.min) res = HKL_TRUE; } } return res; } HklAxis *hkl_axis_new(char const *name, HklVector const *axis_v) { HklAxis *self = NULL; self = HKL_MALLOC(HklAxis); hkl_axis_init(self, name, axis_v); return self; } void hkl_axis_free(HklAxis *self) { if(self) free(self); } void hkl_axis_init(HklAxis *self, char const * name, HklVector const *axis_v) { static HklQuaternion q0 = {{1, 0, 0, 0}}; /* base initializer */ hkl_parameter_init((HklParameter *)self, name, -M_PI, 0, M_PI, HKL_TRUE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg); self->axis_v = *axis_v; self->q = q0; } char const *hkl_axis_get_name(HklAxis const *self) { return ((HklParameter *)self)->name; } int hkl_axis_get_changed(HklAxis const *self) { return ((HklParameter *)self)->changed; } void hkl_axis_set_changed(HklAxis *self, int changed) { ((HklParameter *)self)->changed = changed; } double hkl_axis_get_value(HklAxis const *self) { return ((HklParameter *)self)->value; } double hkl_axis_get_value_unit(HklAxis const *self) { return hkl_parameter_get_value_unit((HklParameter *)self); } double hkl_axis_get_value_closest(HklAxis const *self, HklAxis const *axis) { double angle = ((HklParameter *)self)->value; if(hkl_axis_is_value_compatible_with_range(self)){ if(hkl_interval_length(&((HklParameter *)self)->range) >= 2*M_PI){ int k; double current = ((HklParameter *)axis)->value; double distance = fabs(current - angle); double delta = 2. * M_PI; double min = ((HklParameter *)self)->range.min; double max = ((HklParameter *)self)->range.max; /* three cases */ if (angle > max) { k = (int)(floor((max - angle) / delta)); angle += k * delta; find_angle(current, &angle, &distance, min, max, -delta); } else if (angle < min) { k = (int) (ceil((min - angle) / delta)); angle += k * delta; find_angle(current, &angle, &distance, min, max, delta); } else { find_angle(current, &angle, &distance, min, max, -delta); find_angle(current, &angle, &distance, min, max, delta); } } }else angle = GSL_NAN; return angle; } double hkl_axis_get_value_closest_unit(HklAxis const *self, HklAxis const *axis) { double factor = hkl_unit_factor(((HklParameter *)self)->unit, ((HklParameter *)self)->punit); return factor * hkl_axis_get_value_closest(self, axis); } double hkl_axis_get_max(HklAxis const *self) { return hkl_parameter_get_max((HklParameter *)self); } void hkl_axis_get_range_unit(HklAxis const *self, double *min, double *max) { hkl_parameter_get_range_unit((HklParameter *)self, min, max); } void hkl_axis_set_value(HklAxis *self, double value) { hkl_parameter_set_value((HklParameter *)self, value); hkl_axis_update(self); } void hkl_axis_set_value_smallest_in_range(HklAxis *self) { double value, min; value = ((HklParameter *)self)->value; min = ((HklParameter *)self)->range.min; if(value < min) hkl_axis_set_value(self, value + 2*M_PI*ceil((min - value)/(2*M_PI))); else hkl_axis_set_value(self, value - 2*M_PI*floor((value - min)/(2*M_PI))); } void hkl_axis_set_value_unit(HklAxis *self, double value) { hkl_parameter_set_value_unit((HklParameter *)self, value); hkl_axis_update(self); } void hkl_axis_set_range(HklAxis *self, double min, double max) { hkl_parameter_set_range((HklParameter *)self, min, max); } void hkl_axis_set_range_unit(HklAxis *self, double min, double max) { hkl_parameter_set_range_unit((HklParameter *)self, min, max); } void hkl_axis_randomize(HklAxis *self) { hkl_parameter_randomize((HklParameter *)self); hkl_axis_update(self); } void hkl_axis_get_quaternion(HklAxis const *self, HklQuaternion *q) { hkl_quaternion_init_from_angle_and_axe(q, ((HklParameter *)self)->value, &self->axis_v); } int hkl_axis_is_valid(const HklAxis *self) { return hkl_parameter_is_valid((HklParameter *)self); } void hkl_axis_fprintf(FILE *f, HklAxis *self) { hkl_parameter_fprintf(f, (HklParameter *)self); hkl_vector_fprintf(f, &self->axis_v); hkl_quaternion_fprintf(f, &self->q); } hkl-4.0.3/hkl/hkl-pseudoaxis-common-hkl.c0000644000175000017500000002206111402652607015145 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel * Maria-Teresa Nunez-Pardo-de-Verra */ #include #include #include #include #include #include /***************************************/ /* common methode use by getter/setter */ /***************************************/ int RUBh_minus_Q_func(const gsl_vector *x, void *params, gsl_vector *f) { double const *x_data = gsl_vector_const_ptr(x, 0); double *f_data = gsl_vector_ptr(f, 0); RUBh_minus_Q(x_data, params, f_data); return GSL_SUCCESS; } int RUBh_minus_Q(double const x[], void *params, double f[]) { HklVector Hkl; HklVector ki, dQ; HklPseudoAxisEngine *engine; HklHolder *holder; size_t i; engine = params; /* update the workspace from x; */ for(i=0; iaxes); ++i) hkl_axis_set_value(engine->axes[i], x[i]); hkl_geometry_update(engine->geometry); hkl_vector_init(&Hkl, ((HklParameter *)engine->pseudoAxes[0])->value, ((HklParameter *)engine->pseudoAxes[1])->value, ((HklParameter *)engine->pseudoAxes[2])->value); /* R * UB * h = Q */ /* for now the 0 holder is the sample holder. */ holder = &engine->geometry->holders[0]; hkl_matrix_times_vector(&engine->sample->UB, &Hkl); hkl_vector_rotated_quaternion(&Hkl, &holder->q); /* kf - ki = Q */ hkl_source_compute_ki(&engine->geometry->source, &ki); hkl_detector_compute_kf(engine->detector, engine->geometry, &dQ); hkl_vector_minus_vector(&dQ, &ki); hkl_vector_minus_vector(&dQ, &Hkl); f[0] = dQ.data[0]; f[1] = dQ.data[1]; f[2] = dQ.data[2]; return GSL_SUCCESS; } int hkl_pseudo_axis_engine_mode_get_hkl_real(HklPseudoAxisEngineMode *self, HklPseudoAxisEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, HklError **error) { HklHolder *holder; HklMatrix RUB; HklVector hkl, ki, Q; double min, max; size_t i; /* update the geometry internals */ hkl_geometry_update(geometry); /* R * UB */ /* for now the 0 holder is the sample holder. */ holder = &geometry->holders[0]; hkl_quaternion_to_matrix(&holder->q, &RUB); hkl_matrix_times_matrix(&RUB, &sample->UB); /* kf - ki = Q */ hkl_source_compute_ki(&geometry->source, &ki); hkl_detector_compute_kf(detector, geometry, &Q); hkl_vector_minus_vector(&Q, &ki); hkl_matrix_solve(&RUB, &hkl, &Q); /* compute the min and max */ min = -1; max = 1; /* update the pseudoAxes config part */ for(i=0;ipseudoAxes);++i){ HklParameter *parameter = (HklParameter *)(engine->pseudoAxes[i]); parameter->value = hkl.data[i]; parameter->range.min = min; parameter->range.max = max; } return HKL_SUCCESS; } /***************************************/ /* the double diffraction get set part */ /***************************************/ int double_diffraction_func(gsl_vector const *x, void *params, gsl_vector *f) { double const *x_data = gsl_vector_const_ptr(x, 0); double *f_data = gsl_vector_ptr(f, 0); double_diffraction(x_data, params, f_data); return GSL_SUCCESS; } int double_diffraction(double const x[], void *params, double f[]) { HklPseudoAxisEngine *engine = params; HklVector hkl, kf2; HklVector ki; HklVector dQ; size_t i; HklHolder *holder; /* update the workspace from x; */ for(i=0; iaxes); ++i) hkl_axis_set_value(engine->axes[i], x[i]); hkl_geometry_update(engine->geometry); hkl_vector_init(&hkl, ((HklParameter *)engine->pseudoAxes[0])->value, ((HklParameter *)engine->pseudoAxes[1])->value, ((HklParameter *)engine->pseudoAxes[2])->value); hkl_vector_init(&kf2, engine->mode->parameters[0].value, engine->mode->parameters[1].value, engine->mode->parameters[2].value); /* R * UB * hkl = Q */ /* for now the 0 holder is the sample holder. */ holder = &engine->geometry->holders[0]; hkl_matrix_times_vector(&engine->sample->UB, &hkl); hkl_vector_rotated_quaternion(&hkl, &holder->q); /* kf - ki = Q */ hkl_source_compute_ki(&engine->geometry->source, &ki); hkl_detector_compute_kf(engine->detector, engine->geometry, &dQ); hkl_vector_minus_vector(&dQ, &ki); hkl_vector_minus_vector(&dQ, &hkl); /* R * UB * hlk2 = Q2 */ hkl_matrix_times_vector(&engine->sample->UB, &kf2); hkl_vector_rotated_quaternion(&kf2, &holder->q); hkl_vector_add_vector(&kf2, &ki); f[0] = dQ.data[0]; f[1] = dQ.data[1]; f[2] = dQ.data[2]; f[3] = hkl_vector_norm2(&kf2) - hkl_vector_norm2(&ki); return GSL_SUCCESS; } /******************************************/ /* the psi_constant_vertical get set part */ /******************************************/ int psi_constant_vertical_func(gsl_vector const *x, void *params, gsl_vector *f) { double const *x_data = gsl_vector_const_ptr(x, 0); double *f_data = gsl_vector_ptr(f, 0); HklVector hkl; HklVector ki, kf, Q, n; HklPseudoAxisEngine *engine; size_t i; RUBh_minus_Q(x_data, params, f_data); engine = params; /* update the workspace from x; */ for(i=0; iaxes); ++i) hkl_axis_set_value(engine->axes[i], x_data[i]); hkl_geometry_update(engine->geometry); hkl_vector_init(&hkl, 1, 0, 0); /* kf - ki = Q */ hkl_source_compute_ki(&engine->geometry->source, &ki); hkl_detector_compute_kf(engine->detector, engine->geometry, &kf); Q = kf; hkl_vector_minus_vector(&Q, &ki); hkl_vector_normalize(&Q); n = kf; hkl_vector_vectorial_product(&n, &ki); hkl_vector_vectorial_product(&n, &Q); hkl_vector_times_matrix(&hkl, &engine->sample->UB); hkl_vector_rotated_quaternion(&hkl, &engine->geometry->holders[0].q); /* project hkl on the plan of normal Q */ hkl_vector_project_on_plan(&hkl, &Q); f_data[3] = engine->mode->parameters[3].value - hkl_vector_oriented_angle(&n, &hkl, &Q); return GSL_SUCCESS; } int hkl_pseudo_axis_engine_mode_init_psi_constant_vertical_real(HklPseudoAxisEngineMode *self, HklPseudoAxisEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, HklError **error) { HklVector hkl; HklVector ki, kf, Q, n; int status = HKL_SUCCESS; if (!self || !engine || !engine->mode || !geometry || !detector || !sample){ status = HKL_FAIL; return status; } status = hkl_pseudo_axis_engine_init_func(self, engine, geometry, detector, sample); if(status == HKL_FAIL) return status; /* Compute the constant psi value (to be kept) */ hkl_vector_init(&hkl, 1, 0, 0); /* kf - ki = Q */ hkl_source_compute_ki(&geometry->source, &ki); hkl_detector_compute_kf(detector, geometry, &kf); Q = kf; hkl_vector_minus_vector(&Q, &ki); if (hkl_vector_is_null(&Q)) status = HKL_FAIL; else{ /* needed for a problem of precision */ hkl_vector_normalize(&Q); /* compute the intersection of the plan P(kf, ki) and PQ (normal Q) */ n = kf; hkl_vector_vectorial_product(&n, &ki); hkl_vector_vectorial_product(&n, &Q); /* compute hkl in the laboratory referentiel */ /* the geometry was already updated in the detector compute kf */ /* for now the 0 holder is the sample holder */ hkl.data[0] = self->parameters[0].value; hkl.data[1] = self->parameters[1].value; hkl.data[2] = self->parameters[2].value; hkl_vector_times_matrix(&hkl, &sample->UB); hkl_vector_rotated_quaternion(&hkl, &geometry->holders[0].q); /* project hkl on the plan of normal Q */ hkl_vector_project_on_plan(&hkl, &Q); if (hkl_vector_is_null(&hkl)) status = HKL_FAIL; else /* compute the angle beetween hkl and n and * store in in the fourth parameter */ hkl_parameter_set_value(&self->parameters[3], hkl_vector_oriented_angle(&n, &hkl, &Q)); } return status; } HklPseudoAxisEngine *hkl_pseudo_axis_engine_hkl_new(void) { HklPseudoAxisEngine *self; self = hkl_pseudo_axis_engine_new("hkl", 3, "h", "k", "l"); /* h */ hkl_parameter_init((HklParameter *)self->pseudoAxes[0], "h", -1, 0., 1, HKL_TRUE, HKL_TRUE, NULL, NULL); /* k */ hkl_parameter_init((HklParameter *)self->pseudoAxes[1], "k", -1, 0., 1, HKL_TRUE, HKL_TRUE, NULL, NULL); /* l */ hkl_parameter_init((HklParameter *)self->pseudoAxes[2], "l", -1, 0., 1, HKL_TRUE, HKL_TRUE, NULL, NULL); return self; } hkl-4.0.3/hkl/hkl-lattice.c0000644000175000017500000002503711402650337012350 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include "hkl/hkl-lattice.h" #include "hkl/hkl-unit.h" /* private */ static int check_lattice_param(double a, double b, double c, double alpha, double beta, double gamma) { double D = 1. - cos(alpha)*cos(alpha) - cos(beta)*cos(beta) - cos(gamma)*cos(gamma) + 2. * cos(alpha)*cos(beta)*cos(gamma); if (D < 0.) return HKL_FAIL; else return HKL_SUCCESS; } /* public */ HklLattice *hkl_lattice_new(double a, double b, double c, double alpha, double beta, double gamma) { HklLattice *self = NULL; if(!check_lattice_param(a, b, c, alpha, beta, gamma)) { self = HKL_MALLOC(HklLattice); self->a = hkl_parameter_new("a", 0, a, a+10, HKL_TRUE, HKL_TRUE, &hkl_unit_length_nm, &hkl_unit_length_nm); self->b = hkl_parameter_new("b", 0, b, b+10, HKL_TRUE, HKL_TRUE, &hkl_unit_length_nm, &hkl_unit_length_nm); self->c = hkl_parameter_new("c", 0, c, c+10, HKL_TRUE, HKL_TRUE, &hkl_unit_length_nm, &hkl_unit_length_nm); self->alpha = hkl_parameter_new("alpha", -M_PI, alpha, M_PI, HKL_TRUE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg); self->beta = hkl_parameter_new("beta", -M_PI, beta, M_PI, HKL_TRUE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg); self->gamma = hkl_parameter_new("gamma", -M_PI, gamma, M_PI, HKL_TRUE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg); } return self; } HklLattice *hkl_lattice_new_copy(HklLattice const *self) { HklLattice *copy = NULL; copy = HKL_MALLOC(HklLattice); copy->a = hkl_parameter_new_copy(self->a); copy->b = hkl_parameter_new_copy(self->b); copy->c = hkl_parameter_new_copy(self->c); copy->alpha = hkl_parameter_new_copy(self->alpha); copy->beta = hkl_parameter_new_copy(self->beta); copy->gamma = hkl_parameter_new_copy(self->gamma); return copy; } HklLattice* hkl_lattice_new_default(void) { return hkl_lattice_new(1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD); } void hkl_lattice_free(HklLattice *self) { hkl_parameter_free(self->a); hkl_parameter_free(self->b); hkl_parameter_free(self->c); hkl_parameter_free(self->alpha); hkl_parameter_free(self->beta); hkl_parameter_free(self->gamma); free(self); } int hkl_lattice_set(HklLattice *self, double a, double b, double c, double alpha, double beta, double gamma) { int res = HKL_FAIL; if(!check_lattice_param(a, b, c, alpha, beta, gamma)) { self->a->value = a; self->b->value = b; self->c->value = c; self->alpha->value = alpha; self->beta->value = beta; self->gamma->value = gamma; res = HKL_SUCCESS; } return res; } /* * Get the B matrix from the l parameters */ int hkl_lattice_get_B(HklLattice const *self, HklMatrix *B) { double D; double c_alpha, s_alpha; double c_beta, s_beta; double c_gamma, s_gamma; double b11, b22, tmp; c_alpha = cos(self->alpha->value); c_beta = cos(self->beta->value); c_gamma = cos(self->gamma->value); D = 1 - c_alpha*c_alpha - c_beta*c_beta - c_gamma*c_gamma + 2*c_alpha*c_beta*c_gamma; if (D > 0.) D = sqrt(D); else return HKL_FAIL; s_alpha = sin(self->alpha->value); s_beta = sin(self->beta->value); s_gamma = sin(self->gamma->value); b11 = HKL_TAU / (self->b->value * s_alpha); b22 = HKL_TAU / self->c->value; tmp = b22 / s_alpha; B->data[0][0] = HKL_TAU * s_alpha / (self->a->value * D); B->data[0][1] = b11 / D * (c_alpha*c_beta - c_gamma); B->data[0][2] = tmp / D * (c_gamma*c_alpha - c_beta); B->data[1][0] = 0; B->data[1][1] = b11; B->data[1][2] = tmp / (s_beta*s_gamma) * (c_beta*c_gamma - c_alpha); B->data[2][0] = 0; B->data[2][1] = 0; B->data[2][2] = b22; return HKL_SUCCESS; } /** * hkl_lattice_get_1_B: * @self: the @HklLattice * @B: the @HklMatrix returned * * Compute the invert of B (needed by the hkl_sample_set_UB method) * should be optimized * * Returns: HKL_SUCCESS or HKL_FAIL depending of the success of the * computation. **/ int hkl_lattice_get_1_B(const HklLattice *self, HklMatrix *B) { HklMatrix tmp; double a; double b; double c; double d; double e; double f; if(!self || !B) return HKL_FAIL; /* * first compute the B matrix * | a b c | * | 0 d e | * | 0 0 f | */ hkl_lattice_get_B(self, &tmp); /* * now invert this triangular matrix */ a = tmp.data[0][0]; b = tmp.data[0][1]; c = tmp.data[0][2]; d = tmp.data[1][1]; e = tmp.data[1][2]; f = tmp.data[2][2]; B->data[0][0] = 1 / a; B->data[0][1] = -b / a / d; B->data[0][2] = (b * e - d * c) / a / d / f; B->data[1][0] = 0; B->data[1][1] = 1 / d; B->data[1][2] = -e / d / f; B->data[2][0] = 0; B->data[2][1] = 0; B->data[2][2] = 1 / f; return HKL_SUCCESS; } int hkl_lattice_reciprocal(HklLattice const *self, HklLattice *reciprocal) { double c_alpha, c_beta, c_gamma; double s_alpha, s_beta, s_gamma; double c_beta1, c_beta2, c_beta3; double s_beta1, s_beta2, s_beta3; double s_beta_s_gamma, s_gamma_s_alpha, s_alpha_s_beta; double D; c_alpha = cos(self->alpha->value); c_beta = cos(self->beta->value); c_gamma = cos(self->gamma->value); D = 1 - c_alpha*c_alpha - c_beta*c_beta - c_gamma*c_gamma + 2*c_alpha*c_beta*c_gamma; if (D > 0.) D = sqrt(D); else return HKL_FAIL; s_alpha = sin(self->alpha->value); s_beta = sin(self->beta->value); s_gamma = sin(self->gamma->value); s_beta_s_gamma = s_beta * s_gamma; s_gamma_s_alpha = s_gamma * s_alpha; s_alpha_s_beta = s_alpha * s_beta; c_beta1 = (c_beta * c_gamma - c_alpha) / s_beta_s_gamma; c_beta2 = (c_gamma * c_alpha - c_beta) / s_gamma_s_alpha; c_beta3 = (c_alpha * c_beta - c_gamma) / s_alpha_s_beta; s_beta1 = D / s_beta_s_gamma; s_beta2 = D / s_gamma_s_alpha; s_beta3 = D / s_alpha_s_beta; reciprocal->a->value = HKL_TAU * s_alpha / (self->a->value * D); reciprocal->b->value = HKL_TAU * s_beta / (self->b->value * D); reciprocal->c->value = HKL_TAU * s_gamma / (self->c->value * D); reciprocal->alpha->value = atan2(s_beta1, c_beta1); reciprocal->beta->value = atan2(s_beta2, c_beta2); reciprocal->gamma->value = atan2(s_beta3, c_beta3); return HKL_SUCCESS; } void hkl_lattice_randomize(HklLattice *self) { static HklVector vector_x = {{1, 0, 0}}; HklVector a, b, c; HklVector axe; unsigned int angles_to_randomize; /* La valeur des angles alpha, beta et gamma ne sont pas indépendant. */ /* Il faut donc gérer les différents cas. */ hkl_parameter_randomize(self->a); hkl_parameter_randomize(self->b); hkl_parameter_randomize(self->c); angles_to_randomize = self->alpha->fit + self->beta->fit + self->gamma->fit; switch (angles_to_randomize) { case 0: break; case 1: if (self->alpha->fit) { /* alpha */ a = b = c = vector_x; /* randomize b */ hkl_vector_randomize_vector(&axe, &a); hkl_vector_rotated_around_vector(&b, &axe, self->gamma->value); /* randomize c */ hkl_vector_randomize_vector(&axe, &a); hkl_vector_rotated_around_vector(&c, &axe, self->beta->value); /* compute the alpha angle. */ self->alpha->value = hkl_vector_angle(&b, &c); } else if (self->beta->fit) { /* beta */ a = b = vector_x; /* randomize b */ hkl_vector_randomize_vector(&axe, &a); hkl_vector_rotated_around_vector(&b, &axe, self->gamma->value); /* randomize c */ c = b; hkl_vector_randomize_vector(&axe, &b); hkl_vector_rotated_around_vector(&c, &axe, self->alpha->value); /* compute beta */ self->beta->value = hkl_vector_angle(&a, &c); } else { /* gamma */ a = c = vector_x; /* randomize c */ hkl_vector_randomize_vector(&axe, &a); hkl_vector_rotated_around_vector(&c, &axe, self->beta->value); /* randomize b */ b = c; hkl_vector_randomize_vector(&axe, &c); hkl_vector_rotated_around_vector(&b, &axe, self->alpha->value); /* compute gamma */ self->gamma->value = hkl_vector_angle(&a, &b); } break; case 2: if (self->alpha->fit) { if (self->beta->fit) { /* alpha + beta */ a = b = vector_x; /* randomize b */ hkl_vector_randomize_vector(&axe, &a); hkl_vector_rotated_around_vector(&b, &axe, self->gamma->value); /* randomize c */ hkl_vector_randomize_vector_vector(&c, &a, &b); self->alpha->value = hkl_vector_angle(&b, &c); self->beta->value = hkl_vector_angle(&a, &c); } else { /* alpha + gamma */ a = c = vector_x; /* randomize c */ hkl_vector_randomize_vector(&axe, &a); hkl_vector_rotated_around_vector(&c, &axe, self->beta->value); /* randomize c */ hkl_vector_randomize_vector_vector(&b, &a, &c); self->alpha->value = hkl_vector_angle(&b, &c); self->gamma->value = hkl_vector_angle(&a, &b); } } else { /* beta + gamma */ b = c = vector_x; /* randomize c */ hkl_vector_randomize_vector(&axe, &b); hkl_vector_rotated_around_vector(&c, &axe, self->alpha->value); /* randomize c */ hkl_vector_randomize_vector_vector(&a, &b, &c); self->beta->value = hkl_vector_angle(&a, &c); self->gamma->value = hkl_vector_angle(&a, &b); } break; case 3: hkl_vector_randomize(&a); hkl_vector_randomize_vector(&b, &a); hkl_vector_randomize_vector_vector(&c, &b, &a); self->alpha->value = hkl_vector_angle(&b, &c); self->beta->value = hkl_vector_angle(&a, &c); self->gamma->value = hkl_vector_angle(&a, &b); break; } } void hkl_lattice_fprintf(FILE *f, HklLattice const *self) { fprintf(f, "\n"); hkl_parameter_fprintf(f, self->a); fprintf(f, "\n"); hkl_parameter_fprintf(f, self->b); fprintf(f, "\n"); hkl_parameter_fprintf(f, self->c); fprintf(f, "\n"); hkl_parameter_fprintf(f, self->alpha); fprintf(f, "\n"); hkl_parameter_fprintf(f, self->beta); fprintf(f, "\n"); hkl_parameter_fprintf(f, self->gamma); } hkl-4.0.3/hkl/hkl-detector.c0000644000175000017500000000355111400153353012523 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include HklDetector *hkl_detector_new(void) { HklDetector *self = NULL; self = HKL_MALLOC(HklDetector); self->idx = 0; self->holder = NULL; return self; } HklDetector *hkl_detector_new_copy(HklDetector const *src) { HklDetector *self; self = HKL_MALLOC(HklDetector); self->idx = src->idx; self->holder = src->holder; return self; } void hkl_detector_free(HklDetector *self) { if(self) free(self); } void hkl_detector_attach_to_holder(HklDetector *self, HklHolder const *holder) { if(!self || !holder) return; self->holder = holder; } int hkl_detector_compute_kf(HklDetector const *self, HklGeometry *g, HklVector *kf) { HklHolder *holder; hkl_geometry_update(g); holder = &g->holders[self->idx]; if (holder) { hkl_vector_init(kf, HKL_TAU / g->source.wave_length, 0, 0); hkl_vector_rotated_quaternion(kf, &holder->q); return HKL_SUCCESS; } else return HKL_FAIL; } hkl-4.0.3/hkl/hkl-macros.c0000644000175000017500000000263711402650337012210 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include void hkl_printbt(void) { void *array[20]; int size; char **strings; int i; size = backtrace(array, 20); strings = backtrace_symbols(array, size); printf("Got a backtrace:\n"); for(i=0; i. * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include /* gsl_nan()! */ #include int hkl_unit_compatible(HklUnit const *self, HklUnit const * unit) { int res = HKL_TRUE; if (self && unit){ switch(self->type){ case HKL_UNIT_ANGLE_DEG: switch(unit->type){ case HKL_UNIT_ANGLE_DEG: case HKL_UNIT_ANGLE_RAD: break; default: res = HKL_FALSE; break; } break; case HKL_UNIT_ANGLE_RAD: switch(unit->type){ case HKL_UNIT_ANGLE_DEG: case HKL_UNIT_ANGLE_RAD: break; default: res = HKL_FALSE; break; } break; case HKL_UNIT_LENGTH_NM: switch(unit->type){ case HKL_UNIT_LENGTH_NM: break; default: res = HKL_FALSE; break; } } } return res; } double hkl_unit_factor(HklUnit const *self, HklUnit const *unit) { double factor = 1.; if (self && unit){ switch(self->type){ case HKL_UNIT_ANGLE_DEG: switch(unit->type){ case HKL_UNIT_ANGLE_DEG: break; case HKL_UNIT_ANGLE_RAD: factor = HKL_DEGTORAD; break; default: factor = GSL_NAN; break; } break; case HKL_UNIT_ANGLE_RAD: switch(unit->type){ case HKL_UNIT_ANGLE_DEG: factor = HKL_RADTODEG; break; case HKL_UNIT_ANGLE_RAD: break; default: factor = GSL_NAN; break; } break; case HKL_UNIT_LENGTH_NM: switch(unit->type){ case HKL_UNIT_LENGTH_NM: break; default: factor = GSL_NAN; break; } } } return factor; } hkl-4.0.3/hkl/hkl-pseudoaxis-k4cv.h0000644000175000017500000000236011400153354013746 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_PSEUDOAXIS_K4CV_H__ #define __HKL_PSEUDOAXIS_K4CV_H__ #include HKL_BEGIN_DECLS extern HklPseudoAxisEngine *hkl_pseudo_axis_engine_k4cv_hkl_new(void); extern HklPseudoAxisEngine *hkl_pseudo_axis_engine_k4cv_psi_new(void); HKL_END_DECLS #endif /* __HKL_PSEUDOAXIS_K4CV_H__ */ hkl-4.0.3/hkl/hkl-sample.c0000644000175000017500000004415711402652607012212 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ /* for strdup */ #define _XOPEN_SOURCE 500 #include #include #include #include /* private */ static void hkl_sample_reflection_update(HklSampleReflection *self) { HklVector ki; HklQuaternion q; if(!self) return; /* compute the _hkl using only the axes of the geometry */ /* first Q from angles */ hkl_source_compute_ki(&self->geometry->source, &ki); self->_hkl = ki; hkl_vector_rotated_quaternion(&self->_hkl, &self->geometry->holders[self->detector.idx].q); hkl_vector_minus_vector(&self->_hkl, &ki); q = self->geometry->holders[0].q; hkl_quaternion_conjugate(&q); hkl_vector_rotated_quaternion(&self->_hkl, &q); } static HklSampleReflection *hkl_sample_reflection_new(HklGeometry *geometry, HklDetector const *detector, double h, double k, double l) { HklSampleReflection *self; if (!geometry || !detector) return NULL; self = HKL_MALLOC(HklSampleReflection); hkl_geometry_update(geometry); self->geometry = hkl_geometry_new_copy(geometry); self->detector = *detector; self->hkl.data[0] = h; self->hkl.data[1] = k; self->hkl.data[2] = l; self->flag = HKL_TRUE; hkl_sample_reflection_update(self); return self; } static HklSampleReflection *hkl_sample_reflection_new_copy(HklSampleReflection const *src) { HklSampleReflection *self = NULL; self = HKL_MALLOC(HklSampleReflection); self->geometry = hkl_geometry_new_copy(src->geometry); self->detector = src->detector; self->hkl = src->hkl; self->_hkl = src->_hkl; self->flag = src->flag; return self; } static void hkl_sample_reflection_free(HklSampleReflection *self) { hkl_geometry_free(self->geometry); free(self); } static void hkl_sample_compute_UxUyUz(HklSample *self) { double ux; double uy; double uz; hkl_matrix_to_euler(&self->U, &ux, &uy, &uz); hkl_parameter_set_value(self->ux, ux); hkl_parameter_set_value(self->uy, uy); hkl_parameter_set_value(self->uz, uz); } static int hkl_sample_compute_UB(HklSample *self) { HklMatrix B; if (hkl_lattice_get_B(self->lattice, &B)) return HKL_FAIL; self->UB = self->U; hkl_matrix_times_matrix(&self->UB, &B); return HKL_SUCCESS; } /* * this structure is used by the minimization gsl algorithm. * in the set_UB method */ struct set_UB_t { HklSample *sample; const HklMatrix *UB; }; static double set_UB_fitness(gsl_vector const *x, void *params) { size_t i, j; double fitness; double euler_x; double euler_y; double euler_z; struct set_UB_t *parameters = params; HklSample *sample = parameters->sample; const HklMatrix *UB = parameters->UB; sample->ux->value = euler_x = gsl_vector_get(x, 0); sample->uy->value = euler_y = gsl_vector_get(x, 1); sample->uz->value = euler_z = gsl_vector_get(x, 2); sample->lattice->a->value = gsl_vector_get(x, 3); sample->lattice->b->value = gsl_vector_get(x, 4); sample->lattice->c->value = gsl_vector_get(x, 5); sample->lattice->alpha->value = gsl_vector_get(x, 6); sample->lattice->beta->value = gsl_vector_get(x, 7); sample->lattice->gamma->value = gsl_vector_get(x, 8); hkl_matrix_init_from_euler(&sample->U, euler_x, euler_y, euler_z); if (hkl_sample_compute_UB(sample)) return GSL_NAN; fitness = 0.; for(i=0; i<3; ++i) for(j=0; j<3; ++j){ double tmp = UB->data[i][j] - sample->UB.data[i][j]; fitness += tmp * tmp; } return fitness; } static double mono_crystal_fitness(gsl_vector const *x, void *params) { size_t i, j; double fitness; double euler_x; double euler_y; double euler_z; HklSample *sample = params; sample->ux->value = euler_x = gsl_vector_get(x, 0); sample->uy->value = euler_y = gsl_vector_get(x, 1); sample->uz->value = euler_z = gsl_vector_get(x, 2); sample->lattice->a->value = gsl_vector_get(x, 3); sample->lattice->b->value = gsl_vector_get(x, 4); sample->lattice->c->value = gsl_vector_get(x, 5); sample->lattice->alpha->value = gsl_vector_get(x, 6); sample->lattice->beta->value = gsl_vector_get(x, 7); sample->lattice->gamma->value = gsl_vector_get(x, 8); hkl_matrix_init_from_euler(&sample->U, euler_x, euler_y, euler_z); if (hkl_sample_compute_UB(sample)) return GSL_NAN; fitness = 0.; for(i=0; ireflections); ++i) { HklSampleReflection *reflection; reflection = sample->reflections[i]; if(reflection->flag == HKL_TRUE){ HklVector UBh; UBh = reflection->hkl; hkl_matrix_times_vector(&sample->UB, &UBh); for(j=0; j<3; ++j) { double tmp = UBh.data[j] - reflection->_hkl.data[j]; fitness += tmp * tmp; } } } return fitness; } static double minimize(HklSample *sample, double (* f) (const gsl_vector * x, void * params), void *params) { gsl_multimin_fminimizer_type const *T = gsl_multimin_fminimizer_nmsimplex; gsl_multimin_fminimizer *s = NULL; gsl_vector *ss, *x; gsl_multimin_function minex_func; size_t iter = 0; int status; double size = 0; if (!sample) return GSL_NAN; /* Starting point */ x = gsl_vector_alloc (9); gsl_vector_set (x, 0, sample->ux->value); gsl_vector_set (x, 1, sample->uy->value); gsl_vector_set (x, 2, sample->uz->value); gsl_vector_set (x, 3, sample->lattice->a->value); gsl_vector_set (x, 4, sample->lattice->b->value); gsl_vector_set (x, 5, sample->lattice->c->value); gsl_vector_set (x, 6, sample->lattice->alpha->value); gsl_vector_set (x, 7, sample->lattice->beta->value); gsl_vector_set (x, 8, sample->lattice->gamma->value); /* Set initial step sizes to 1 */ ss = gsl_vector_alloc (9); gsl_vector_set (ss, 0, sample->ux->fit); gsl_vector_set (ss, 1, sample->uy->fit); gsl_vector_set (ss, 2, sample->uz->fit); gsl_vector_set (ss, 3, sample->lattice->a->fit); gsl_vector_set (ss, 4, sample->lattice->b->fit); gsl_vector_set (ss, 5, sample->lattice->c->fit); gsl_vector_set (ss, 6, sample->lattice->alpha->fit); gsl_vector_set (ss, 7, sample->lattice->beta->fit); gsl_vector_set (ss, 8, sample->lattice->gamma->fit); /* Initialize method and iterate */ minex_func.n = 9; minex_func.f = f; minex_func.params = params; s = gsl_multimin_fminimizer_alloc (T, 9); gsl_set_error_handler_off(); gsl_multimin_fminimizer_set (s, &minex_func, x, ss); do { ++iter; status = gsl_multimin_fminimizer_iterate(s); if (status) break; size = gsl_multimin_fminimizer_size (s); status = gsl_multimin_test_size (size, HKL_EPSILON / 2.); } while (status == GSL_CONTINUE && iter < 10000); gsl_vector_free(x); gsl_vector_free(ss); gsl_multimin_fminimizer_free(s); gsl_set_error_handler (NULL); return size; } /*************/ /* HklSample */ /*************/ HklSample* hkl_sample_new(char const *name, HklSampleType type) { HklSample *self = NULL; /* check parameters */ if(!name) return self; self = HKL_MALLOC(HklSample); self->name = strdup(name); self->type = type; self->lattice = hkl_lattice_new_default(); hkl_matrix_init(&self->U,1, 0, 0, 0, 1, 0, 0, 0, 1); hkl_matrix_init(&self->UB,1, 0, 0, 0, 1, 0, 0, 0, 1); self->ux = hkl_parameter_new("ux", -M_PI, 0., M_PI, HKL_TRUE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg); self->uy = hkl_parameter_new("uy", -M_PI, 0., M_PI, HKL_TRUE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg); self->uz = hkl_parameter_new("uz", -M_PI, 0., M_PI, HKL_TRUE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg); hkl_sample_compute_UB(self); HKL_LIST_INIT(self->reflections); return self; } HklSample *hkl_sample_new_copy(HklSample const *src) { HklSample *self = NULL; size_t len; size_t i; /* check parameters */ if(!src) return self; self = HKL_MALLOC(HklSample); self->name = strdup(src->name); self->type = src->type; self->lattice = hkl_lattice_new_copy(src->lattice); self->U = src->U; self->UB = src->UB; self->ux = hkl_parameter_new_copy(src->ux); self->uy = hkl_parameter_new_copy(src->uy); self->uz = hkl_parameter_new_copy(src->uz); /* copy the reflections */ len = HKL_LIST_LEN(src->reflections); HKL_LIST_ALLOC(self->reflections, len); for(i=0; ireflections[i] = hkl_sample_reflection_new_copy(src->reflections[i]); return self; } void hkl_sample_free(HklSample *self) { if (!self) return; free(self->name); hkl_lattice_free(self->lattice); hkl_parameter_free(self->ux); hkl_parameter_free(self->uy); hkl_parameter_free(self->uz); HKL_LIST_FREE_DESTRUCTOR(self->reflections, hkl_sample_reflection_free); free(self); } void hkl_sample_set_name(HklSample *self, char const *name) { if (!self) return; if(self->name) free(self->name); self->name = strdup(name); } int hkl_sample_set_lattice(HklSample *self, double a, double b, double c, double alpha, double beta, double gamma) { int status; if (!self) return HKL_FAIL; status = hkl_lattice_set(self->lattice, a, b, c, alpha, beta, gamma); if (status == HKL_SUCCESS) hkl_sample_compute_UB(self); return status; } /* TODO test */ int hkl_sample_set_U_from_euler(HklSample *self, double x, double y, double z) { if (!self) return HKL_FAIL; hkl_matrix_init_from_euler(&self->U, x, y, z); hkl_sample_compute_UB(self); hkl_parameter_set_value(self->ux, x); hkl_parameter_set_value(self->uy, y); hkl_parameter_set_value(self->uz, z); return HKL_SUCCESS; } void hkl_sample_get_UB(HklSample *self, HklMatrix *UB) { if (!self || !UB) return; hkl_sample_compute_UB(self); *UB = self->UB; } /** * hkl_sample_set_UB: set the UB matrix of the sample * @self: the sample to modify * @UB: the UB matrix to set * * Set the UB matrix using an external UB matrix. In fact you give * the UB matrix but only the U matrix of the sample is affected by * this operation. We keep the B matrix constant. * U * B = UB -> U = UB * B^-1 **/ double hkl_sample_set_UB(HklSample *self, const HklMatrix *UB) { struct set_UB_t params; if(!self || !UB) return -1; params.sample = self; params.UB = UB; return minimize(self, set_UB_fitness, ¶ms); } HklSampleReflection *hkl_sample_add_reflection(HklSample *self, HklGeometry *geometry, HklDetector const *detector, double h, double k, double l) { HklSampleReflection *ref; ref = hkl_sample_reflection_new(geometry, detector, h, k, l); if(ref) HKL_LIST_ADD_VALUE(self->reflections, ref); return ref; } HklSampleReflection* hkl_sample_get_ith_reflection(HklSample const *self, size_t idx) { if (!self) return NULL; return self->reflections[idx]; } int hkl_sample_del_reflection(HklSample *self, size_t idx) { if (!self) return HKL_FAIL; hkl_sample_reflection_free(self->reflections[idx]); HKL_LIST_DEL(self->reflections, idx); return HKL_SUCCESS; } int hkl_sample_compute_UB_busing_levy(HklSample *self, size_t idx1, size_t idx2) { HklSampleReflection *r1; HklSampleReflection *r2; if (!self || idx1 >= HKL_LIST_LEN(self->reflections) || idx2 >= HKL_LIST_LEN(self->reflections)) return HKL_FAIL; r1 = self->reflections[idx1]; r2 = self->reflections[idx2]; if (!hkl_vector_is_colinear(&r1->hkl, &r2->hkl)) { HklVector h1c; HklVector h2c; HklMatrix B; HklMatrix Tc; /* Compute matrix Tc from r1 and r2. */ h1c = r1->hkl; h2c = r2->hkl; hkl_lattice_get_B(self->lattice, &B); hkl_matrix_times_vector(&B, &h1c); hkl_matrix_times_vector(&B, &h2c); hkl_matrix_init_from_two_vector(&Tc, &h1c, &h2c); hkl_matrix_transpose(&Tc); /* compute U */ hkl_matrix_init_from_two_vector(&self->U, &r1->_hkl, &r2->_hkl); hkl_matrix_times_matrix(&self->U, &Tc); hkl_sample_compute_UxUyUz(self); hkl_sample_compute_UB(self); } else return HKL_FAIL; return HKL_SUCCESS; } double hkl_sample_affine(HklSample *self) { if(!self) return GSL_NAN; return minimize(self, mono_crystal_fitness, self); } double hkl_sample_get_reflection_mesured_angle(HklSample const *self, size_t idx1, size_t idx2) { if (!self || idx1 >= HKL_LIST_LEN(self->reflections) || idx2 >= HKL_LIST_LEN(self->reflections)) return GSL_NAN; return hkl_vector_angle(&self->reflections[idx1]->_hkl, &self->reflections[idx2]->_hkl); } double hkl_sample_get_reflection_theoretical_angle(HklSample const *self, size_t idx1, size_t idx2) { HklVector hkl1; HklVector hkl2; if (!self || idx1 >= HKL_LIST_LEN(self->reflections) || idx2 >= HKL_LIST_LEN(self->reflections)) return GSL_NAN; hkl1 = self->reflections[idx1]->hkl; hkl2 = self->reflections[idx2]->hkl; hkl_matrix_times_vector(&self->UB, &hkl1); hkl_matrix_times_vector(&self->UB, &hkl2); return hkl_vector_angle(&hkl1, &hkl2); } void hkl_sample_fprintf(FILE *f, HklSample const *self) { size_t i, len; fprintf(f, "\nSample name: \"%s\"", self->name); fprintf(f, "\nLattice parameters:"); fprintf(f, "\n "); hkl_parameter_fprintf(f, self->lattice->a); fprintf(f, "\n "); hkl_parameter_fprintf(f, self->lattice->b); fprintf(f, "\n "); hkl_parameter_fprintf(f, self->lattice->c); fprintf(f, "\n "); hkl_parameter_fprintf(f, self->lattice->alpha); fprintf(f, "\n "); hkl_parameter_fprintf(f, self->lattice->beta); fprintf(f, "\n "); hkl_parameter_fprintf(f, self->lattice->gamma); fprintf(f, "\n "); hkl_parameter_fprintf(f, self->ux); fprintf(f, "\n "); hkl_parameter_fprintf(f, self->uy); fprintf(f, "\n "); hkl_parameter_fprintf(f, self->uz); fprintf(f, "\nUB:\n"); hkl_matrix_fprintf(f, &self->UB); len = HKL_LIST_LEN(self->reflections); if (len){ HklSampleReflection *reflection; HklAxis *axes; size_t axes_len; reflection = hkl_sample_get_ith_reflection(self, 0); fprintf(f, "Reflections:"); fprintf(f, "\n"); fprintf(f, "i %-10.6s %-10.6s %-10.6s", "h", "k", "l"); axes = reflection->geometry->axes; axes_len = HKL_LIST_LEN(reflection->geometry->axes); for(i=0; igeometry->axes; axes_len = HKL_LIST_LEN(reflection->geometry->axes); fprintf(f, "\n%d %-10.6f %-10.6f %-10.6f", i, reflection->hkl.data[0], reflection->hkl.data[1], reflection->hkl.data[2]); for(j=0; jhkl.data[0] = h; self->hkl.data[1] = k; self->hkl.data[2] = l; } void hkl_sample_reflection_set_flag(HklSampleReflection *self, int flag) { if(!self) return; self->flag = flag; } void hkl_sample_reflection_set_geometry(HklSampleReflection *self, HklGeometry *geometry) { if(!self || !geometry) return; if(self->geometry){ if(self->geometry != geometry){ hkl_geometry_free(self->geometry); self->geometry = hkl_geometry_new_copy(geometry); } }else self->geometry = hkl_geometry_new_copy(geometry); hkl_sample_reflection_update(self); } /*****************/ /* HklSampleList */ /*****************/ HklSampleList *hkl_sample_list_new(void) { HklSampleList *self = NULL; self = HKL_MALLOC(HklSampleList); HKL_LIST_INIT(self->samples); self->current = NULL; return self; } void hkl_sample_list_free(HklSampleList *self) { if (self){ HKL_LIST_FREE_DESTRUCTOR(self->samples, hkl_sample_free); self->current = NULL; free(self); } } void hkl_sample_list_clear(HklSampleList *self) { if(self){ HKL_LIST_FREE_DESTRUCTOR(self->samples, hkl_sample_free); self->current = NULL; HKL_LIST_INIT(self->samples); } } HklSample *hkl_sample_list_append(HklSampleList *self, HklSample *sample) { if (!self || !sample || hkl_sample_list_get_idx_from_name(self, sample->name) != HKL_FAIL) return NULL; HKL_LIST_ADD_VALUE(self->samples, sample); return sample; } void hkl_sample_list_del(HklSampleList *self, HklSample *sample) { if(self && sample){ if (self->current == sample) self->current = NULL; HKL_LIST_DEL_ITEM_DESTRUCTOR(self->samples, sample, hkl_sample_free); } } /* TODO test */ size_t hkl_sample_list_len(HklSampleList const *self) { return HKL_LIST_LEN(self->samples); } /* TODO test */ HklSample *hkl_sample_list_get_ith(HklSampleList *self, size_t idx) { HklSample *sample = NULL; if (self && idx < HKL_LIST_LEN(self->samples)) sample = self->samples[idx]; return sample; } /* TODO test */ HklSample *hkl_sample_list_get_by_name(HklSampleList *self, char const *name) { HklSample *sample = NULL; size_t idx; if (!self || !name) return sample; idx = hkl_sample_list_get_idx_from_name(self, name); if (HKL_FAIL != idx) sample = self->samples[idx]; return sample; } size_t hkl_sample_list_get_idx_from_name(HklSampleList *self, char const *name) { size_t idx; if (!self || !name || !self->samples) return HKL_FAIL; for(idx=0; idxsamples); ++idx) if (!strcmp(self->samples[idx]->name, name)) return idx; return HKL_FAIL; } int hkl_sample_list_select_current(HklSampleList *self, char const *name) { size_t idx; int res = HKL_FAIL; if(!self || !name || !self->samples) return res; idx = hkl_sample_list_get_idx_from_name(self, name); if (idx != HKL_FAIL){ self->current = self->samples[idx]; res = HKL_SUCCESS; } return res; } void hkl_sample_list_fprintf(FILE *f, HklSampleList const *self) { size_t i; for(i=0; isamples); ++i) hkl_sample_fprintf(f, self->samples[i]); } hkl-4.0.3/hkl/hkl-interval.c0000644000175000017500000001762111400153353012541 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #define _GNU_SOURCE #include #include #include "hkl/hkl-interval.h" /** compare two intervals */ int hkl_interval_cmp(HklInterval const *self, HklInterval const *interval) { return self->min == interval->min && self->max == interval->max; } /** add two intervals */ void hkl_interval_plus_interval(HklInterval *self, HklInterval const *interval) { self->min += interval->min; self->max += interval->max; } /** add to an interval a double */ void hkl_interval_plus_double(HklInterval *self, double const d) { self->min += d; self->max += d; } void hkl_interval_minus_interval(HklInterval *self, HklInterval const *interval) { self->min -= interval->max; self->max -= interval->min; } void hkl_interval_minus_double(HklInterval *self, double const d) { self->min -= d; self->max -= d; } void hkl_interval_times_interval(HklInterval *self, HklInterval const *interval) { double min; double max; double m1 = self->min * interval->min; double m2 = self->min * interval->max; double m3 = self->max * interval->min; double m4 = self->max * interval->max; min = m1; if (m2 < min) min = m2; if (m3 < min) min = m3; if (m4 < min) min = m4; max = m1; if (m2 > max) max = m2; if (m3 > max) max = m3; if (m4 > max) max = m4; self->min = min; self->max = max; } void hkl_interval_times_double(HklInterval *self, double const d) { double min; double max; if (d < 0) { min = self->max * d; max = self->min * d; } else { min = self->min * d; max = self->max * d; } self->min = min; self->max = max; } void hkl_interval_divides_double(HklInterval *self, double const d) { double min = self->min / d; double max = self->max / d; if (min > max){ double tmp = min; min = max; max = tmp; } self->min = min; self->max = max; } int hkl_interval_contain_zero(HklInterval const *self) { if (self->min <= 0 && self->max >= 0) return HKL_TRUE; else return HKL_FALSE; } void hkl_interval_cos(HklInterval *self) { double min = 0; double max = 0; double cmin; double cmax; cmin = cos(self->min); cmax = cos(self->max); if (self->max - self->min >= 2 * M_PI) { min = -1; max = 1; } else { int quad_min; int quad_max; quad_min = (int)floor(self->min / M_PI_2) % 4; if (quad_min < 0) quad_min += 4; quad_max = (int)floor(self->max / M_PI_2) % 4; if (quad_max < 0) quad_max += 4; switch (quad_max) { case 0: switch (quad_min) { case 0: min = cmax; max = cmin; break; case 1: min = -1; max = 1; break; case 2: min = cmin; max = 1; break; case 3: if (cmin < cmax) { min = cmin; max = 1; } else { min = cmax; max = 1; } break; } break; case 1: switch (quad_min) { case 0: min = cmax; max = cmin; break; case 1: min = -1; max = 1; break; case 2: if (cmin < cmax) { min = cmin; max = 1; } else { min = cmax; max = 1; } break; case 3: min = cmax; max = 1; break; } break; case 2: switch (quad_min) { case 0: min = -1; max = cmin; break; case 1: if (cmin < cmax) { min = -1; max = cmax; } else { min = -1; max = cmin; } break; case 2: if (cmin < cmax) { min = cmin; max = cmax; } else { min = -1; max = 1; } break; case 3: min = -1; max = 1; break; } break; case 3: switch (quad_min) { case 0: if (cmin < cmax) { min = -1; max = cmax; } else { min = -1; max = cmin; } break; case 1: min = -1; max = cmax; break; case 2: min = cmin; max = cmax; break; case 3: if (cmin < cmax) { min = cmin; max = cmax; } else { min = -1; max = 1; } break; } break; } } self->min = min; self->max = max; } void hkl_interval_acos(HklInterval *self) { double tmp; tmp = self->min; self->min = acos(self->max); self->max = acos(tmp); } void hkl_interval_sin(HklInterval *self) { double min = 0; double max = 0; double smin; double smax; smin = sin(self->min); smax = sin(self->max); /* if there is at least one period in b, then a = [-1, 1] */ if ( self->max - self->min >= 2 * M_PI) { min = -1; max = 1; } else { int quad_min; int quad_max; quad_min = (int)floor(self->min / M_PI_2) % 4; if (quad_min < 0) quad_min += 4; quad_max = (int)floor(self->max / M_PI_2) % 4; if (quad_max < 0) quad_max += 4; switch (quad_max) { case 0: switch (quad_min) { case 0: if (smin < smax) { min = smin; max = smax; } else { min = -1; max = 1; } break; case 3: min = smin; max = smax; break; case 1: if (smin > smax) { min = -1; max = smin; } else { min = -1; max = smax; } break; case 2: min = -1; max = smax; break; } break; case 1: switch (quad_min) { case 0: if (smin < smax) { min = smin; max = 1; } else { min = smax; max = 1; } break; case 1: if (smin < smax) { min = -1; max = 1; } else { min = smax; max = smin; } break; case 2: min = -1; max = 1; break; case 3: min = smin; max = 1; break; } break; case 2: switch (quad_min) { case 0: min = smax; max = 1; break; case 1: case 2: if (smin < smax) { min = -1; max = 1; } else { min = smax; max = smin; } break; case 3: if (smin < smax) { min = smin; max = 1; } else { min = smax; max = 1; } break; } break; case 3: switch (quad_min) { case 0: min = -1; max = 1; break; case 1: min = -1; max = smin; break; case 2: if (smin < smax) { min = -1; max = smax; } else { min = -1; max = smin; } break; case 3: if (smin < smax) { min = smin; max = smax; } else { min = -1; max = 1; } break; } break; } } self->min = min; self->max = max; } void hkl_interval_asin(HklInterval *self) { self->min = asin(self->min); self->max = asin(self->max); } void hkl_interval_tan(HklInterval *self) { int quadrant_down = (int)floor(self->min / M_PI_2); int quadrant_up = (int)floor(self->max / M_PI_2); /* if there is at least one period in b or if b contains a Pi/2 + k*Pi, */ /* then a = ]-oo, +oo[ */ if ( ((quadrant_up - quadrant_down) >= 2) || (!(quadrant_down % 2) && (quadrant_up % 2)) ) { self->min = -INFINITY; self->max = INFINITY; } else { self->min = tan(self->min); self->max = tan(self->max); } } void hkl_interval_atan(HklInterval *self) { self->min = atan(self->min); self->max = atan(self->max); } double hkl_interval_length(HklInterval const *self) { return self->max - self->min; } void hkl_interval_angle_restrict_symm(HklInterval *self) { gsl_sf_angle_restrict_symm_e(&self->min); gsl_sf_angle_restrict_symm_e(&self->max); } hkl-4.0.3/hkl/hkl-pseudoaxis-e6c-psi.c0000644000175000017500000000273011400153354014341 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include HklPseudoAxisEngine *hkl_pseudo_axis_engine_e6c_psi_new(void) { HklPseudoAxisEngine *self; HklPseudoAxisEngineModePsi *mode; char const *axes_names_psi[] = {"omega", "chi", "phi", "delta"}; self = hkl_pseudo_axis_engine_psi_new(); /* psi get/set */ mode = hkl_pseudo_axis_engine_mode_psi_new("psi_vertical", 4, axes_names_psi); hkl_pseudo_axis_engine_add_mode(self, (HklPseudoAxisEngineMode *)mode); hkl_pseudo_axis_engine_select_mode(self, 0); return self; } hkl-4.0.3/hkl/hkl-error.h0000644000175000017500000000435411366756371012076 00000000000000/* gerror.h - Error reporting system * * Copyright 2000 Red Hat, Inc. * * The Gnome Library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. * * The Gnome Library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with the Gnome Library; see the file COPYING.LIB. If not, * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ /* * modified by Picca Frédéric-emmanuel * for the hkl project */ #ifndef __HKL_ERROR_H__ #define __HKL_ERROR_H__ #include #include HKL_BEGIN_DECLS typedef struct _HklError HklError; struct _HklError { char *message; }; HklError* hkl_error_new (const char *format, ...) G_GNUC_PRINTF (1, 2); HklError* hkl_error_new_literal (const char *message); HklError* hkl_error_new_valist (const char *format, va_list args); void hkl_error_free (HklError *error); HklError* hkl_error_new_copy (const HklError *error); /* if (err) *err = hkl_error_new(domain, code, format, ...), also has * some sanity checks. */ void hkl_error_set (HklError **err, const char *format, ...) G_GNUC_PRINTF (2, 3); void hkl_error_set_literal (HklError **err, const char *message); /* if (dest) *dest = src; also has some sanity checks. */ void hkl_error_propagate (HklError **dest, HklError *src); /* if (err && *err) { hkl_error_free(*err); *err = NULL; } */ void hkl_error_clear (HklError **err); /* if (err) prefix the formatted string to the ->message */ void hkl_error_prefix (HklError **err, const char *format, ...) G_GNUC_PRINTF (2, 3); /* hkl_propagate_error then hkl_error_prefix on dest */ void hkl_error_propagate_prefixed (HklError **dest, HklError *src, const char *format, ...) G_GNUC_PRINTF (3, 4); HKL_END_DECLS #endif /* __HKL_ERROR_H__ */ hkl-4.0.3/hkl/hkl-geometry.c0000644000175000017500000003552011402652607012556 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include #include #include #include #include /* * Try to add a axis to the axes list, * if a identical axis is present in the list return it * else create a new on and add it to the list. * die if try to add an axis with the same name but a different axis_v */ static size_t hkl_geometry_add_rotation(HklGeometry *geometry, char const *name, HklVector const *axis_v) { size_t i, len; HklAxis axis; /* check if an axis with the same name is on the axis list */ for(i=0; iaxes); ++i){ HklAxis *axis; axis = &geometry->axes[i]; if(!strcmp(hkl_axis_get_name(axis), name)){ if (hkl_vector_cmp(&axis->axis_v, axis_v)){ fprintf(stderr, "can not add two axis with the same name \"%s\" but different axes <%f, %f, %f> != <%f, %f, %f> into an HklAxes.", name, axis->axis_v.data[0], axis->axis_v.data[1], axis->axis_v.data[2], axis_v->data[0], axis_v->data[1], axis_v->data[2]); exit(128); }else{ return i; } } } /* no so create and add it to the list */ len = HKL_LIST_LEN(geometry->axes); hkl_axis_init(&axis, name, axis_v); HKL_LIST_ADD_VALUE(geometry->axes, axis); return len; } /*************/ /* HklHolder */ /*************/ static void hkl_holder_init(HklHolder *self, HklGeometry *geometry) { static HklQuaternion q0 = {{0, 0, 0, 0}}; self->geometry = geometry; HKL_LIST_INIT(self->idx); self->q = q0; } static int hkl_holder_init_copy(HklHolder *self, HklGeometry *geometry, HklHolder const *holder) { /* check axes compatibility */ if (HKL_LIST_LEN(geometry->axes) != HKL_LIST_LEN(holder->geometry->axes)) return HKL_FAIL; self->geometry = geometry; HKL_LIST_ALLOC(self->idx, HKL_LIST_LEN(holder->idx)); HKL_LIST_COPY(self->idx, holder->idx); self->q = holder->q; return HKL_SUCCESS; } static void hkl_holder_release_memory(HklHolder *self) { HKL_LIST_FREE(self->idx); } static void hkl_holder_update(HklHolder *self) { static HklQuaternion q0 = {{1, 0, 0, 0}}; size_t i; HklAxis *axes; size_t *idx; self->q = q0; axes = self->geometry->axes; idx = self->idx; for(i=0; iidx); ++i) hkl_quaternion_times_quaternion(&self->q, &axes[idx[i]].q); } HklAxis *hkl_holder_add_rotation_axis(HklHolder * self, char const * name, double x, double y, double z) { HklAxis *axis = NULL; size_t i, idx; HklVector axis_v; axis_v.data[0] = x; axis_v.data[1] = y; axis_v.data[2] = z; idx = hkl_geometry_add_rotation(self->geometry, name, &axis_v); /* check that the axis is not already in the holder */ for(i=0; iidx); i++) if (idx == self->idx[i]) return NULL; axis = &self->geometry->axes[idx]; HKL_LIST_ADD_VALUE(self->idx, idx); return axis; } /***************/ /* HklGeometry */ /***************/ HklGeometry *hkl_geometry_new(void) { HklGeometry *g = NULL; g = HKL_MALLOC(HklGeometry); g->config = NULL; hkl_source_init(&g->source, 1.54, 1, 0, 0); HKL_LIST_INIT(g->axes); HKL_LIST_INIT(g->holders); return g; } HklGeometry *hkl_geometry_new_copy(HklGeometry const *src) { HklGeometry *self = NULL; unsigned int i; size_t len; self = HKL_MALLOC(HklGeometry); self->config = src->config; self->source = src->source; /* copy the axes */ HKL_LIST_ALLOC(self->axes, HKL_LIST_LEN(src->axes)); HKL_LIST_COPY(self->axes, src->axes); /* copy the holders */ len = HKL_LIST_LEN(src->holders); HKL_LIST_ALLOC(self->holders, len); for(i=0; iholders[i], self, &src->holders[i]); return self; } void hkl_geometry_free(HklGeometry *self) { size_t i; size_t len; HKL_LIST_FREE(self->axes); len = HKL_LIST_LEN(self->holders); if(len) { for(i=0; iholders[i]); HKL_LIST_FREE(self->holders); } free(self); } void hkl_geometry_init_geometry(HklGeometry *self, HklGeometry const *src) { size_t i; if(!self || !src || self->config->type != src->config->type) return; self->source = src->source; /* copy the axes configuration and mark it as dirty */ HKL_LIST_COPY(self->axes, src->axes); for(i=0; iholders); ++i) self->holders[i].q = src->holders[i].q; } HklHolder *hkl_geometry_add_holder(HklGeometry *self) { HklHolder *holder; size_t len; len = HKL_LIST_LEN(self->holders); HKL_LIST_RESIZE(self->holders, len + 1); holder = &self->holders[len]; hkl_holder_init(holder, self); return holder; } void hkl_geometry_update(HklGeometry *self) { size_t i, len; int ko = 0; len = HKL_LIST_LEN(self->axes); for(i=0; iaxes[i]) == HKL_TRUE) { ko = 1; break; } if (ko) { for(i=0; iholders); i++) hkl_holder_update(&self->holders[i]); for(i=0; iaxes[i], HKL_FALSE); } } HklAxis *hkl_geometry_get_axis_by_name(HklGeometry *self, char const *name) { size_t i; HklAxis *axis; for(i=0; iaxes); ++i) { axis = &self->axes[i]; if (!strcmp(hkl_axis_get_name(axis), name)) return axis; } return NULL; } void hkl_geometry_randomize(HklGeometry *self) { size_t i; for(i=0; iaxes); ++i) hkl_axis_randomize(&self->axes[i]); hkl_geometry_update(self); } int hkl_geometry_set_values_v(HklGeometry *self, size_t len, ...) { va_list ap; size_t i; if (!self || len != HKL_LIST_LEN(self->axes)) return HKL_FAIL; va_start(ap, len); for(i=0; iaxes[i], va_arg(ap, double)); va_end(ap); hkl_geometry_update(self); return HKL_SUCCESS; } double hkl_geometry_distance(HklGeometry *self, HklGeometry *geom) { size_t i; double value1, value2; double distance = 0.; if (!self || !geom) return 0.; for(i=0; iaxes); ++i){ value1 = hkl_axis_get_value(&self->axes[i]); value2 = hkl_axis_get_value(&geom->axes[i]); distance += fabs(value2 - value1); } return distance; } double hkl_geometry_distance_orthodromic(HklGeometry *self, HklGeometry *geom) { size_t i; double value1, value2; double distance = 0.; if (!self || !geom) return 0.; for(i=0; iaxes); ++i){ double d; value1 = hkl_axis_get_value(&self->axes[i]); value2 = hkl_axis_get_value(&geom->axes[i]); d = fabs(gsl_sf_angle_restrict_symm(value2) - gsl_sf_angle_restrict_symm(value1)); /* as M_PI and -M_PI are included in the GSL restriction */ if (d > M_PI) d = 2*M_PI - d; distance += d; } return distance; } int hkl_geometry_is_valid(const HklGeometry *self) { size_t i; size_t len; len = HKL_LIST_LEN(self->axes); for(i=0; iaxes[i]) == HKL_FALSE) return HKL_FALSE; return HKL_TRUE; } int hkl_geometry_closest_from_geometry_with_range(HklGeometry *self, HklGeometry *ref) { size_t i; size_t len = HKL_LIST_LEN(self->axes); double *values = alloca(len * sizeof(*values)); int ko = HKL_FALSE; for(i=0;iaxes[i], &ref->axes[i]); if(gsl_isnan(values[i])){ ko = HKL_TRUE; break; } } if(!ko){ for(i=0;iaxes[i], values[i]); hkl_geometry_update(self); } return ko; } void hkl_geometry_fprintf(FILE *file, HklGeometry const *self) { size_t i; for(i=0; iaxes); ++i){ if(i) fprintf(file, "\n"); hkl_parameter_fprintf(file, (HklParameter *)(&self->axes[i])); } } /*******************/ /* HklGeometryList */ /*******************/ HklGeometryList *hkl_geometry_list_new(void) { HklGeometryList *self; self = HKL_MALLOC(HklGeometryList); HKL_LIST_INIT(self->items); self->multiply = NULL; return self; } void hkl_geometry_list_free(HklGeometryList *self) { HKL_LIST_FREE_DESTRUCTOR(self->items, hkl_geometry_list_item_free); free(self); } /** * @brief this method Add a geometry to the geometries * * @param self The current PseudoAxeEngine * @param x A vector of double with the axes values to put in the geometry. * * This method try to be clever by allocating memory only if the current * length of the geometries is not large enought. Then it just set the * geometry axes and copy it to the right geometries. We do not gives the * x len as it is equal to the self->axes_len. */ void hkl_geometry_list_add(HklGeometryList *self, HklGeometry *geometry) { size_t i; int ko; /* now check if the geometry is already in the geometry list */ ko = HKL_FALSE; for(i=0; iitems); ++i) if (hkl_geometry_distance_orthodromic(geometry, self->items[i]->geometry) < HKL_EPSILON) ko = HKL_TRUE; if(ko == HKL_FALSE) HKL_LIST_ADD_VALUE(self->items, hkl_geometry_list_item_new(geometry)); } void hkl_geometry_list_reset(HklGeometryList *self) { HKL_LIST_FREE_DESTRUCTOR(self->items, hkl_geometry_list_item_free); } void hkl_geometry_list_sort(HklGeometryList *self, HklGeometry *ref) { size_t len = HKL_LIST_LEN(self->items); double *distances = alloca(len * sizeof(*distances)); size_t *idx = alloca(len * sizeof(*idx)); size_t i, x; int j, p; HklGeometryListItem **items; /* compute the distances once for all */ for(i=0; iitems[i]->geometry); idx[i] = i; } /* insertion sorting */ for(i=1; i= distance[x] */ for(p = 0; distances[idx[p]] < distances[x] && fabs(distances[idx[p]] - distances[x]) > HKL_EPSILON; p++); /* move evythings in between p and i */ for(j=i-1; j>=p; j--) idx[j+1] = idx[j]; idx[p] = x; /* insert the saved idx */ } /* reorder the geometries. */ items = malloc(len * sizeof(HklGeometryListItem *)); for(i=0; iitems[idx[i]]; free(self->items); self->items = items; } void hkl_geometry_list_fprintf(FILE *f, HklGeometryList const *self) { HklParameter *parameter; HklGeometry *g; double value; size_t len, axes_len; size_t i, j; fprintf(f, "multiply method: %p \n", self->multiply); len = HKL_LIST_LEN(self->items); if(len){ axes_len = HKL_LIST_LEN(self->items[0]->geometry->axes); g = self->items[0]->geometry; fprintf(f, " "); for(i=0; iaxes[i])); /* geometries */ for(i=0; iitems[i]->geometry->axes[j]); value = hkl_parameter_get_value_unit(parameter); if (parameter->punit) fprintf(f, " % 18.15f %s", value, parameter->punit->repr); else fprintf(f, " % 18.15f", value); } fprintf(f, "\n "); for(j=0; jitems[i]->geometry->axes[j]); value = gsl_sf_angle_restrict_symm(parameter->value) * hkl_unit_factor(parameter->unit, parameter->punit); if (parameter->punit) fprintf(f, " % 18.15f %s", value, parameter->punit->repr); else fprintf(f, " % 18.15f", value); } fprintf(f, "\n"); } } } void hkl_geometry_list_multiply(HklGeometryList *self) { size_t i; size_t len; if(!self || !self->multiply) return; len = HKL_LIST_LEN(self->items); for(i=0; imultiply(self, i); } static void perm_r(HklGeometryList *self, HklGeometry *ref, HklGeometry *geometry, int perm[], size_t axis_idx) { size_t len; len = HKL_LIST_LEN(geometry->axes); if (axis_idx == len){ if(hkl_geometry_distance(ref, geometry) > HKL_EPSILON) HKL_LIST_ADD_VALUE(self->items, hkl_geometry_list_item_new(geometry)); }else{ if(perm[axis_idx] == HKL_TRUE){ HklAxis *axis; double max; double value; double value0; axis = &geometry->axes[axis_idx]; max = hkl_axis_get_max(axis); value = hkl_axis_get_value(axis); value0 = value; do{ /* fprintf(stdout, "\n%d %s, %f", axis_idx, hkl_axis_get_name(axis), value * HKL_RADTODEG); */ perm_r(self, ref, geometry, perm, axis_idx + 1); value += 2*M_PI; if(value <= (max + HKL_EPSILON)) hkl_axis_set_value(axis, value); }while(value <= (max + HKL_EPSILON)); hkl_axis_set_value(axis, value0); } else perm_r(self, ref, geometry, perm, axis_idx + 1); } } void hkl_geometry_list_multiply_from_range(HklGeometryList *self) { size_t i, j; size_t len; if(!self) return; len = HKL_LIST_LEN(self->items); for(i=0; iitems[i]->geometry; geometry = hkl_geometry_new_copy(ref); perm = alloca(HKL_LIST_LEN(geometry->axes) * sizeof(*perm)); /* find axes to permute and the first solution of thoses axes */ for(j=0; jaxes); ++j){ HklAxis *axis = &geometry->axes[j]; perm[j] = hkl_axis_is_value_compatible_with_range(axis); /* fprintf(stdout, "%d %d\n", j, perm[j]); */ if (perm[j] == HKL_TRUE) hkl_axis_set_value_smallest_in_range(axis); } /* * fprintf(stdout, "FIRST SOLUTION\n"); * hkl_geometry_fprintf(stdout, geometry); */ perm_r(self, ref, geometry, perm, 0); hkl_geometry_free(geometry); } } void hkl_geometry_list_remove_invalid(HklGeometryList *self) { size_t i; if(!self) return; for(i=0; iitems); ++i) if(!hkl_geometry_is_valid(self->items[i]->geometry)){ HKL_LIST_DEL_DESTRUCTOR(self->items, i, hkl_geometry_list_item_free); --i; } } int hkl_geometry_list_len(HklGeometryList *self) { return HKL_LIST_LEN(self->items); } int hkl_geometry_list_is_empty(HklGeometryList *self) { return HKL_LIST_LEN(self->items) == 0; } /***********************/ /* HklGeometryListItem */ /***********************/ HklGeometryListItem *hkl_geometry_list_item_new(HklGeometry *geometry) { HklGeometryListItem *self; if(!geometry) return NULL; self = HKL_MALLOC(HklGeometryListItem); self->geometry = hkl_geometry_new_copy(geometry); return self; } void hkl_geometry_list_item_free(HklGeometryListItem *self) { if(!self) return; hkl_geometry_free(self->geometry); free(self); } hkl-4.0.3/hkl/hkl-error.c0000644000175000017500000001644511402650337012057 00000000000000/* GLIB - Library of useful routines for C programming * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ /* * Modified by the GLib Team and others 1997-2000. See the AUTHORS * file for a list of people on the GLib Team. See the ChangeLog * files for a list of changes. These files are distributed with * GLib at ftp://ftp.gtk.org/pub/gtk/. */ #define _GNU_SOURCE /* need for vasprintf */ #include #include #include #include /** * hkl_error_new_valist: * @format: printf()-style format for error message * @args: #va_list of parameters for the message format * * Creates a new #HklError with the given message * formatted with @format. * * Returns: a new #HklError * * Since: 2.22 */ HklError* hkl_error_new_valist (const char *format, va_list args) { HklError *error; error = HKL_MALLOC(HklError); vasprintf (&error->message, format, args); return error; } /** * hkl_error_new: * @format: printf()-style format for error message * @Varargs: parameters for message format * * Creates a new #HklError with the given, * and a message formatted with @format. * * Return value: a new #HklError */ HklError* hkl_error_new (const char *format, ...) { HklError* error; va_list args; if (!format) return NULL; va_start (args, format); error = hkl_error_new_valist (format, args); va_end (args); return error; } /** * hkl_error_new_literal: * @message: error message * * Creates a new #HklError; unlike hkl_error_new(), @message is * not a printf()-style format string. Use this function if * @message contains text you don't have control over, * that could include printf() escape sequences. * * Return value: a new #HklError **/ HklError* hkl_error_new_literal (const char *message) { HklError* err; if(!message) return NULL; err = HKL_MALLOC (HklError); err->message = strdup (message); return err; } /** * hkl_error_free: * @error: a #HklError * * Frees a #HklError and associated resources. */ void hkl_error_free (HklError *error) { if (!error) return; free (error->message); free (error); } /** * hkl_error_copy: * @error: a #HklError * * Makes a copy of @error. * * Return value: a new #HklError */ HklError* hkl_error_new_copy (const HklError *error) { HklError *copy; if(!error) return NULL; copy = HKL_MALLOC (HklError); *copy = *error; copy->message = strdup (error->message); return copy; } #define ERROR_OVERWRITTEN_WARNING "HklError set over the top of a previous HklError or uninitialized memory.\n" \ "This indicates a bug in someone's code. You must ensure an error is NULL before it's set.\n" \ "The overwriting error message was: %s" /** * hkl_error_set: * @err: a return location for a #HklError, or %NULL * @format: printf()-style format * @Varargs: args for @format * * Does nothing if @err is %NULL; if @err is non-%NULL, then *@err * must be %NULL. A new #HklError is created and assigned to *@err. */ void hkl_error_set (HklError **err, const char *format, ...) { HklError *new; va_list args; if (err == NULL) return; va_start (args, format); new = hkl_error_new_valist (format, args); va_end (args); if (*err == NULL) *err = new; else fprintf (stderr, ERROR_OVERWRITTEN_WARNING, new->message); } /** * hkl_error_set_literal: * @err: a return location for a #HklError, or %NULL * @message: error message * * Does nothing if @err is %NULL; if @err is non-%NULL, then *@err * must be %NULL. A new #HklError is created and assigned to *@err. * Unlike hkl_set_error(), @message is not a printf()-style format string. * Use this function if @message contains text you don't have control over, * that could include printf() escape sequences. * * Since: 2.18 */ void hkl_error_set_literal (HklError **err, const char *message) { HklError *new; if (err == NULL) return; new = hkl_error_new_literal (message); if (*err == NULL) *err = new; else fprintf (stderr, ERROR_OVERWRITTEN_WARNING, new->message); } /** * hkl_propagate_error: * @dest: error return location * @src: error to move into the return location * * If @dest is %NULL, free @src; otherwise, moves @src into *@dest. * The error variable @dest points to must be %NULL. */ void hkl_error_propagate (HklError **dest, HklError *src) { if(!src) return; if (dest == NULL){ if (src) hkl_error_free (src); return; }else{ if (*dest != NULL) fprintf (stderr, ERROR_OVERWRITTEN_WARNING, src->message); else *dest = src; } } /** * hkl_clear_error: * @err: a #HklError return location * * If @err is %NULL, does nothing. If @err is non-%NULL, * calls hkl_error_free() on *@err and sets *@err to %NULL. */ void hkl_error_clear (HklError **err) { if (err && *err){ hkl_error_free (*err); *err = NULL; } } static void hkl_error_add_prefix (char **string, const char *format, va_list ap) { char *oldstring; char *prefix; int len; int len_prefix; int len_oldstring; len_prefix = vasprintf (&prefix, format, ap); oldstring = *string; len_oldstring = strlen(*string); len = len_prefix + len_oldstring; *string = malloc (len *sizeof (char) + 1); *string = strncpy (*string, prefix, len_prefix + 1); *string = strncat (*string, oldstring, len_oldstring); free (oldstring); free (prefix); } /** * hkl_prefix_error: * @err: a return location for a #HklError, or %NULL * @format: printf()-style format string * @...: arguments to @format * * Formats a string according to @format and * prefix it to an existing error message. If * @err is %NULL (ie: no error variable) then do * nothing. * * If *@err is %NULL (ie: an error variable is * present but there is no error condition) then * also do nothing. Whether or not it makes * sense to take advantage of this feature is up * to you. * * Since: 2.16 */ void hkl_error_prefix (HklError **err, const char *format, ...) { if (err && *err){ va_list ap; va_start (ap, format); hkl_error_add_prefix (&(*err)->message, format, ap); va_end (ap); } } /** * hkl_propagate_prefixed_error: * @dest: error return location * @src: error to move into the return location * @format: printf()-style format string * @...: arguments to @format * * If @dest is %NULL, free @src; otherwise, * moves @src into *@dest. *@dest must be %NULL. * After the move, add a prefix as with * hkl_prefix_error(). * * Since: 2.16 **/ void hkl_error_propagate_prefixed (HklError **dest, HklError *src, const char *format, ...) { hkl_error_propagate (dest, src); if (dest && *dest){ va_list ap; va_start (ap, format); hkl_error_add_prefix (&(*dest)->message, format, ap); va_end (ap); } } hkl-4.0.3/hkl/hkl-parameter.h0000644000175000017500000000504611400153354012701 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_PARAMETER_H__ #define __HKL_PARAMETER_H__ #include #include #include HKL_BEGIN_DECLS typedef struct _HklParameter HklParameter; struct _HklParameter { const char *name; HklInterval range; double value; HklUnit const *unit; HklUnit const *punit; int fit; int changed; }; extern HklParameter *hkl_parameter_new(char const *name, double min, double value, double max, int fit, int changed, HklUnit const *unit, HklUnit const *punit); extern HklParameter *hkl_parameter_new_copy(HklParameter const *self); extern int hkl_parameter_init(HklParameter *self, char const *name, double min, double value, double max, int fit, int changed, HklUnit const *unit, HklUnit const *punit); extern void hkl_parameter_free(HklParameter *self); extern void hkl_parameter_set_value(HklParameter *self, double value); extern double hkl_parameter_get_value_unit(HklParameter const *self); extern int hkl_parameter_set_value_unit(HklParameter *self, double value); extern double hkl_parameter_get_max(HklParameter const *self); extern void hkl_parameter_get_range_unit(HklParameter const *self, double *min, double *max); extern void hkl_parameter_set_range(HklParameter *self, double min, double max); extern void hkl_parameter_set_range_unit(HklParameter *self, double min, double max); extern void hkl_parameter_randomize(HklParameter *self); extern int hkl_parameter_is_valid(const HklParameter *self); extern void hkl_parameter_fprintf(FILE *f, HklParameter *self); HKL_END_DECLS #endif /* __HKL_PARAMETER_H__ */ hkl-4.0.3/hkl/hkl-pseudoaxis.h0000644000175000017500000001322211402652607013107 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_PSEUDOAXIS_H__ #define __HKL_PSEUDOAXIS_H__ #include #include #include #include #include HKL_BEGIN_DECLS typedef struct _HklPseudoAxis HklPseudoAxis; typedef struct _HklPseudoAxisEngineMode HklPseudoAxisEngineMode; typedef struct _HklPseudoAxisEngine HklPseudoAxisEngine; typedef struct _HklPseudoAxisEngineList HklPseudoAxisEngineList; typedef int (* HklPseudoAxisEngineModeFunc) (HklPseudoAxisEngineMode *self, HklPseudoAxisEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, HklError **error); typedef int (* HklFunction) (const gsl_vector *x, void *params, gsl_vector *f); struct _HklPseudoAxis { HklParameter parent; HklPseudoAxisEngine *engine; }; struct _HklPseudoAxisEngineMode { char const *name; HklPseudoAxisEngineModeFunc initialize; HklPseudoAxisEngineModeFunc get; HklPseudoAxisEngineModeFunc set; HKL_LIST(HklFunction, functions); HKL_LIST(HklParameter, parameters); HKL_LIST(const char*, axes_names); HklGeometry *geometry_init; HklDetector *detector_init; HklSample *sample_init; }; struct _HklPseudoAxisEngine { char const *name; HklGeometry *geometry; HklDetector *detector; HklSample *sample; HKL_LIST(HklPseudoAxisEngineMode *, modes); HKL_LIST(HklAxis *, axes); HKL_LIST(HklPseudoAxis *, pseudoAxes); HklPseudoAxisEngineMode *mode; HklPseudoAxisEngineList *engines; }; struct _HklPseudoAxisEngineList { HKL_LIST(HklPseudoAxisEngine *, engines); HklGeometryList *geometries; HklGeometry *geometry; HklDetector *detector; HklSample *sample; }; /*****************/ /* HklPseudoAxis */ /*****************/ extern HklPseudoAxis *hkl_pseudo_axis_new(HklParameter const *parameter, HklPseudoAxisEngine *engine); extern void hkl_pseudo_axis_init(HklPseudoAxis *self, HklParameter const *parameter, HklPseudoAxisEngine *engine); extern void hkl_pseudo_axis_free(HklPseudoAxis *self); extern void hkl_pseudo_axis_fprintf(FILE *f, HklPseudoAxis *self); /*****************************/ /* HklPseudoAxisEngineMode */ /*****************************/ extern HklPseudoAxisEngineMode *hkl_pseudo_axis_engine_mode_new( char const *name, HklPseudoAxisEngineModeFunc initialize, HklPseudoAxisEngineModeFunc get, HklPseudoAxisEngineModeFunc set, size_t n, ...); extern int hkl_pseudo_axis_engine_mode_init( HklPseudoAxisEngineMode *self, char const *name, HklPseudoAxisEngineModeFunc initialize, HklPseudoAxisEngineModeFunc get, HklPseudoAxisEngineModeFunc set, size_t n_func, HklFunction functions[], size_t n_p, HklParameter parameters[], size_t n_axes, char const *axes_names[]); extern void hkl_pseudo_axis_engine_mode_free(HklPseudoAxisEngineMode *self); /***********************/ /* HklPseudoAxisEngine */ /***********************/ extern HklPseudoAxisEngine *hkl_pseudo_axis_engine_new(char const *name, size_t n, ...); extern void hkl_pseudo_axis_engine_free(HklPseudoAxisEngine *self); extern void hkl_pseudo_axis_engine_add_mode(HklPseudoAxisEngine *self, HklPseudoAxisEngineMode *mode); extern void hkl_pseudo_axis_engine_add_geometry(HklPseudoAxisEngine *self, double const x[]); extern void hkl_pseudo_axis_engine_select_mode(HklPseudoAxisEngine *self, size_t idx); extern int hkl_pseudo_axis_engine_initialize(HklPseudoAxisEngine *self, HklError **error); extern int hkl_pseudo_axis_engine_set(HklPseudoAxisEngine *self, HklError **error); extern int hkl_pseudo_axis_engine_get(HklPseudoAxisEngine *self, HklError **error); extern void hkl_pseudo_axis_engine_fprintf(FILE *f, HklPseudoAxisEngine const *self); /***************************/ /* HklPseudoAxisEngineList */ /***************************/ extern HklPseudoAxisEngineList *hkl_pseudo_axis_engine_list_new(void); extern void hkl_pseudo_axis_engine_list_free(HklPseudoAxisEngineList *self); extern int hkl_pseudo_axis_engine_list_add(HklPseudoAxisEngineList *self, HklPseudoAxisEngine *engine); extern HklPseudoAxisEngine *hkl_pseudo_axis_engine_list_get_by_name(HklPseudoAxisEngineList *self, char const *name); extern HklPseudoAxis *hkl_pseudo_axis_engine_list_get_pseudo_axis_by_name(HklPseudoAxisEngineList *self, char const *name); extern void hkl_pseudo_axis_engine_list_clear(HklPseudoAxisEngineList *self); extern void hkl_pseudo_axis_engine_list_init(HklPseudoAxisEngineList *self, HklGeometry *geometry, HklDetector *detector, HklSample *sample); extern int hkl_pseudo_axis_engine_list_get(HklPseudoAxisEngineList *self); extern void hkl_pseudo_axis_engine_list_fprintf(FILE *f, HklPseudoAxisEngineList const *self); HKL_END_DECLS #endif /* __HKL_PSEUDOAXIS_H__ */ hkl-4.0.3/hkl/hkl-geometry.h0000644000175000017500000001064511402652607012564 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_GEOMETRY_H__ #define __HKL_GEOMETRY_H__ #include #include #include #include HKL_BEGIN_DECLS typedef struct _HklHolder HklHolder; typedef struct _HklGeometryConfig HklGeometryConfig; typedef struct _HklGeometry HklGeometry; typedef struct _HklGeometryList HklGeometryList; typedef struct _HklGeometryListItem HklGeometryListItem; typedef void (* HklGeometryListMultiplyFunction) (HklGeometryList *self, size_t idx); enum _HklGeometryType { HKL_GEOMETRY_TYPE_TWOC_VERTICAL, HKL_GEOMETRY_TYPE_EULERIAN4C_VERTICAL, HKL_GEOMETRY_TYPE_KAPPA4C_VERTICAL, HKL_GEOMETRY_TYPE_EULERIAN6C, HKL_GEOMETRY_TYPE_KAPPA6C, HKL_GEOMETRY_TYPE_ZAXIS }; typedef enum _HklGeometryType HklGeometryType; struct _HklHolder { HklGeometry *geometry; HKL_LIST(size_t, idx); HklQuaternion q; }; struct _HklGeometryConfig { const char *name; HklGeometryType type; }; struct _HklGeometry { const HklGeometryConfig *config; HklSource source; HKL_LIST(HklAxis, axes); HKL_LIST(HklHolder, holders); }; struct _HklGeometryList { HKL_LIST(HklGeometryListItem *, items); HklGeometryListMultiplyFunction multiply; }; struct _HklGeometryListItem { HklGeometry *geometry; }; /*************/ /* HklHolder */ /*************/ extern HklAxis *hkl_holder_add_rotation_axis(HklHolder *self, char const *name, double x, double y, double z); /***************/ /* HklGeometry */ /***************/ extern HklGeometry *hkl_geometry_new(void); extern HklGeometry *hkl_geometry_new_copy(HklGeometry const *self); extern void hkl_geometry_free(HklGeometry *self); extern void hkl_geometry_init_geometry(HklGeometry *self, HklGeometry const *src); extern HklHolder *hkl_geometry_add_holder(HklGeometry *self); extern void hkl_geometry_update(HklGeometry *self); extern HklAxis *hkl_geometry_get_axis_by_name(HklGeometry *self, char const *name); extern void hkl_geometry_randomize(HklGeometry *self); extern int hkl_geometry_set_values_v(HklGeometry *self, size_t len, ...); extern double hkl_geometry_distance(HklGeometry *self, HklGeometry *geom); extern double hkl_geometry_distance_orthodromic(HklGeometry *self, HklGeometry *geom); extern int hkl_geometry_closest_from_geometry_with_range(HklGeometry *self, HklGeometry *ref); extern int hkl_geometry_is_valid(HklGeometry const *self); extern void hkl_geometry_fprintf(FILE *file, HklGeometry const *self); /*******************/ /* HklGeometryList */ /*******************/ extern HklGeometryList *hkl_geometry_list_new(void); extern void hkl_geometry_list_free(HklGeometryList *self); extern void hkl_geometry_list_add(HklGeometryList *self, HklGeometry *geometry); extern void hkl_geometry_list_reset(HklGeometryList *self); extern void hkl_geometry_list_sort(HklGeometryList *self, HklGeometry *ref); extern void hkl_geometry_list_fprintf(FILE *f, HklGeometryList const *self); extern void hkl_geometry_list_multiply(HklGeometryList *self); extern void hkl_geometry_list_multiply_from_range(HklGeometryList *self); extern void hkl_geometry_list_remove_invalid(HklGeometryList *self); extern int hkl_geometry_list_len(HklGeometryList *self); extern int hkl_geometry_list_is_empty(HklGeometryList *self); /***********************/ /* HklGeometryListItem */ /***********************/ extern HklGeometryListItem *hkl_geometry_list_item_new(HklGeometry *geometry); extern void hkl_geometry_list_item_free(HklGeometryListItem *self); HKL_END_DECLS #endif /* __HKL_GEOMETRY_H__ */ hkl-4.0.3/hkl/hkl-geometry-factory.h0000644000175000017500000000314311400153353014214 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_GEOMETRY_FACTORY_H__ #define __HKL_GEOMETRY_FACTORY_H__ #include HKL_BEGIN_DECLS static const HklGeometryConfig hkl_geometry_factory_configs[] = { {"TwoC", HKL_GEOMETRY_TYPE_TWOC_VERTICAL}, {"E4CV", HKL_GEOMETRY_TYPE_EULERIAN4C_VERTICAL}, {"K4CV", HKL_GEOMETRY_TYPE_KAPPA4C_VERTICAL}, {"E6C", HKL_GEOMETRY_TYPE_EULERIAN6C}, {"K6C", HKL_GEOMETRY_TYPE_KAPPA6C}, {"ZAXIS", HKL_GEOMETRY_TYPE_ZAXIS,}, {NULL} }; extern const HklGeometryConfig *hkl_geometry_factory_get_config_from_type(HklGeometryType type); extern HklGeometry *hkl_geometry_factory_new(const HklGeometryConfig *config, ...); HKL_END_DECLS #endif /* __HKL_GEOMETRY_FACTORY_H__ */ hkl-4.0.3/hkl/hkl-pseudoaxis-factory.c0000644000175000017500000001170511402652607014553 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include #include #include #include #include #include #include static void kappa_2_kappap(double komega, double kappa, double kphi, double alpha, double *komegap, double *kappap, double *kphip) { double p; double omega; double phi; p = atan(tan(kappa/2.) * cos(alpha)); omega = komega + p - M_PI_2; phi = kphi + p + M_PI_2; *komegap = gsl_sf_angle_restrict_symm(2*omega - komega); *kappap = -kappa; *kphip = gsl_sf_angle_restrict_symm(2*phi - kphi); } static void hkl_geometry_list_multiply_k4c_real(HklGeometryList *self, size_t idx) { HklGeometry *geometry; HklGeometry *copy; double komega, komegap; double kappa, kappap; double kphi, kphip; geometry = self->items[idx]->geometry; komega = hkl_axis_get_value(&geometry->axes[0]); kappa = hkl_axis_get_value(&geometry->axes[1]); kphi = hkl_axis_get_value(&geometry->axes[2]); kappa_2_kappap(komega, kappa, kphi, 50 * HKL_DEGTORAD, &komegap, &kappap, &kphip); copy = hkl_geometry_new_copy(geometry); hkl_axis_set_value(©->axes[0], komegap); hkl_axis_set_value(©->axes[1], kappap); hkl_axis_set_value(©->axes[2], kphip); hkl_geometry_update(copy); hkl_geometry_list_add(self, copy); hkl_geometry_free(copy); } static void hkl_geometry_list_multiply_k6c_real(HklGeometryList *self, size_t idx) { HklGeometry *geometry; HklGeometry *copy; double komega, komegap; double kappa, kappap; double kphi, kphip; geometry = self->items[idx]->geometry; komega = hkl_axis_get_value(&geometry->axes[1]); kappa = hkl_axis_get_value(&geometry->axes[2]); kphi = hkl_axis_get_value(&geometry->axes[3]); kappa_2_kappap(komega, kappa, kphi, 50 * HKL_DEGTORAD, &komegap, &kappap, &kphip); copy = hkl_geometry_new_copy(geometry); hkl_axis_set_value(©->axes[1], komegap); hkl_axis_set_value(©->axes[2], kappap); hkl_axis_set_value(©->axes[3], kphip); hkl_geometry_update(copy); hkl_geometry_list_add(self, copy); hkl_geometry_free(copy); } HklPseudoAxisEngineList *hkl_pseudo_axis_engine_list_factory(const HklGeometryConfig *config) { HklPseudoAxisEngineList *self = NULL; self = hkl_pseudo_axis_engine_list_new(); switch(config->type){ case HKL_GEOMETRY_TYPE_TWOC_VERTICAL: break; case HKL_GEOMETRY_TYPE_EULERIAN4C_VERTICAL: hkl_pseudo_axis_engine_list_add(self, hkl_pseudo_axis_engine_e4cv_hkl_new()); hkl_pseudo_axis_engine_list_add(self, hkl_pseudo_axis_engine_e4cv_psi_new()); hkl_pseudo_axis_engine_list_add(self, hkl_pseudo_axis_engine_q_new()); break; case HKL_GEOMETRY_TYPE_KAPPA4C_VERTICAL: self->geometries->multiply = hkl_geometry_list_multiply_k4c_real; hkl_pseudo_axis_engine_list_add(self, hkl_pseudo_axis_engine_k4cv_hkl_new()); hkl_pseudo_axis_engine_list_add(self, hkl_pseudo_axis_engine_eulerians_new()); hkl_pseudo_axis_engine_list_add(self, hkl_pseudo_axis_engine_k4cv_psi_new()); hkl_pseudo_axis_engine_list_add(self, hkl_pseudo_axis_engine_q_new()); break; case HKL_GEOMETRY_TYPE_EULERIAN6C: hkl_pseudo_axis_engine_list_add(self, hkl_pseudo_axis_engine_e6c_hkl_new()); hkl_pseudo_axis_engine_list_add(self, hkl_pseudo_axis_engine_e6c_psi_new()); hkl_pseudo_axis_engine_list_add(self, hkl_pseudo_axis_engine_q2_new()); break; case HKL_GEOMETRY_TYPE_KAPPA6C: self->geometries->multiply = hkl_geometry_list_multiply_k6c_real; hkl_pseudo_axis_engine_list_add(self, hkl_pseudo_axis_engine_k6c_hkl_new()); hkl_pseudo_axis_engine_list_add(self, hkl_pseudo_axis_engine_eulerians_new()); hkl_pseudo_axis_engine_list_add(self, hkl_pseudo_axis_engine_k6c_psi_new()); hkl_pseudo_axis_engine_list_add(self, hkl_pseudo_axis_engine_q2_new()); break; case HKL_GEOMETRY_TYPE_ZAXIS: hkl_pseudo_axis_engine_list_add(self, hkl_pseudo_axis_engine_zaxis_hkl_new()); hkl_pseudo_axis_engine_list_add(self, hkl_pseudo_axis_engine_q2_new()); break; } return self; } hkl-4.0.3/hkl/hkl-pseudoaxis-auto.h0000644000175000017500000000247311400153354014054 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_PSEUDOAXIS_AUTO_H__ #define __HKL_PSEUDOAXIS_AUTO_H__ #include HKL_BEGIN_DECLS extern int hkl_pseudo_axis_engine_mode_set_real(HklPseudoAxisEngineMode *self, HklPseudoAxisEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, HklError **error); HKL_END_DECLS #endif /* __HKL_PSEUDOAXIS_AUTO_H__ */ hkl-4.0.3/hkl/hkl-pseudoaxis-e4cv.h0000644000175000017500000000236011400153354013740 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_PSEUDOAXIS_E4CV_H__ #define __HKL_PSEUDOAXIS_E4CV_H__ #include HKL_BEGIN_DECLS extern HklPseudoAxisEngine *hkl_pseudo_axis_engine_e4cv_hkl_new(void); extern HklPseudoAxisEngine *hkl_pseudo_axis_engine_e4cv_psi_new(void); HKL_END_DECLS #endif /* __HKL_PSEUDOAXIS_E4CV_H__ */ hkl-4.0.3/hkl/hkl-macros.h0000644000175000017500000000636111402650337012213 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_MACROS_H__ #define __HKL_MACROS_H__ #include #include /* Guard C code in headers, while including them from C++ */ #ifdef __cplusplus # define HKL_BEGIN_DECLS extern "C" { # define HKL_END_DECLS } #else # define HKL_BEGIN_DECLS # define HKL_END_DECLS #endif /* add the win32 portability part */ #if _MSC_VER && _MSC_VER <= 1200 # include # define INFINITY DBL_MAX # define M_PI 3.14159265358979323846264338328 # define M_PI_2 1.57079632679489661923132169164 #endif /* common part */ #define HKL_MAJOR 2 #define HKL_MINOR 3 #define HKL_PATCH 0 #define HKL_VERSION (HKL_MAJOR * 10000 + HKL_MINOR * 100 + HKL_PATCH) #define HKL_TRUE 1 #define HKL_FALSE 0 #define HKL_SUCCESS 0 #define HKL_FAIL -1 #define HKL_TINY 1e-7 #define HKL_EPSILON 1e-6 #define HKL_DEGTORAD (M_PI/180.) #define HKL_RADTODEG (180./M_PI) /* tau = 2pi or 1 */ #define HKL_TAU (2. * M_PI) /* #define HKL_TAU 1 */ /* specific part for the eulerian -> kappa conversion */ #define HKL_EULERIAN_KAPPA_SOLUTION 1 /* the assert method */ #ifndef NDEBUG # include # include # define hkl_assert(x) do{ if (!(x)) {hkl_printbt(); assert(x); } } while(0) #else # define hkl_assert(x) #endif /* use for the printf format methods took from glib */ #define G_GNUC_PRINTF( format_idx, arg_idx ) \ __attribute__((__format__ (__printf__, format_idx, arg_idx))) /* use for the hkl_list */ #define alloc_nr(x) (((x)+16)*3/2) /* * Realloc the buffer pointed at by variable 'x' so that it can hold * at least 'nr' entries; the number of entries currently allocated * is 'alloc', using the standard growing factor alloc_nr() macro. * * DO NOT USE any expression with side-effect for 'x' or 'alloc'. */ #define ALLOC_GROW(x, nr, alloc) \ do { \ if ((nr) > alloc) { \ if (alloc_nr(alloc) < (nr)) \ alloc = (nr); \ else \ alloc = alloc_nr(alloc); \ x = realloc((x), alloc * sizeof(*(x))); \ } \ } while(0) #ifdef __GNUC__ # define NORETURN __attribute__((__noreturn__)) #else # define NORETURN # ifndef __attribute__ # define __attribute__(x) # endif #endif HKL_BEGIN_DECLS extern void hkl_printbt(void); void *_hkl_malloc(int size, const char *error); HKL_END_DECLS /* malloc method */ #define HKL_MALLOC(type) _hkl_malloc(sizeof(type), "Can not allocate memory for a " #type) #endif hkl-4.0.3/hkl/hkl-pseudoaxis-k6c.h0000644000175000017500000000235311366756371013607 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_PSEUDOAXIS_K6C_H__ #define __HKL_PSEUDOAXIS_K6C_H__ #include HKL_BEGIN_DECLS extern HklPseudoAxisEngine *hkl_pseudo_axis_engine_k6c_hkl_new(void); extern HklPseudoAxisEngine *hkl_pseudo_axis_engine_k6c_psi_new(void); HKL_END_DECLS #endif /* __HKL_PSEUDOAXIS_K6C_H__ */ hkl-4.0.3/hkl/hkl-pseudoaxis-common-eulerians.c0000644000175000017500000001152211400153354016347 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel * Jens Krüger */ #include #include #include static int kappa_to_eulerian(double komega, double kappa, double kphi, double *omega, double *chi, double *phi, double alpha, int solution) { double Kappa = gsl_sf_angle_restrict_symm(kappa); double p = atan(tan(Kappa/2.) * cos(alpha)); if (solution){ *omega = komega + p - M_PI_2; *chi = 2 * asin(sin(Kappa/2.) * sin(alpha)); *phi = kphi + p + M_PI_2; }else{ *omega = komega + p + M_PI_2; *chi = -2 * asin(sin(Kappa/2.) * sin(alpha)); *phi = kphi + p - M_PI_2; } return HKL_SUCCESS; } static int eulerian_to_kappa(double omega, double chi, double phi, double *komega, double *kappa, double *kphi, double alpha, double solution) { int status = HKL_SUCCESS; if (fabs(chi) <= alpha * 2){ double p = asin(tan(chi/2.)/tan(alpha)); if (solution){ *komega = omega - p + M_PI_2; *kappa = 2 * asin(sin(chi/2.)/sin(alpha)); *kphi = phi - p - M_PI_2; }else{ *komega = omega + p - M_PI_2; *kappa = -2 * asin(sin(chi/2.)/sin(alpha)); *kphi = phi + p + M_PI_2; } }else status = HKL_FAIL; return status; } static int hkl_pseudo_axis_engine_mode_get_eulerians_real(HklPseudoAxisEngineMode *self, HklPseudoAxisEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, HklError **error) { double komega, kappa, kphi; int solution; hkl_geometry_update(geometry); solution = self->parameters[0].value; komega = ((HklParameter *)hkl_geometry_get_axis_by_name(geometry, "komega"))->value; kappa = ((HklParameter *)hkl_geometry_get_axis_by_name(geometry, "kappa"))->value; kphi = ((HklParameter *)hkl_geometry_get_axis_by_name(geometry, "kphi"))->value; return kappa_to_eulerian(komega, kappa, kphi, &((HklParameter *)engine->pseudoAxes[0])->value, &((HklParameter *)engine->pseudoAxes[1])->value, &((HklParameter *)engine->pseudoAxes[2])->value, 50 * HKL_DEGTORAD, solution); } static int hkl_pseudo_axis_engine_mode_set_eulerians_real(HklPseudoAxisEngineMode *self, HklPseudoAxisEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, HklError **error) { int status = HKL_SUCCESS; int solution; double angles[3]; solution = self->parameters[0].value; status |= eulerian_to_kappa(((HklParameter *)engine->pseudoAxes[0])->value, ((HklParameter *)engine->pseudoAxes[1])->value, ((HklParameter *)engine->pseudoAxes[2])->value, &angles[0], &angles[1], &angles[2], 50 * HKL_DEGTORAD, solution); if (status == HKL_SUCCESS) hkl_pseudo_axis_engine_add_geometry(engine, angles); return status; } HklPseudoAxisEngine *hkl_pseudo_axis_engine_eulerians_new(void) { HklPseudoAxisEngine *self; HklPseudoAxisEngineMode *mode; HklParameter parameter = {"solution", {0, 1}, 1., 0}; self = hkl_pseudo_axis_engine_new("eulerians", 3, "omega", "chi", "phi"); /* omega */ hkl_parameter_init((HklParameter *)self->pseudoAxes[0], "omega", -M_PI, 0., M_PI, HKL_TRUE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg); /* chi */ hkl_parameter_init((HklParameter *)self->pseudoAxes[1], "chi", -M_PI, 0., M_PI, HKL_TRUE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg); /* phi */ hkl_parameter_init((HklParameter *)self->pseudoAxes[2], "phi", -M_PI, 0., M_PI, HKL_TRUE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg); /* eulerians */ mode = hkl_pseudo_axis_engine_mode_new( "eulerians", NULL, hkl_pseudo_axis_engine_mode_get_eulerians_real, hkl_pseudo_axis_engine_mode_set_eulerians_real, 0, (size_t)1, parameter, (size_t)3, "komega", "kappa", "kphi"); hkl_pseudo_axis_engine_add_mode(self, mode); hkl_pseudo_axis_engine_select_mode(self, 0); return self; } hkl-4.0.3/hkl/hkl-source.h0000644000175000017500000000311611400153354012215 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_SOURCE_H__ #define __HKL_SOURCE_H__ #include HKL_BEGIN_DECLS #define HKL_SOURCE_DEFAULT_WAVE_LENGTH (1.54) typedef struct _HklSource HklSource; struct _HklSource { double wave_length; HklVector direction; }; extern int hkl_source_init(HklSource *self, double wave_length, double x, double y, double z); extern int hkl_source_cmp(HklSource const *self, HklSource const *s); extern void hkl_source_compute_ki(HklSource const *self, HklVector *ki); extern double hkl_source_get_wavelength(HklSource const *self); extern void hkl_source_fprintf(FILE *f, HklSource const *self); HKL_END_DECLS #endif /* __HKL_SOURCE_H__ */ hkl-4.0.3/hkl/hkl-unit.h0000644000175000017500000000325611400157303011677 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_UNIT_H__ #define __HKL_UNIT_H__ #include HKL_BEGIN_DECLS typedef struct _HklUnit HklUnit; enum _HklUnitType { HKL_UNIT_ANGLE_DEG, HKL_UNIT_ANGLE_RAD, HKL_UNIT_LENGTH_NM }; typedef enum _HklUnitType HklUnitType; struct _HklUnit { HklUnitType type; char const *name; char const *repr; }; static HklUnit const hkl_unit_angle_deg = {HKL_UNIT_ANGLE_DEG, "Degree", "°"}; static HklUnit const hkl_unit_angle_rad = {HKL_UNIT_ANGLE_RAD, "Radian", ""}; static HklUnit const hkl_unit_length_nm = {HKL_UNIT_LENGTH_NM, "Nano Meter", "nm"}; extern int hkl_unit_compatible(HklUnit const *self, HklUnit const *unit); extern double hkl_unit_factor(HklUnit const *self, HklUnit const *unit); HKL_END_DECLS #endif /* __HKL_UNIT_H__ */ hkl-4.0.3/hkl/hkl-pseudoaxis-auto.c0000644000175000017500000002333411402652607014055 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include #include /* #define DEBUG */ /*********************************************/ /* methods use to solve numerical pseudoAxes */ /*********************************************/ /** * @brief This private method find the degenerated axes. * * @param func the gsl_multiroopt_function to test * @param x the starting point * @param f the result of the function evaluation. * * with this method we can see if an axis is degenerated or not. * A degenerated axis is an axis with no effect on the function evaluation. * In the Jacobian matrix all elements of a columnn is null. * Once we know this the axis is mark as degenerated and we do not need to * change is sector. */ static void find_degenerated_axes(HklPseudoAxisEngine *self, gsl_multiroot_function *func, gsl_vector const *x, gsl_vector const *f, int degenerated[]) { gsl_matrix *J; size_t i, j; memset(degenerated, 0, x->size * sizeof(int)); J = gsl_matrix_alloc(x->size, f->size); gsl_multiroot_fdjacobian(func, x, f, GSL_SQRT_DBL_EPSILON, J); for(j=0; jsize && !degenerated[j]; ++j) { for(i=0; isize; ++i) if (fabs(gsl_matrix_get(J, i, j)) > HKL_EPSILON) break; if (i == f->size) degenerated[j] = 1; } #ifdef DEBUG fprintf(stdout, "\nLooks for degenerated axes\n"); for(i=0; isize; ++i) fprintf(stdout, " %d", degenerated[i]); for(i=0;isize;++i) { fprintf(stdout, "\n "); for(j=0;jsize;++j) fprintf(stdout, " %f", gsl_matrix_get(J, i, j)); } fprintf(stdout, "\n"); #endif gsl_matrix_free(J); } /** * @brief this private method try to find the first solution * * @param self the current HklPseudoAxeEngine. * @param f The function to use for the computation. * * If a solution was found it also check for degenerated axes. * A degenerated axes is an Axes with no effect on the function. * @see find_degenerated * @return HKL_SUCCESS (0) or HKL_FAIL (-1). */ static int find_first_geometry(HklPseudoAxisEngine *self, gsl_multiroot_function *f, int degenerated[]) { gsl_multiroot_fsolver_type const *T; gsl_multiroot_fsolver *s; gsl_vector *x; size_t len = HKL_LIST_LEN(self->axes); double *x_data; double *x_data0 = alloca(len * sizeof(*x_data0)); size_t iter = 0; int status; int res = HKL_FAIL; size_t i; /* get the starting point from the geometry */ /* must be put in the auto_set method */ x = gsl_vector_alloc(len); x_data = (double *)x->data; for(i=0; iaxes[i]); /* keep a copy of the first axes positions to deal with degenerated axes */ memcpy(x_data0, x_data, len * sizeof(double)); /* Initialize method */ T = gsl_multiroot_fsolver_hybrid; s = gsl_multiroot_fsolver_alloc (T, len); gsl_multiroot_fsolver_set (s, f, x); /* iterate to find the solution */ do { ++iter; status = gsl_multiroot_fsolver_iterate(s); if (status || iter % 1000 == 0) { /* Restart from another point. */ for(i=0; if, HKL_EPSILON); } while (status == GSL_CONTINUE && iter < 1000); #ifdef DEBUG fprintf(stdout, "\nstatus : %d iter : %d", status, iter); for(i=0; if->data[i]); fprintf(stdout, "\n"); #endif if (status != GSL_CONTINUE) { find_degenerated_axes(self, f, s->x, s->f, degenerated); #ifdef DEBUG /* print the test header */ fprintf(stdout, "\n"); for(i=0; iaxes[i])->name); #endif /* set the geometry from the gsl_vector */ /* in a futur version the geometry must contain a gsl_vector */ /* to avoid this. */ x_data = (double *)s->x->data; for(i=0; iaxes[i], x_data0[i]); else hkl_axis_set_value(self->axes[i], x_data[i]); hkl_geometry_update(self->geometry); res = HKL_SUCCESS; } /* release memory */ gsl_vector_free(x); gsl_multiroot_fsolver_free(s); return res; } /** * @brief This private method change the sector of angles. * * @param x The vector of changed angles. * @param x0 The vector of angles to change. * @param sector the sector vector operation. * @param n the size of all vectors. * * 0 -> no change * 1 -> pi - angle * 2 -> pi + angle * 3 -> -angle */ static void change_sector(double x[], double const x0[], int const sector[], size_t n) { size_t i; for(i=0; idata; function->f(x, function->params, f); for(i=0; isize; ++i) if (fabs(f_data[i]) > HKL_EPSILON){ res = HKL_FAIL; break; } #ifdef DEBUG fprintf(stdout, "\n"); for(i=0; isize; ++i) if(fabs(f_data[i]) < HKL_EPSILON) fprintf(stdout, "\t%f *", f_data[i]); else fprintf(stdout, "\t%f", f_data[i]); for(i=0; isize; ++i) fprintf(stdout, "\t%f", gsl_sf_angle_restrict_symm(x->data[i]) * HKL_RADTODEG); if(res == HKL_FAIL) fprintf(stdout, "\t FAIL"); else fprintf(stdout, "\t SUCCESS"); #endif return res; } /** * @brief compute the permutation and test its validity. * * @param axes_len number of axes * @param op_len number of operation per axes. (4 for now) * @param p The vector containing the current permutation. * @param axes_idx The index of the axes we are permution. * @param op the current operation to set. * @param f The function for the validity test. * @param x0 The starting point of all geometry permutations. * @param _x a gsl_vector use to compute the sectors (optimization) * @param _f a gsl_vector use during the sector test (optimization) */ static void perm_r(size_t axes_len, int op_len[], int p[], int axes_idx, int op, gsl_multiroot_function *f, double x0[], gsl_vector *_x, gsl_vector *_f) { int i; p[axes_idx++] = op; if (axes_idx == axes_len) { double *x_data = _x->data; change_sector(x_data, x0, p, axes_len); if (HKL_SUCCESS == test_sector(_x, f, _f)) hkl_pseudo_axis_engine_add_geometry(f->params, x_data); } else for (i=0; igeometries. */ static int solve_function(HklPseudoAxisEngine *self, HklFunction function) { size_t i; size_t len = HKL_LIST_LEN(self->axes); int *p = alloca(len * sizeof(*p)); double *x0 = alloca(len * sizeof(*x0)); int *degenerated = alloca(len * sizeof(*degenerated)); int *op_len = alloca(len * sizeof(*op_len)); int res; gsl_vector *_x; /* use to compute sectors in perm_r (avoid copy) */ gsl_vector *_f; /* use to test sectors in perm_r (avoid copy) */ gsl_multiroot_function f; _x = gsl_vector_alloc(len); _f = gsl_vector_alloc(len); f.f = function; f.n = len; f.params = self; res = find_first_geometry(self, &f, degenerated); if (!res) { memset(p, 0, sizeof(p)); /* use first solution as starting point for permutations */ for(i=0; iaxes[i]); if (degenerated[i]) op_len[i] = 1; else op_len[i] = 4; } for (i=0; ifunctions);++i) res &= solve_function(engine, self->functions[i]); #ifdef DEBUG hkl_pseudo_axis_engine_fprintf(stdout, engine); #endif return res; } hkl-4.0.3/hkl/hkl-pseudoaxis-zaxis-hkl.c0000644000175000017500000000436611400153354015014 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include #include static int reflectivity(const gsl_vector *x, void *params, gsl_vector *f) { double mu, gamma; double const *x_data = gsl_vector_const_ptr(x, 0); double *f_data = gsl_vector_ptr(f, 0); RUBh_minus_Q(x_data, params, f_data); mu = x_data[0]; gamma = x_data[3]; f_data[3] = mu - gamma; return GSL_SUCCESS; } /*************************/ /* ZAXIS PseudoAxeEngine */ /*************************/ HklPseudoAxisEngine *hkl_pseudo_axis_engine_zaxis_hkl_new(void) { HklPseudoAxisEngine *self; HklPseudoAxisEngineMode *mode; self = hkl_pseudo_axis_engine_hkl_new(); /* zaxis */ mode = hkl_pseudo_axis_engine_mode_new( "zaxis", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, RUBh_minus_Q_func, (size_t)0, (size_t)3, "omega", "delta", "gamma"); hkl_pseudo_axis_engine_add_mode(self, mode); /* reflectivity */ mode = hkl_pseudo_axis_engine_mode_new( "reflectivity", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, reflectivity, (size_t)0, (size_t)4, "mu", "omega", "delta", "gamma"); hkl_pseudo_axis_engine_add_mode(self, mode); hkl_pseudo_axis_engine_select_mode(self, 0); return self; } hkl-4.0.3/hkl/hkl-pseudoaxis.c0000644000175000017500000003625711402652607013117 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include #include /*****************/ /* HklPseudoAxis */ /*****************/ HklPseudoAxis *hkl_pseudo_axis_new(HklParameter const *parameter, HklPseudoAxisEngine *engine) { HklPseudoAxis *self; self = HKL_MALLOC(HklPseudoAxis); hkl_pseudo_axis_init(self, parameter, engine); return self; } void hkl_pseudo_axis_init(HklPseudoAxis *self, HklParameter const *parameter, HklPseudoAxisEngine *engine) { self->parent = *parameter; self->engine = engine; } void hkl_pseudo_axis_free(HklPseudoAxis *self) { if(self) free(self); } void hkl_pseudo_axis_fprintf(FILE *f, HklPseudoAxis *self) { hkl_parameter_fprintf(f, &self->parent); fprintf(f, " %p", self->engine); } /*****************************/ /* HklPseudoAxisEngineMode */ /*****************************/ /** * @brief this method create an HklPseudoAxisEngineMode * @param name The name of this HklPseudoAxisEngineMode. * @param get The get method. * @param set the set method. * @param n the number of parameters. * @param ... rest of the parameters. * * This method create an HklPseudoAxisEngineMode structure * to be used in a HklPseudoAxisEngine. * The variable number of parameters contain in fact n * pointers on the parameters the an interger giving the * number of related axes and finally the name of thoses * related axes. * * mode = hkl_pseudo_axis_engine_mode_new( * "constant_omega", * hkl_pseudo_axis_engine_getter_func_hkl, * hkl_pseudo_axis_engine_setter_func_constant_omega, * 1, ¶meter, * 4, "komega", "kappa", "kphi", "tth"); */ HklPseudoAxisEngineMode *hkl_pseudo_axis_engine_mode_new( char const *name, HklPseudoAxisEngineModeFunc initialize, HklPseudoAxisEngineModeFunc get, HklPseudoAxisEngineModeFunc set, size_t n, ...) { HklPseudoAxisEngineMode *self = NULL; va_list ap; size_t i; size_t n_p; size_t n_a; HklFunction *functions; HklParameter *parameters; const char **axes; /* extract the variable part of the method */ va_start(ap, n); /* functions */ functions = alloca(n * sizeof(*functions)); for(i=0; iname = name; self->initialize = initialize; self->get = get; self->set = set; /* functions */ HKL_LIST_RESIZE(self->functions, functions_len); for(i=0; ifunctions[i] = functions[i]; /* parameters */ HKL_LIST_RESIZE(self->parameters, parameters_len); for(i=0; iparameters[i] = parameters[i]; /* axes */ HKL_LIST_RESIZE(self->axes_names, axes_names_len); for(i=0; iaxes_names[i] = axes_names[i]; /* init part */ self->geometry_init = NULL; self->detector_init = NULL; self->sample_init = NULL; return HKL_SUCCESS; } /** * @brief release the memory of an HklPseudoAxisEngineMode */ void hkl_pseudo_axis_engine_mode_free(HklPseudoAxisEngineMode *self) { HKL_LIST_FREE(self->functions); HKL_LIST_FREE(self->parameters); HKL_LIST_FREE(self->axes_names); if(self->geometry_init){ hkl_geometry_free(self->geometry_init); self->geometry_init = NULL; } if(self->detector_init){ hkl_detector_free(self->detector_init); self->detector_init = NULL; } if(self->sample_init){ hkl_sample_free(self->sample_init); self->sample_init = NULL; } free(self); } /***********************/ /* HklPseudoAxisEngine */ /***********************/ /** * @brief create a new HklPseudoAxisEngine * @param name The name of this engine * @param n the number of HklPseudoAxis of the engine * @param ... the names of thoses pseudo-axes. * * self = hkl_pseudo_axis_engine_new("hkl", 3, "h", "k", "l"); */ HklPseudoAxisEngine *hkl_pseudo_axis_engine_new(char const *name, size_t n, ...) { va_list ap; size_t i; HklPseudoAxisEngine *self = NULL; self = HKL_MALLOC(HklPseudoAxisEngine); self->name = name; /* create the pseudoAxes */ HKL_LIST_ALLOC(self->pseudoAxes, n); va_start(ap, n); for(i=0; ipseudoAxes[i] = hkl_pseudo_axis_new(¶meter, self); } va_end(ap); return self; } /** * @brief Release the memory of an HklPseudoAxisEngine */ void hkl_pseudo_axis_engine_free(HklPseudoAxisEngine *self) { if (self->geometry) hkl_geometry_free(self->geometry); if(self->detector) hkl_detector_free(self->detector); if(self->sample) hkl_sample_free(self->sample); /* release the axes memory */ HKL_LIST_FREE(self->axes); /* release the mode added */ HKL_LIST_FREE_DESTRUCTOR(self->modes, hkl_pseudo_axis_engine_mode_free); /* release the HklPseudoAxe memory */ HKL_LIST_FREE_DESTRUCTOR(self->pseudoAxes, hkl_pseudo_axis_free); free(self); } /** * @brief add an HklPseudoAxisEngineMode to an engine. * @param self the engine * @param mode the getter and setter to add. */ void hkl_pseudo_axis_engine_add_mode(HklPseudoAxisEngine *self, HklPseudoAxisEngineMode *mode) { HKL_LIST_ADD_VALUE(self->modes, mode); } /** * @brief this method Add a geometry to the geometries * * @param self The current PseudoAxeEngine * @param x A vector of double with the axes values to put in the geometry. * * This method try to be clever by allocating memory only if the current * length of the geometries is not large enought. Then it just set the * geometry axes and copy it to the right geometries. We do not gives the * x len as it is equal to the self->axes_len. */ void hkl_pseudo_axis_engine_add_geometry(HklPseudoAxisEngine *self, double const x[]) { size_t i; /* copy the axes configuration into the engine->geometry */ for(i=0; iaxes); ++i) hkl_axis_set_value(self->axes[i], gsl_sf_angle_restrict_symm(x[i])); hkl_geometry_list_add(self->engines->geometries, self->geometry); } static void hkl_pseudo_axis_engine_prepare_internal(HklPseudoAxisEngine *self) { size_t i; size_t len; if(!self || !self->engines) return; /* set */ if(self->geometry) hkl_geometry_init_geometry(self->geometry, self->engines->geometry); else self->geometry = hkl_geometry_new_copy(self->engines->geometry); if(self->detector) hkl_detector_free(self->detector); self->detector = hkl_detector_new_copy(self->engines->detector); if(self->sample) hkl_sample_free(self->sample); self->sample = hkl_sample_new_copy(self->engines->sample); /* fill the axes member from the function */ if(self->mode){ len = HKL_LIST_LEN(self->mode->axes_names); HKL_LIST_RESIZE(self->axes, len); for(i=0; iaxes[i] = hkl_geometry_get_axis_by_name(self->geometry, self->mode->axes_names[i]); } /* reset the geometries len */ hkl_geometry_list_reset(self->engines->geometries); } /* * This method also populate the self->axes from the mode->axes_names. * this is to speed the computation of the numerical axes. this method is * usually only use with numerical pseudoAxes. */ void hkl_pseudo_axis_engine_select_mode(HklPseudoAxisEngine *self, size_t idx) { if(!self || idx > HKL_LIST_LEN(self->modes)) return; self->mode = self->modes[idx]; hkl_pseudo_axis_engine_prepare_internal(self); } int hkl_pseudo_axis_engine_initialize(HklPseudoAxisEngine *self, HklError **error) { int res = HKL_FAIL; if(!self || !self->geometry || !self->detector || !self->sample) return res; if (self->mode && self->mode->initialize){ HklError *tmp_error; tmp_error = NULL; res = self->mode->initialize(self->mode, self, self->engines->geometry, self->engines->detector, self->engines->sample, &tmp_error); if(tmp_error != NULL) hkl_error_propagate(error, tmp_error); } return res; } int hkl_pseudo_axis_engine_set(HklPseudoAxisEngine *self, HklError **error) { int res = HKL_FAIL; if(!self || !self->geometry || !self->detector || !self->sample) return res; hkl_pseudo_axis_engine_prepare_internal(self); if (self->mode && self->mode->set){ HklError *tmp_error; tmp_error = NULL; res = self->mode->set(self->mode, self, self->geometry, self->detector, self->sample, &tmp_error); if(tmp_error != NULL) hkl_error_propagate(error, tmp_error); } hkl_geometry_list_multiply(self->engines->geometries); hkl_geometry_list_multiply_from_range(self->engines->geometries); hkl_geometry_list_remove_invalid(self->engines->geometries); hkl_geometry_list_sort(self->engines->geometries, self->engines->geometry); if(hkl_geometry_list_is_empty(self->engines->geometries)) res = HKL_FAIL; return res; } int hkl_pseudo_axis_engine_get(HklPseudoAxisEngine *self, HklError **error) { int res = HKL_FAIL; if(!self || !self->engines || !self->engines->geometry || !self->engines->detector || !self->engines->sample) return res; if (self->mode && self->mode->get){ HklError *tmp_error; tmp_error = NULL; res = self->mode->get(self->mode, self, self->engines->geometry, self->engines->detector, self->engines->sample, &tmp_error); if(tmp_error != NULL) hkl_error_propagate(error, tmp_error); } return res; } void hkl_pseudo_axis_engine_fprintf(FILE *f, HklPseudoAxisEngine const *self) { size_t i; fprintf(f, "\nPseudoAxesEngine : \"%s\"", self->name); /* mode */ if (self->mode) { fprintf(f, " %s", self->mode->name); for(i=0; imode->parameters); ++i){ fprintf(f, "\n "); hkl_parameter_fprintf(f, &self->mode->parameters[i]); } fprintf(f, "\n"); } /* the pseudoAxes part */ for(i=0; ipseudoAxes); ++i) { fprintf(f, "\n "); hkl_pseudo_axis_fprintf(f, self->pseudoAxes[i]); } if(!hkl_geometry_list_is_empty(self->engines->geometries)){ fprintf(f, "\n "); hkl_geometry_list_fprintf(f, self->engines->geometries); } fprintf(f, "\n"); } /***************************/ /* HklPseudoAxisEngineList */ /***************************/ HklPseudoAxisEngineList *hkl_pseudo_axis_engine_list_new(void) { HklPseudoAxisEngineList *self = NULL; self = HKL_MALLOC(HklPseudoAxisEngineList); HKL_LIST_INIT(self->engines); self->geometries = hkl_geometry_list_new(); self->geometry = NULL; self->detector = NULL; self->sample = NULL; return self; } void hkl_pseudo_axis_engine_list_free(HklPseudoAxisEngineList *self) { hkl_pseudo_axis_engine_list_clear(self); hkl_geometry_list_free(self->geometries); free(self); } int hkl_pseudo_axis_engine_list_add(HklPseudoAxisEngineList *self, HklPseudoAxisEngine *engine) { if (!engine) return HKL_FAIL; /* set the engines to access the Geometries list. */ engine->engines = self; HKL_LIST_ADD_VALUE(self->engines, engine); return HKL_SUCCESS; } HklPseudoAxisEngine *hkl_pseudo_axis_engine_list_get_by_name(HklPseudoAxisEngineList *self, char const *name) { size_t i; for(i=0; iengines); ++i) if (!strcmp(self->engines[i]->name, name)) return self->engines[i]; return NULL; } /* TODO test */ HklPseudoAxis *hkl_pseudo_axis_engine_list_get_pseudo_axis_by_name(HklPseudoAxisEngineList *self, char const *name) { size_t i, j; HklPseudoAxis *pseudo = NULL; for(i=0; iengines); ++i){ HklPseudoAxisEngine *engine; engine = self->engines[i]; for(j=0; jpseudoAxes); ++j){ HklParameter *parameter; parameter = (HklParameter *)engine->pseudoAxes[j]; if (!strcmp(parameter->name, name)) return engine->pseudoAxes[j]; } } return pseudo; } void hkl_pseudo_axis_engine_list_clear(HklPseudoAxisEngineList *self) { HKL_LIST_FREE_DESTRUCTOR(self->engines, hkl_pseudo_axis_engine_free); } void hkl_pseudo_axis_engine_list_init(HklPseudoAxisEngineList *self, HklGeometry *geometry, HklDetector *detector, HklSample *sample) { size_t i; self->geometry = geometry; self->detector = detector; self->sample = sample; for(i=0; iengines); ++i) hkl_pseudo_axis_engine_prepare_internal(self->engines[i]); } int hkl_pseudo_axis_engine_list_get(HklPseudoAxisEngineList *self) { size_t i; int res = HKL_SUCCESS; if (!self) return res; for(i=0; iengines); ++i) if (!hkl_pseudo_axis_engine_get(self->engines[i], NULL)) res = HKL_FAIL; return res; } void hkl_pseudo_axis_engine_list_fprintf(FILE *f, HklPseudoAxisEngineList const *self) { size_t i; for(i=0; iengines); ++i) hkl_pseudo_axis_engine_fprintf(f, self->engines[i]); } hkl-4.0.3/hkl/hkl-vector.c0000644000175000017500000003067711400153354012226 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include #include #include #include /** * hkl_vector_init: * @self: the #HklVector to initialize. * @x: the first coordinate value * @y: the second coordinate value * @z: the third coordinate value * * initialize an #HklVector **/ void hkl_vector_init(HklVector *self, double x, double y, double z) { self->data[0] = x; self->data[1] = y; self->data[2] = z; } /** * hkl_vector_fprintf: * @file: the stream to print into * @self: the #HklVector to print. * * print an #HklVector into a stream **/ void hkl_vector_fprintf(FILE *file, const HklVector *self) { fprintf(file, "|%f, %f, %f|", self->data[0], self->data[1], self->data[2]); } /** * hkl_vector_cmp: * @self: the first vector * @vector: th vector to compare with * * compare two #HklVector. this comparison use HKL_EPSILON * to do the comparison. * * Returns: HKL_FALSE if both are equals, HKL_TRUE otherwise. **/ int hkl_vector_cmp(const HklVector *self, const HklVector *vector) { unsigned int i; for (i=0; i<3; i++) if ( fabs(self->data[i] - vector->data[i]) > HKL_EPSILON ) return HKL_TRUE; return HKL_FALSE; } /**not yet used*/ int hkl_vector_is_opposite(const HklVector *self, const HklVector *vector) { unsigned int i; for (i=0; i<3; i++) if ( fabs(self->data[i] + vector->data[i]) > HKL_EPSILON ) return HKL_FALSE; return HKL_TRUE; } /** * hkl_vector_add_vector: * @self: the modified #HklVector * @vector: the #hklvector to add * * add an #HklVector to another one. **/ void hkl_vector_add_vector(HklVector *self, const HklVector *vector) { unsigned int i; for (i=0;i<3;i++) self->data[i] += vector->data[i]; } /** * hkl_vector_minus_vector: * @self: the modified #HklVector * @vector: the #hklvector to substract * * substract an #HklVector to another one. **/ void hkl_vector_minus_vector(HklVector *self, const HklVector *vector) { unsigned int i; for (i=0;i<3;i++) self->data[i] -= vector->data[i]; } /** * hkl_vector_div_double: * @self: the #HklVector to divide. * @d: constant use to divide the #HklVector * * divide an #HklVector by constant. **/ void hkl_vector_div_double(HklVector *self, const double d) { unsigned int i; for (i=0;i<3;i++) self->data[i] /= d; } /** * hkl_vector_times_double: * @self: the #HklVector to modify * @d: the multiply factor * * multiply an #HklVector by a constant value. **/ void hkl_vector_times_double(HklVector *self, const double d) { unsigned int i; for (i=0;i<3;i++) self->data[i] *= d; } /** * hkl_vector_times_vector: * @self: the #HklVector to modify * @vector: the #HklVector use to modify the first one * * multiply an #HklVector by another one. This method multiply * coordinate by coordinate. **/ void hkl_vector_times_vector(HklVector *self, const HklVector *vector) { unsigned int i; for (i=0;i<3;i++) self->data[i] *= vector->data[i]; } /** * hkl_vector_times_smatrix: * @self: the #HklVector to multiply * @m: the #HklMatrix use to multiply the #HklVector * * multiply an #HklVector by an #HklMatrix. * compute v'= M . v **/ void hkl_vector_times_matrix(HklVector *self, const HklMatrix *m) { HklVector tmp; tmp = *self; self->data[0] = tmp.data[0] *m->data[0][0] + tmp.data[1] *m->data[1][0] + tmp.data[2] *m->data[2][0]; self->data[1] = tmp.data[0] *m->data[0][1] + tmp.data[1] *m->data[1][1] + tmp.data[2] *m->data[2][1]; self->data[2] = tmp.data[0] *m->data[0][2] + tmp.data[1] *m->data[1][2] + tmp.data[2] *m->data[2][2]; } /** * hkl_vector_sum: * @self: the #HklVector to sum. * * compute the #HklVector sum of all its elements. * * Returns: the sum of all elements. **/ double hkl_vector_sum(const HklVector *self) { return self->data[0] + self->data[1] + self->data[2]; } /** * hkl_vector_scalar_product: * @self: the first #HklVector * @vector: the second #HklVector * * compute the scalar product of two #HklVector * * Returns: the scalar product. **/ double hkl_vector_scalar_product(const HklVector *self, const HklVector *vector) { unsigned int i; double scalar = 0; for (i=0;i<3;i++) scalar += self->data[i] *vector->data[i]; return scalar; } /** * hkl_vector_vectorial_product: * @self: the first #HklVector (modify) * @vector: the second #HklVector * * compute the vectorial product of two vectors **/ void hkl_vector_vectorial_product(HklVector *self, const HklVector *vector) { HklVector tmp; tmp = *self; self->data[0] = tmp.data[1] * vector->data[2] - tmp.data[2] * vector->data[1]; self->data[1] = tmp.data[2] * vector->data[0] - tmp.data[0] * vector->data[2]; self->data[2] = tmp.data[0] * vector->data[1] - tmp.data[1] * vector->data[0]; } /** * hkl_vector_angle: * @self: the fist #HklVector * @vector: the second #HklVector * * compute the angles beetween two #HklVector * * Returns: the return value is in beetween [0, pi] **/ double hkl_vector_angle(const HklVector *self, const HklVector *vector) { double angle; double cos_angle; double norm; double norm_self; double norm_vector; norm_self = hkl_vector_norm2(self); norm_vector = hkl_vector_norm2(vector); if(norm_self < HKL_EPSILON || norm_vector < HKL_EPSILON) return GSL_NAN; norm = norm_self * norm_vector; cos_angle = hkl_vector_scalar_product(self, vector) / norm; /* problem with round */ if (cos_angle >= 1 ) angle = 0; else if (cos_angle <= -1 ) angle = M_PI; else angle = acos(cos_angle); return angle; } /** * hkl_vector_oriented_angle: * @self: the first #HklVector * @vector: the second #HklVector * @ref: the reference #HklVector * * compute the angles beetween two #HklVector and use * a reference #HklVector to orientate the space. That's * way the return value can be in beetween [-pi, pi]. * the (self, vector, ref) is a right oriented base. * * Returns: the angles [-pi, pi] **/ double hkl_vector_oriented_angle(const HklVector *self, const HklVector *vector, const HklVector *ref) { double angle; HklVector tmp; HklVector ref_u; angle = hkl_vector_angle(self, vector); tmp = *self; hkl_vector_vectorial_product(&tmp, vector); hkl_vector_normalize(&tmp); ref_u = *ref; hkl_vector_normalize(&ref_u); if (hkl_vector_is_opposite(&tmp, &ref_u)) angle = -angle; return angle; } /** * hkl_vector_normalize: * @self: the #HklVector to normalize * * normalize a hkl_vector * * Returns: HKL_TRUE if the #HklVector can be normalized, HKL_FALSE otherwise **/ int hkl_vector_normalize(HklVector *self) { int status = HKL_FAIL; double norm = hkl_vector_norm2(self); if ( norm > HKL_EPSILON ) { hkl_vector_div_double(self, norm); status = HKL_SUCCESS; } return status; } /** * hkl_vector_is_colinear: * @self: the first #HklVector * @vector: the second #HklVector * * check if two #HklVector are colinears * * Returns: HKL_TRUE if both are colinear. **/ int hkl_vector_is_colinear(const HklVector *self, const HklVector *vector) { int is_colinear = 0; HklVector tmp = *self; hkl_vector_vectorial_product(&tmp, vector); if (hkl_vector_norm2(&tmp) < HKL_EPSILON) is_colinear = 1; return is_colinear; } /** * hkl_vector_randomize: * @self: the #HklVector to randomize * * initialize a vector with random values. * coordinates range [-1, 1] **/ void hkl_vector_randomize(HklVector *self) { self->data[0] = -1 + 2 *rand()/(RAND_MAX+1.0); self->data[1] = -1 + 2 *rand()/(RAND_MAX+1.0); self->data[2] = -1 + 2 *rand()/(RAND_MAX+1.0); } /** * hkl_vector_randomize_vector: * @self: the #HklVector to randomize * @vector: the #HklVector result to avoid * * randomize an #HklVector an be sure that it is not equal * to the #HklVector vector. **/ void hkl_vector_randomize_vector(HklVector *self, const HklVector *vector) { do hkl_vector_randomize(self); while (!hkl_vector_cmp(self, vector)); } /** * hkl_vector_randomize_vector_vector: * @self: the #HklVector to randomize * @vector1: the first #HklVector solution to avoid * @vector2: the second #HklVector solution to avoid * * randomize an #HklVector an be sure that it is not equal * to the #HklVector vector1 and vector2. * **/ void hkl_vector_randomize_vector_vector(HklVector *self, const HklVector *vector1, const HklVector *vector2) { do hkl_vector_randomize(self); while (!hkl_vector_cmp(self, vector1) || !hkl_vector_cmp(self, vector2)); } /** * hkl_vector_rotated_around_vector: * @self: the #HklVector to rotate * @axe: the axe of rotation * @angle: the angle of the rotation * * rotate a vector around another one with a given angle. **/ void hkl_vector_rotated_around_vector(HklVector *self, const HklVector *axe, double angle) { double c = cos(angle); double s = sin(angle); HklVector axe_n; HklVector tmp; axe_n = *axe; hkl_vector_normalize(&axe_n); tmp = *self; self->data[0] = (c + (1 - c) * axe_n.data[0] * axe_n.data[0]) * tmp.data[0]; self->data[0] += ((1 - c) * axe_n.data[0] * axe_n.data[1] - axe_n.data[2] * s) * tmp.data[1]; self->data[0] += ((1 - c) * axe_n.data[0] * axe_n.data[2] + axe_n.data[1] * s) * tmp.data[2]; self->data[1] = ((1 - c) * axe_n.data[0] * axe_n.data[1] + axe_n.data[2] * s) * tmp.data[0]; self->data[1] += (c + (1 - c) * axe_n.data[1] * axe_n.data[1]) * tmp.data[1]; self->data[1] += ((1 - c) * axe_n.data[1] * axe_n.data[2] - axe_n.data[0] * s) * tmp.data[2]; self->data[2] = ((1 - c) * axe_n.data[0] * axe_n.data[2] - axe_n.data[1] * s) * tmp.data[0]; self->data[2] += ((1 - c) * axe_n.data[1] * axe_n.data[2] + axe_n.data[0] * s) * tmp.data[1]; self->data[2] += (c + (1 - c) * axe_n.data[2] * axe_n.data[2]) * tmp.data[2]; } /** * hkl_vector_norm2: * @self: the #hklvector use to compute the norm2 * * compute the norm2 of an #HklVector * * Returns: the sqrt(|v|) **/ double hkl_vector_norm2(const HklVector *self) { return sqrt(self->data[0] * self->data[0] + self->data[1] * self->data[1] + self->data[2] * self->data[2]); } /** * hkl_vector_rotated_quaternion: * @self: the #HklVector to rotate * @qr: the #HklQuaternion use to rotate the vector * * rotate an #HklVector using an #HklQuaternion. **/ void hkl_vector_rotated_quaternion(HklVector *self, const HklQuaternion *qr) { double v1 = self->data[0]; double v2 = self->data[1]; double v3 = self->data[2]; double a = qr->data[0]; double b = qr->data[1]; double c = qr->data[2]; double d = qr->data[3]; double t2 = a*b; double t3 = a*c; double t4 = a*d; double t5 = -b*b; double t6 = b*c; double t7 = b*d; double t8 = -c*c; double t9 = c*d; double t10 = -d*d; self->data[0] = 2*( (t8 + t10)*v1 + (t6 - t4)*v2 + (t3 + t7)*v3 ) + v1; self->data[1] = 2*( (t4 + t6)*v1 + (t5 + t10)*v2 + (t9 - t2)*v3 ) + v2; self->data[2] = 2*( (t7 - t3)*v1 + (t2 + t9)*v2 + (t5 + t8)*v3 ) + v3; } /** * hkl_vector_is_null: * @self: the #hklvector to check * * check if all the coordinates of an #HklVector are null. * * Returns: HKl_TRUE if all |elements| are below HKL_EPSILON, HKl_FALSE otherwise * * Todo: test */ int hkl_vector_is_null(const HklVector *self) { unsigned int i; for (i=0; i<3; i++) if ( fabs(self->data[i]) > HKL_EPSILON ) return HKL_FALSE; return HKL_TRUE; } /** * hkl_vector_project_on_plan: * @self: the vector to project (modify) * @plan: the normal of the plane. * * project an #HklVector on a plan. * * @todo test **/ void hkl_vector_project_on_plan(HklVector *self, const HklVector *plan) { HklVector tmp; tmp = *plan; hkl_vector_normalize(&tmp); hkl_vector_times_double(&tmp, hkl_vector_scalar_product(self, &tmp)); hkl_vector_minus_vector(self, &tmp); } hkl-4.0.3/hkl/hkl-pseudoaxis-common-hkl.h0000644000175000017500000000442311366756371015170 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel * Maria-Teresa Nunez-Pardo-de-Verra */ #include extern int RUBh_minus_Q_func(const gsl_vector *x, void *params, gsl_vector *f); extern int double_diffraction_func(const gsl_vector *x, void *params, gsl_vector *f); extern int psi_constant_vertical_func(const gsl_vector *x, void *params, gsl_vector *f); extern int RUBh_minus_Q(double const x[], void *params, double f[]); extern int double_diffraction(double const x[], void *params, double f[]); /** * @brief Standard getter for the hkl pseudoAxis. * * @param self * @param geometry * @param detector * @param sample * * @return the status of the getter method. * * This method can be used with all geometries of diffractometers * in getter/setter. */ extern int hkl_pseudo_axis_engine_mode_get_hkl_real(HklPseudoAxisEngineMode *self, HklPseudoAxisEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, HklError **error); extern int hkl_pseudo_axis_engine_mode_init_psi_constant_vertical_real(HklPseudoAxisEngineMode *base, HklPseudoAxisEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, HklError **error); extern HklPseudoAxisEngine *hkl_pseudo_axis_engine_hkl_new(void); hkl-4.0.3/hkl/hkl-matrix.h0000644000175000017500000000425111400153354012222 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_MATRIX_H__ #define __HKL_MATRIX_H__ #include #include #include HKL_BEGIN_DECLS struct _HklMatrix { double data[3][3]; }; extern void hkl_matrix_init(HklMatrix *self, double m11, double m12, double m13, double m21, double m22, double m23, double m31, double m32, double m33); extern void hkl_matrix_init_from_two_vector(HklMatrix *self, const HklVector *v1, const HklVector *v2); extern void hkl_matrix_init_from_euler(HklMatrix *self, double euler_x, double euler_y, double euler_z); extern void hkl_matrix_fprintf(FILE *file, const HklMatrix *self); extern void hkl_matrix_to_euler(const HklMatrix *self, double *euler_x, double *euler_y, double *euler_z); extern int hkl_matrix_cmp(const HklMatrix *self, const HklMatrix *m); extern void hkl_matrix_times_matrix(HklMatrix *self, const HklMatrix *m); extern void hkl_matrix_times_vector(const HklMatrix *self, HklVector *v); extern void hkl_matrix_transpose(HklMatrix *self); extern double hkl_matrix_det(const HklMatrix *self); extern int hkl_matrix_solve(const HklMatrix *self, HklVector *x, const HklVector *b); extern int hkl_matrix_is_null(const HklMatrix *self); HKL_END_DECLS #endif hkl-4.0.3/hkl/hkl-parameter.c0000644000175000017500000001040111400153354012663 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include HklParameter *hkl_parameter_new(char const *name, double min, double value, double max, int fit, int changed, HklUnit const *unit, HklUnit const *punit) { HklParameter *parameter; parameter = HKL_MALLOC(HklParameter); if (hkl_parameter_init(parameter, name, min, value, max, fit, changed, unit, punit)) { free(parameter); parameter = NULL; } return parameter; } HklParameter *hkl_parameter_new_copy(HklParameter const *self) { HklParameter *parameter = NULL; parameter = HKL_MALLOC(HklParameter); *parameter = *self; return parameter; } int hkl_parameter_init(HklParameter *self, char const *name, double min, double value, double max, int fit, int changed, HklUnit const *unit, HklUnit const *punit) { if (min <= value && value <= max && strcmp(name, "") && hkl_unit_compatible(unit, punit)) { self->name = name; self->range.min = min; self->range.max = max; self->value = value; self->unit = unit; self->punit = punit; self->fit = fit; self->changed = changed; } else return HKL_FAIL; return HKL_SUCCESS; } void hkl_parameter_free(HklParameter *self) { free(self); } void hkl_parameter_set_value(HklParameter *self, double value) { self->value = value; self->changed = HKL_TRUE; } /* TODO test */ double hkl_parameter_get_value_unit(HklParameter const *self) { double factor = hkl_unit_factor(self->unit, self->punit); return self->value * factor; } /* TODO test */ int hkl_parameter_set_value_unit(HklParameter *self, double value) { double factor = hkl_unit_factor(self->unit, self->punit); self->value = value / factor; self->changed = HKL_TRUE; return HKL_SUCCESS; } double hkl_parameter_get_max(HklParameter const *self) { return self->range.max; } /* TODO test */ void hkl_parameter_get_range_unit(HklParameter const *self, double *min, double *max) { double factor = hkl_unit_factor(self->unit, self->punit); *min = factor * self->range.min; *max = factor * self->range.max; } /* TODO test */ void hkl_parameter_set_range(HklParameter *self, double min, double max) { self->range.min = min; self->range.max = max; } /* TODO test */ void hkl_parameter_set_range_unit(HklParameter *self, double min, double max) { double factor = hkl_unit_factor(self->unit, self->punit); self->range.min = min / factor; self->range.max = max / factor; } void hkl_parameter_randomize(HklParameter *self) { if (self->fit) { double alea = (double)rand() / (RAND_MAX + 1.); self->value = self->range.min + (self->range.max - self->range.min) * alea; self->changed = HKL_TRUE; } } int hkl_parameter_is_valid(HklParameter const *self) { if(self->value < (self->range.min - HKL_EPSILON) || self->value > (self->range.max + HKL_EPSILON)) return HKL_FALSE; else return HKL_TRUE; } void hkl_parameter_fprintf(FILE *f, HklParameter *self) { double factor = hkl_unit_factor(self->unit, self->punit); if (self->punit) fprintf(f, "\"%s\" : %.7f %s [%.7f : %.7f] (%d)", self->name, self->value * factor, self->punit->repr, self->range.min * factor, self->range.max * factor, self->fit); else fprintf(f, "\"%s\" : %.7f [%.7f : %.7f] (%d)", self->name, self->value * factor, self->range.min * factor, self->range.max * factor, self->fit); } hkl-4.0.3/hkl/hkl-matrix.c0000644000175000017500000002174111400153354012220 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include #include #include /** * hkl_matrix_init: * @self: the #HklMatrix to initialize * @m11: the matrix 11 value * @m12: the matrix 12 value * @m13: the matrix 13 value * @m21: the matrix 21 value * @m22: the matrix 22 value * @m23: the matrix 23 value * @m31: the matrix 31 value * @m32: the matrix 32 value * @m33: the matrix 33 value * * **/ void hkl_matrix_init(HklMatrix *self, double m11, double m12, double m13, double m21, double m22, double m23, double m31, double m32, double m33) { double (*M)[3] = self->data; M[0][0] = m11, M[0][1] = m12, M[0][2] = m13; M[1][0] = m21, M[1][1] = m22, M[1][2] = m23; M[2][0] = m31, M[2][1] = m32, M[2][2] = m33; } /** * hkl_matrix_fprintf: * @file: the FILE stream * @self: the #HklMatrix to print into the file stream * * printf an #HklMatrix into a FILE stream. **/ void hkl_matrix_fprintf(FILE *file, const HklMatrix *self) { double const (*M)[3] = self->data; fprintf(file, "|%f, %f, %f|\n", M[0][0], M[0][1], M[0][2]); fprintf(file, "|%f, %f, %f|\n", M[1][0], M[1][1], M[1][2]); fprintf(file, "|%f, %f, %f|\n", M[2][0], M[2][1], M[2][2]); } /** * hkl_matrix_init_from_two_vector: * @self: The #HklMatrix to initialize * @v1: the first #HklVector * @v2: the second #HklVector * * Create an #HklMatrix which represent a direct oriented base of the space * the first row correspond to the |v1|, the second row |v2| and the last one * is |v1 ^ v2| **/ void hkl_matrix_init_from_two_vector(HklMatrix *self, const HklVector *v1, const HklVector *v2) { HklVector x, y, z; double (*M)[3] = self->data; x = *v1; hkl_vector_normalize(&x); z = *v1; hkl_vector_vectorial_product(&z, v2); hkl_vector_normalize(&z); y = z; hkl_vector_vectorial_product(&y, &x); M[0][0] = x.data[0], M[0][1] = y.data[0], M[0][2] = z.data[0]; M[1][0] = x.data[1], M[1][1] = y.data[1], M[1][2] = z.data[1]; M[2][0] = x.data[2], M[2][1] = y.data[2], M[2][2] = z.data[2]; } /** * hkl_matrix_init_from_euler: * @self: the #HklMatrix to initialize * @euler_x: the eulerian value along X * @euler_y: the eulerian value along Y * @euler_z: the eulerian value along Z * * Create a rotation #HklMatrix from three eulerians angles. **/ void hkl_matrix_init_from_euler(HklMatrix *self, double euler_x, double euler_y, double euler_z) { double (*M)[3] = self->data; double A = cos(euler_x); double B = sin(euler_x); double C = cos(euler_y); double D = sin(euler_y); double E = cos(euler_z); double F = sin(euler_z); double AD = A *D; double BD = B *D; M[0][0] = C*E; M[0][1] =-C*F; M[0][2] = D; M[1][0] = BD *E + A *F; M[1][1] =-BD *F + A *E; M[1][2] =-B *C; M[2][0] =-AD *E + B *F; M[2][1] = AD *F + B *E; M[2][2] = A *C; } /** * hkl_matrix_to_euler: * @self: the rotation #HklMatrix use to compute the eulerians angles * @euler_x: the eulerian value along X * @euler_y: the eulerian value along Y * @euler_z: the eulerian value along Z * * compute the three eulerians values for a given rotation #HklMatrix **/ void hkl_matrix_to_euler(const HklMatrix *self, double *euler_x, double *euler_y, double *euler_z) { double tx, ty; double C; double const (*M)[3] = self->data; *euler_y = asin( self->data[0][2] ); /*Calculate Y-axis angle */ C = cos( *euler_y ); if (fabs(C) > HKL_EPSILON) { /*Gimball lock? */ tx = M[2][2] / C; /*No, so get X-axis angle */ ty = -M[1][2] / C; *euler_x = atan2( ty, tx ); tx = M[0][0] / C; /*Get Z-axis angle */ ty = -M[0][1] / C; *euler_z = atan2( ty, tx ); } else { /*Gimball lock has occurred */ *euler_x = 0.; /*Set X-axis angle to zero */ tx = M[1][1]; /*And calculate Z-axis angle */ ty = M[1][0]; *euler_z = atan2( ty, tx ); } } /** * hkl_matrix_cmp: * @self: the first #HklMatrix * @m: the #HklMatrix to compare with * * compare two #HklMatrix. * * Returns: return HKL_TRUE if | self - m | > HKL_EPSILON **/ int hkl_matrix_cmp(const HklMatrix *self, const HklMatrix *m) { unsigned int i; unsigned int j; for(i=0;i<3;i++) for(j=0;j<3;j++) if( fabs(self->data[i][j] - m->data[i][j]) > HKL_EPSILON ) return HKL_FALSE; return HKL_TRUE; } /** * hkl_matrix_times_matrix: * @self: the #HklMatrix to modify * @m: the #HklMatrix to multiply by * * compute the matrix multiplication self = self * m **/ void hkl_matrix_times_matrix(HklMatrix *self, const HklMatrix *m) { HklMatrix const tmp = *self; double (*M)[3] = self->data; double const (*Tmp)[3] = tmp.data; double const (*M1)[3]; if (self == m) M1 = tmp.data; else M1 = m->data; M[0][0] = Tmp[0][0]*M1[0][0] + Tmp[0][1]*M1[1][0] + Tmp[0][2]*M1[2][0]; M[0][1] = Tmp[0][0]*M1[0][1] + Tmp[0][1]*M1[1][1] + Tmp[0][2]*M1[2][1]; M[0][2] = Tmp[0][0]*M1[0][2] + Tmp[0][1]*M1[1][2] + Tmp[0][2]*M1[2][2]; M[1][0] = Tmp[1][0]*M1[0][0] + Tmp[1][1]*M1[1][0] + Tmp[1][2]*M1[2][0]; M[1][1] = Tmp[1][0]*M1[0][1] + Tmp[1][1]*M1[1][1] + Tmp[1][2]*M1[2][1]; M[1][2] = Tmp[1][0]*M1[0][2] + Tmp[1][1]*M1[1][2] + Tmp[1][2]*M1[2][2]; M[2][0] = Tmp[2][0]*M1[0][0] + Tmp[2][1]*M1[1][0] + Tmp[2][2]*M1[2][0]; M[2][1] = Tmp[2][0]*M1[0][1] + Tmp[2][1]*M1[1][1] + Tmp[2][2]*M1[2][1]; M[2][2] = Tmp[2][0]*M1[0][2] + Tmp[2][1]*M1[1][2] + Tmp[2][2]*M1[2][2]; } /** * hkl_matrix_times_vector: * @self: the #HklMatrix use to multiply the #HklVector * @v: the #HklVector multiply by the #HklMatrix * * multiply an #HklVector by an #HklMatrix **/ void hkl_matrix_times_vector(const HklMatrix *self, HklVector *v) { HklVector tmp; double *Tmp; double *V = v->data; double const (*M)[3] = self->data; tmp = *v; Tmp = tmp.data; V[0] = Tmp[0]*M[0][0] + Tmp[1]*M[0][1] + Tmp[2]*M[0][2]; V[1] = Tmp[0]*M[1][0] + Tmp[1]*M[1][1] + Tmp[2]*M[1][2]; V[2] = Tmp[0]*M[2][0] + Tmp[1]*M[2][1] + Tmp[2]*M[2][2]; } /** * hkl_matrix_transpose: * @self: the #HklMatrix to transpose * * transpose an #HklMatrix **/ void hkl_matrix_transpose(HklMatrix *self) { #define SWAP(a, b) {double tmp=a; a=b; b=tmp;} SWAP(self->data[1][0], self->data[0][1]); SWAP(self->data[2][0], self->data[0][2]); SWAP(self->data[2][1], self->data[1][2]); } /** * hkl_matrix_det: * @self: the #HklMatrix use to compute the determinant * * compute the determinant of an #HklMatrix * * Returns: the determinant of the self #HklMatrix * Todo: test **/ double hkl_matrix_det(const HklMatrix *self) { double det; double const (*M)[3] = self->data; det = M[0][0] * (M[1][1] * M[2][2] - M[2][1] * M[1][2]); det += -M[0][1] * (M[1][0] * M[2][2] - M[2][0] * M[1][2]); det += M[0][2] * (M[1][0] * M[2][1] - M[2][0] * M[1][1]); return det; } /** * hkl_matrix_solve: * @self: The #HklMatrix of the system * @x: the #HklVector to compute. * @b: the #hklVector of the system to solve. * * solve the system self . X = b * * Returns: -1 if the système has no solution, 0 otherwise. * Todo: test **/ int hkl_matrix_solve(const HklMatrix *self, HklVector *x, const HklVector *b) { double det; double const (*M)[3] = self->data; double *X = x->data; double const *B = b->data; det = hkl_matrix_det(self); if (fabs(det) < HKL_EPSILON) return -1; else { X[0] = B[0] * (M[1][1]*M[2][2] - M[1][2]*M[2][1]); X[0] += -B[1] * (M[0][1]*M[2][2] - M[0][2]*M[2][1]); X[0] += B[2] * (M[0][1]*M[1][2] - M[0][2]*M[1][1]); X[1] = -B[0] * (M[1][0]*M[2][2] - M[1][2]*M[2][0]); X[1] += B[1] * (M[0][0]*M[2][2] - M[0][2]*M[2][0]); X[1] += -B[2] * (M[0][0]*M[1][2] - M[0][2]*M[1][0]); X[2] = B[0] * (M[1][0]*M[2][1] - M[1][1]*M[2][0]); X[2] += -B[1] * (M[0][0]*M[2][1] - M[0][1]*M[2][0]); X[2] += B[2] * (M[0][0]*M[1][1] - M[0][1]*M[1][0]); hkl_vector_div_double(x, det); } return 0; } /** * hkl_matrix_is_null: * @self: the #HklMatrix to test * * is all #hklMatrix elementes bellow #HKL_EPSILON * * Returns: HKL_TRUE if the self #HklMatrix is null * Todo: test **/ int hkl_matrix_is_null(const HklMatrix *self) { unsigned int i; unsigned int j; for (i=0;i<3;i++) for (j=0;j<3;j++) if ( fabs(self->data[i][j]) > HKL_EPSILON ) return HKL_FALSE; return HKL_TRUE; } hkl-4.0.3/hkl/hkl-list.h0000644000175000017500000000521011402652607011674 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_LIST_H__ #define __HKL_LIST_H__ #include #include HKL_BEGIN_DECLS #define HKL_LIST_LEN(array) array ## _len #define HKL_LIST(type, name) type *name; size_t HKL_LIST_LEN(name) #define HKL_LIST_INIT(array) array = NULL, HKL_LIST_LEN(array) = 0 #define HKL_LIST_ALLOC(array, len) do{ \ array = malloc((len) * sizeof(*array)); \ HKL_LIST_LEN(array) = (len); \ }while(0) #define HKL_LIST_COPY(dst, src) memcpy(dst, src, HKL_LIST_LEN(src) * sizeof(*src)) #define HKL_LIST_FREE(array) free(array), HKL_LIST_INIT(array) #define HKL_LIST_FREE_DESTRUCTOR(array, destructor) do{ \ if(HKL_LIST_LEN(array)){ \ size_t i; \ for(i=0; i. * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel * Maria-Teresa Nunez-Pardo-de-Verra * Jens Krüger */ #include #include #include #include #include /***********************/ /* numerical functions */ /***********************/ static int bissector_h_f1(const gsl_vector *x, void *params, gsl_vector *f) { double gamma, mu, komega, kappa, omega; size_t i; double const *x_data = x->data; double *f_data = f->data; for(i=0; isize;++i) if (gsl_isnan(x_data[i])) return GSL_ENOMEM; RUBh_minus_Q(x_data, params, f_data); mu = x_data[0]; komega = x_data[1]; kappa = x_data[2]; gamma = x_data[4]; omega = komega + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) - M_PI_2; f_data[3] = fmod(omega, M_PI); f_data[4] = fmod(gamma - 2 * fmod(mu, M_PI), 2*M_PI); return GSL_SUCCESS; } static int bissector_h_f2(const gsl_vector *x, void *params, gsl_vector *f) { double gamma, mu, komega, kappa, omega; size_t i; double const *x_data = x->data; double *f_data = f->data; for(i=0; isize;++i) if (gsl_isnan(x_data[i])) return GSL_ENOMEM; RUBh_minus_Q(x_data, params, f_data); mu = x_data[0]; komega = x_data[1]; kappa = x_data[2]; gamma = x_data[4]; omega = komega + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) + M_PI_2; f_data[3] = fmod(omega, M_PI); f_data[4] = fmod(gamma - 2 * fmod(mu, M_PI), 2*M_PI); return GSL_SUCCESS; } static int constant_kphi_h_f1(const gsl_vector *x, void *params, gsl_vector *f) { double komega, kappa, omega; size_t i; double const *x_data = x->data; double *f_data = f->data; for(i=0; isize;++i) if (gsl_isnan(x_data[i])) return GSL_ENOMEM; RUBh_minus_Q(x_data, params, f_data); komega = x_data[1]; kappa = x_data[2]; omega = komega + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) - M_PI_2; f_data[3] = fmod(omega, M_PI); return GSL_SUCCESS; } static int constant_kphi_h_f2(const gsl_vector *x, void *params, gsl_vector *f) { double komega, kappa, omega; size_t i; double const *x_data = x->data; double *f_data = f->data; for(i=0; isize;++i) if (gsl_isnan(x_data[i])) return GSL_ENOMEM; RUBh_minus_Q(x_data, params, f_data); komega = x_data[1]; kappa = x_data[2]; omega = komega + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) + M_PI_2; f_data[3] = fmod(omega, M_PI); return GSL_SUCCESS; } static int constant_phi_h_f1(const gsl_vector *x, void *params, gsl_vector *f) { double komega, kappa, kphi; double omega, phi, p; size_t i; double const *x_data = x->data; double *f_data = f->data; for(i=0; isize;++i) if (gsl_isnan(x_data[i])) return GSL_ENOMEM; RUBh_minus_Q(x_data, params, f_data); komega = x_data[1]; kappa = x_data[2]; kphi = x_data[3]; p = atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)); omega = komega + p - M_PI_2; phi = kphi + p + M_PI_2; f_data[3] = fmod(omega, M_PI); f_data[4] = phi; return GSL_SUCCESS; } static int constant_phi_h_f2(const gsl_vector *x, void *params, gsl_vector *f) { double komega, kappa, kphi; double omega, phi, p; size_t i; double const *x_data = x->data; double *f_data = f->data; for(i=0; isize;++i) if (gsl_isnan(x_data[i])) return GSL_ENOMEM; RUBh_minus_Q(x_data, params, f_data); komega = x_data[1]; kappa = x_data[2]; kphi = x_data[3]; p = atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)); omega = komega + p + M_PI_2; phi = kphi + p - M_PI_2; f_data[3] = fmod(omega, M_PI); f_data[4] = phi; return GSL_SUCCESS; } static int bissector_v(const gsl_vector *x, void *params, gsl_vector *f) { double komega, kappa, delta, omega; size_t i; double const *x_data = x->data; double *f_data = f->data; for(i=0; isize;++i) if (gsl_isnan(x_data[i])) return GSL_ENOMEM; RUBh_minus_Q(x_data, params, f_data); komega = x_data[0]; kappa = x_data[1]; delta = x_data[3]; omega = komega + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) - M_PI_2; f_data[3] = fmod(delta - 2 * fmod(omega, M_PI), 2*M_PI); return GSL_SUCCESS; } static int constant_omega_v(const gsl_vector *x, void *params, gsl_vector *f) { double komega, kappa, omega; size_t i; HklPseudoAxisEngine *engine = params; double p0 = engine->mode->parameters[0].value; double const *x_data = x->data; double *f_data = f->data; for(i=0; isize;++i) if (gsl_isnan(x_data[i])) return GSL_ENOMEM; RUBh_minus_Q(x_data, params, f_data); komega = x_data[0]; kappa = x_data[1]; omega = komega + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) - M_PI_2; f_data[3] = p0 - omega; return GSL_SUCCESS; } static int constant_chi_v(const gsl_vector *x, void *params, gsl_vector *f) { double kappa, chi; size_t i; HklPseudoAxisEngine *engine = params; double p0 = engine->mode->parameters[0].value; double const *x_data = x->data; double *f_data = f->data; for(i=0; isize;++i) if (gsl_isnan(x_data[i])) return GSL_ENOMEM; RUBh_minus_Q(x_data, params, f_data); kappa = x_data[1]; chi = 2 * asin(sin(kappa/2.) * sin(50 * HKL_DEGTORAD)); f_data[3] = p0 - chi; return GSL_SUCCESS; } static int constant_phi_v(const gsl_vector *x, void *params, gsl_vector *f) { double kappa, kphi, phi; size_t i; HklPseudoAxisEngine *engine = params; double p0 = engine->mode->parameters[0].value; double const *x_data = x->data; double *f_data = f->data; for(i=0; isize;++i) if (gsl_isnan(x_data[i])) return GSL_ENOMEM; RUBh_minus_Q(x_data, params, f_data); kappa = x_data[1]; kphi = x_data[2]; phi = kphi + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) + M_PI_2; f_data[3] = p0 - phi; return GSL_SUCCESS; } static int double_diffraction_h(const gsl_vector *x, void *params, gsl_vector *f) { double komega, kappa, omega; size_t i; double const *x_data = x->data; double *f_data = f->data; for(i=0; isize;++i) if (gsl_isnan(x_data[i])) return GSL_ENOMEM; double_diffraction(x_data, params, f_data); komega = x_data[1]; kappa = x_data[2]; omega = komega + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) - M_PI_2; f_data[4] = fmod(omega, M_PI); return GSL_SUCCESS; } /************************/ /* K6CV PseudoAxeEngine */ /************************/ HklPseudoAxisEngine *hkl_pseudo_axis_engine_k6c_hkl_new(void) { HklPseudoAxisEngine *self; HklPseudoAxisEngineMode *mode; HklParameter parameter; HklParameter h2; HklParameter k2; HklParameter l2; HklParameter psi; self = hkl_pseudo_axis_engine_hkl_new(); /* bissector_vertical */ mode = hkl_pseudo_axis_engine_mode_new( "bissector_vertical", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, bissector_v, (size_t)0, (size_t)4, "komega", "kappa", "kphi", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* constant_omega_vertical */ hkl_parameter_init(¶meter, "omega", -M_PI, 0., M_PI, HKL_TRUE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg); mode = hkl_pseudo_axis_engine_mode_new( "constant_omega_vertical", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, constant_omega_v, (size_t)1, parameter, (size_t)4, "komega", "kappa", "kphi", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* constant_chi_vertical */ hkl_parameter_init(¶meter, "chi", -M_PI, 30. * HKL_DEGTORAD, M_PI, HKL_TRUE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg); mode = hkl_pseudo_axis_engine_mode_new( "constant_chi_vertical", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, constant_chi_v, (size_t)1, parameter, (size_t)4, "komega", "kappa", "kphi", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* constant_phi_vertical */ hkl_parameter_init(¶meter, "phi", -M_PI, 0., M_PI, HKL_TRUE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg); mode = hkl_pseudo_axis_engine_mode_new( "constant_phi_vertical", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, constant_phi_v, (size_t)1, parameter, (size_t)4, "komega", "kappa", "kphi", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* lifting_detector_kphi */ mode = hkl_pseudo_axis_engine_mode_new( "lifting_detector_kphi", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, RUBh_minus_Q_func, (size_t)0, (size_t)3, "kphi", "gamma", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* lifting_detector_komega */ mode = hkl_pseudo_axis_engine_mode_new( "lifting_detector_komega", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, RUBh_minus_Q_func, (size_t)0, (size_t)3, "komega", "gamma", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* lifting_detector_mu */ mode = hkl_pseudo_axis_engine_mode_new( "lifting_detector_mu", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, RUBh_minus_Q_func, (size_t)0, (size_t)3, "mu", "gamma", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* double_diffraction vertical*/ hkl_parameter_init(&h2, "h2", -1., 1., 1., HKL_TRUE, HKL_TRUE, NULL, NULL); hkl_parameter_init(&k2, "k2", -1., 1., 1., HKL_TRUE, HKL_TRUE, NULL, NULL); hkl_parameter_init(&l2, "l2", -1., 1., 1., HKL_TRUE, HKL_TRUE, NULL, NULL); mode = hkl_pseudo_axis_engine_mode_new( "double_diffraction_vertical", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, double_diffraction_func, (size_t)3, h2, k2, l2, (size_t)4, "komega", "kappa", "kphi", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* bissector_horizontal */ mode = hkl_pseudo_axis_engine_mode_new( "bissector_horizontal", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 2, bissector_h_f1, bissector_h_f2, (size_t)0, (size_t)5, "mu", "komega", "kappa", "kphi", "gamma"); hkl_pseudo_axis_engine_add_mode(self, mode); /* constant_phi_horizontal */ hkl_parameter_init(¶meter, "phi", -M_PI, 0., M_PI, HKL_TRUE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg); mode = hkl_pseudo_axis_engine_mode_new( "constant_phi_horizontal", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 2, constant_phi_h_f1,constant_phi_h_f2, (size_t)1, parameter, (size_t)5, "mu", "komega", "kappa", "kphi", "gamma"); hkl_pseudo_axis_engine_add_mode(self, mode); /* horizontal kphi constant */ mode = hkl_pseudo_axis_engine_mode_new( "constant_kphi_horizontal", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 2, constant_kphi_h_f1, constant_kphi_h_f2, (size_t)0, (size_t)4, "mu", "komega", "kappa", "gamma"); hkl_pseudo_axis_engine_add_mode(self, mode); /* double_diffraction_horizontal */ mode = hkl_pseudo_axis_engine_mode_new( "double_diffraction_horizontal", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, double_diffraction_h, (size_t)3, h2, k2, l2, (size_t)5, "mu", "komega", "kappa", "kphi", "gamma"); hkl_pseudo_axis_engine_add_mode(self, mode); /* psi_constant_vertical */ hkl_parameter_init(&h2, "h2", -1, 1, 1, HKL_TRUE, HKL_TRUE, NULL, NULL); hkl_parameter_init(&k2, "k2", -1, 0, 1, HKL_TRUE, HKL_TRUE, NULL, NULL); hkl_parameter_init(&l2, "l2", -1, 0, 1, HKL_TRUE, HKL_TRUE, NULL, NULL); hkl_parameter_init(&psi, "psi", -M_PI, 0, M_PI, HKL_TRUE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg); mode = hkl_pseudo_axis_engine_mode_new( "psi_constant_vertical", hkl_pseudo_axis_engine_mode_init_psi_constant_vertical_real, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, psi_constant_vertical_func, (size_t)4, h2, k2, l2, psi, (size_t)4, "komega", "kappa", "kphi", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); hkl_pseudo_axis_engine_select_mode(self, 0); return self; } hkl-4.0.3/hkl/hkl-pseudoaxis-common.h0000644000175000017500000000247611400153354014377 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_PSEUDOAXIS_COMMON_H__ #define __HKL_PSEUDOAXIS_COMMON_H__ #include HKL_BEGIN_DECLS extern int hkl_pseudo_axis_engine_init_func(HklPseudoAxisEngineMode *self, HklPseudoAxisEngine *engine, HklGeometry *geometry, HklDetector const *detector, HklSample const *sample); HKL_END_DECLS #endif /* __HKL_PSEUDOAXIS_COMMON_H__ */ hkl-4.0.3/hkl/hkl-sample.h0000644000175000017500000001064111402652607012206 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_SAMPLE_H__ #define __HKL_SAMPLE_H__ #include #include #include #include HKL_BEGIN_DECLS typedef struct _HklSample HklSample; typedef struct _HklSampleReflection HklSampleReflection; typedef struct _HklSampleList HklSampleList; enum _HklSampleType { HKL_SAMPLE_TYPE_MONOCRYSTAL }; typedef enum _HklSampleType HklSampleType; struct _HklSample { char *name; HklSampleType type; HklLattice *lattice; HklMatrix U; HklMatrix UB; HklParameter *ux; HklParameter *uy; HklParameter *uz; HKL_LIST(HklSampleReflection *, reflections); }; struct _HklSampleReflection { HklGeometry *geometry; HklDetector detector; HklVector hkl; HklVector _hkl; int flag; }; struct _HklSampleList { HKL_LIST(HklSample *, samples); HklSample *current; }; /*************/ /* HklSample */ /*************/ extern HklSample *hkl_sample_new(char const *name, HklSampleType type); extern HklSample *hkl_sample_new_copy(HklSample const *self); extern void hkl_sample_free(HklSample *self); extern void hkl_sample_set_name(HklSample *self, char const *name); extern int hkl_sample_set_lattice(HklSample *self, double a, double b, double c, double alpha, double beta, double gamma); extern int hkl_sample_set_U_from_euler(HklSample *self, double x, double y, double z); extern void hkl_sample_get_UB(HklSample *self, HklMatrix *UB); extern double hkl_sample_set_UB(HklSample *self, const HklMatrix *UB); extern HklSampleReflection *hkl_sample_add_reflection(HklSample *self, HklGeometry *geometry, HklDetector const *detector, double h, double k, double l); extern HklSampleReflection *hkl_sample_get_ith_reflection(HklSample const *self, size_t idx); extern int hkl_sample_del_reflection(HklSample *self, size_t idx); extern int hkl_sample_compute_UB_busing_levy(HklSample *self, size_t idx1, size_t idx2); extern double hkl_sample_affine(HklSample *sample); extern double hkl_sample_get_reflection_mesured_angle(HklSample const *self, size_t idx1, size_t idx2); extern double hkl_sample_get_reflection_theoretical_angle(HklSample const *self, size_t idx1, size_t idx2); extern void hkl_sample_fprintf(FILE *f, HklSample const *self); /***********************/ /* hklSampleReflection */ /***********************/ void hkl_sample_reflection_set_hkl(HklSampleReflection *self, double h, double k, double l); void hkl_sample_reflection_set_flag(HklSampleReflection *self, int flag); void hkl_sample_reflection_set_geometry(HklSampleReflection *self, HklGeometry *geometry); /*****************/ /* HklSampleList */ /*****************/ extern HklSampleList *hkl_sample_list_new(void); extern void hkl_sample_list_free(HklSampleList *self); extern HklSample *hkl_sample_list_append(HklSampleList *self, HklSample *sample); extern void hkl_sample_list_clear(HklSampleList *self); extern void hkl_sample_list_del(HklSampleList *self, HklSample *sample); extern size_t hkl_sample_list_len(HklSampleList const *self); extern HklSample *hkl_sample_list_get_ith(HklSampleList *self, size_t idx); extern HklSample *hkl_sample_list_get_by_name(HklSampleList *self, char const *name); extern size_t hkl_sample_list_get_idx_from_name(HklSampleList *self, char const *name); extern int hkl_sample_list_select_current(HklSampleList *self, char const *name); extern void hkl_sample_list_fprintf(FILE *f, HklSampleList const *self); HKL_END_DECLS #endif hkl-4.0.3/hkl/hkl-axis.h0000644000175000017500000000560411400153353011664 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_AXIS_H__ #define __HKL_AXIS_H__ #include #include #include #include #include HKL_BEGIN_DECLS typedef struct _HklAxis HklAxis; struct _HklAxis { HklParameter parent_instance; HklVector axis_v; HklQuaternion q; }; /***********/ /* HklAxis */ /***********/ extern HklAxis *hkl_axis_new(char const *name, HklVector const *axis_v); extern void hkl_axis_free(HklAxis *self); extern void hkl_axis_init(HklAxis *axis, char const * name, HklVector const *axis_v); extern char const *hkl_axis_get_name(HklAxis const *self); extern int hkl_axis_get_changed(HklAxis const *self); extern void hkl_axis_set_changed(HklAxis *self, int changed); extern double hkl_axis_get_value(HklAxis const *self); extern double hkl_axis_get_value_unit(HklAxis const *self); extern double hkl_axis_get_value_closest(HklAxis const *self, HklAxis const *axis); extern double hkl_axis_get_value_closest_unit(HklAxis const *self, HklAxis const *axis); extern double hkl_axis_get_max(HklAxis const *self); extern void hkl_axis_get_range_unit(HklAxis const *self, double *min, double *max); extern void hkl_axis_set_value(HklAxis *self, double value); extern void hkl_axis_set_value_smallest_in_range(HklAxis *self); extern void hkl_axis_set_value_unit(HklAxis *self, double value); extern void hkl_axis_set_range(HklAxis *self, double min, double max); extern void hkl_axis_set_range_unit(HklAxis *self, double min, double max); extern void hkl_axis_randomize(HklAxis *self); /** * @brief get the quaternion of an axis. * * @param axis * @param q * * inline to speed computation. */ extern void hkl_axis_get_quaternion(HklAxis const *self, HklQuaternion *q); extern int hkl_axis_is_value_compatible_with_range(HklAxis const *self); extern int hkl_axis_is_valid(const HklAxis *self); extern void hkl_axis_fprintf(FILE *f, HklAxis *self); HKL_END_DECLS #endif /* __HKL_AXIS_H__ */ hkl-4.0.3/hkl/hkl-pseudoaxis-e4cv-hkl.c0000644000175000017500000001034511400153354014511 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel * Maria-Teresa Nunez-Pardo-de-Verra * Jens Krüger */ #include #include #include #include /*******/ /* hkl */ /*******/ static int bissector_func(const gsl_vector *x, void *params, gsl_vector *f) { double omega, tth; double const *x_data = gsl_vector_const_ptr(x, 0); double *f_data = gsl_vector_ptr(f, 0); RUBh_minus_Q(x_data, params, f_data); omega = x_data[0]; tth = x_data[3]; f_data[3] = tth - 2 * fmod(omega,M_PI); return GSL_SUCCESS; } HklPseudoAxisEngine *hkl_pseudo_axis_engine_e4cv_hkl_new(void) { HklPseudoAxisEngine *self; HklPseudoAxisEngineMode *mode; HklParameter h2; HklParameter k2; HklParameter l2; HklParameter psi; self = hkl_pseudo_axis_engine_hkl_new(); /* hkl get/set bissector */ mode = hkl_pseudo_axis_engine_mode_new( "bissector", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, bissector_func, (size_t)0, (size_t)4, "omega", "chi", "phi", "tth"); hkl_pseudo_axis_engine_add_mode(self, mode); /* constant_omega */ mode = hkl_pseudo_axis_engine_mode_new( "constant_omega", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, RUBh_minus_Q_func, (size_t)0, (size_t)3, "chi", "phi", "tth"); hkl_pseudo_axis_engine_add_mode(self, mode); /* constant_chi */ mode = hkl_pseudo_axis_engine_mode_new( "constant_chi", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, RUBh_minus_Q_func, (size_t)0, (size_t)3, "omega", "phi", "tth"); hkl_pseudo_axis_engine_add_mode(self, mode); /* constant_phi */ mode = hkl_pseudo_axis_engine_mode_new( "constant_phi", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, RUBh_minus_Q_func, (size_t)0, (size_t)3, "omega", "chi", "tth"); hkl_pseudo_axis_engine_add_mode(self, mode); /* double_diffraction */ hkl_parameter_init(&h2, "h2", -1, 1, 1, HKL_TRUE, HKL_TRUE, NULL, NULL); hkl_parameter_init(&k2, "k2", -1, 1, 1, HKL_TRUE, HKL_TRUE, NULL, NULL); hkl_parameter_init(&l2, "l2", -1, 1, 1, HKL_TRUE, HKL_TRUE, NULL, NULL); mode = hkl_pseudo_axis_engine_mode_new( "double_diffraction", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, double_diffraction_func, (size_t)3, h2, k2, l2, (size_t)4, "omega", "chi", "phi", "tth"); hkl_pseudo_axis_engine_add_mode(self, mode); /* psi_constant */ hkl_parameter_init(&h2, "h2", -1, 1, 1, HKL_TRUE, HKL_TRUE, NULL, NULL); hkl_parameter_init(&k2, "k2", -1, 0, 1, HKL_TRUE, HKL_TRUE, NULL, NULL); hkl_parameter_init(&l2, "l2", -1, 0, 1, HKL_TRUE, HKL_TRUE, NULL, NULL); hkl_parameter_init(&psi, "psi", -M_PI, 0, M_PI, HKL_TRUE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg); mode = hkl_pseudo_axis_engine_mode_new( "psi_constant", hkl_pseudo_axis_engine_mode_init_psi_constant_vertical_real, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, psi_constant_vertical_func, (size_t)4, h2, k2, l2, psi, (size_t)4, "omega", "chi", "phi", "tth"); hkl_pseudo_axis_engine_add_mode(self, mode); hkl_pseudo_axis_engine_select_mode(self, 0); return self; } hkl-4.0.3/hkl/hkl-pseudoaxis-factory.h0000644000175000017500000000236311400153354014551 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_PSEUDOAXIS_FACTORY_H__ #define __HKL_PSEUDOAXIS_FACTORY_H__ #include #include HKL_BEGIN_DECLS extern HklPseudoAxisEngineList *hkl_pseudo_axis_engine_list_factory(const HklGeometryConfig *config); HKL_END_DECLS #endif /* __HKL_PSEUDOAXIS_FACTORY_H__ */ hkl-4.0.3/hkl/hkl-pseudoaxis-common-psi.h0000644000175000017500000000314111400153354015156 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_PSEUDOAXIS_COMMON_PSI_H__ #define __HKL_PSEUDOAXIS_COMMON_PSI_H__ #include #include #include #include HKL_BEGIN_DECLS typedef struct _HklPseudoAxisEngineModePsi HklPseudoAxisEngineModePsi; struct _HklPseudoAxisEngineModePsi { HklPseudoAxisEngineMode parent; HklVector Q0; HklVector hkl0; }; extern HklPseudoAxisEngineModePsi *hkl_pseudo_axis_engine_mode_psi_new(char const *name, size_t axes_names_len, char const *axes_names[]); extern HklPseudoAxisEngine *hkl_pseudo_axis_engine_psi_new(void); HKL_END_DECLS #endif /* __HKL_PSEUDOAXIS_COMMON_PSI_H__ */ hkl-4.0.3/hkl/hkl-pseudoaxis-common-q.h0000644000175000017500000000224611400153354014630 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_PSEUDOAXIS_COMMON_Q_H__ #define __HKL_PSEUDOAXIS_COMMON_Q_H__ #include extern HklPseudoAxisEngine *hkl_pseudo_axis_engine_q_new(void); extern HklPseudoAxisEngine *hkl_pseudo_axis_engine_q2_new(void); #endif hkl-4.0.3/hkl/hkl-lattice.h0000644000175000017500000000400011400153353012332 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_LATTICE_H__ #define __HKL_LATTICE_H__ #include #include HKL_BEGIN_DECLS typedef struct _HklLattice HklLattice; struct _HklLattice { HklParameter *a; HklParameter *b; HklParameter *c; HklParameter *alpha; HklParameter *beta; HklParameter *gamma; }; extern HklLattice *hkl_lattice_new(double a, double b, double c, double alpha, double beta, double gamma); extern HklLattice *hkl_lattice_new_copy(HklLattice const *self); extern HklLattice *hkl_lattice_new_default(void); extern void hkl_lattice_free(HklLattice *self); extern int hkl_lattice_set(HklLattice *self, double a, double b, double c, double alpha, double beta, double gamma); extern int hkl_lattice_get_B(HklLattice const *self, HklMatrix *B); extern int hkl_lattice_get_1_B(const HklLattice *self, HklMatrix *B); extern int hkl_lattice_reciprocal(HklLattice const *self, HklLattice *r); extern void hkl_lattice_randomize(HklLattice *self); extern void hkl_lattice_fprintf(FILE *f, HklLattice const *self); HKL_END_DECLS #endif /* __HKL_LATTICE_H__ */ hkl-4.0.3/hkl/hkl-pseudoaxis-k6c-psi.c0000644000175000017500000000273411400153354014353 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include HklPseudoAxisEngine *hkl_pseudo_axis_engine_k6c_psi_new(void) { HklPseudoAxisEngine *self; HklPseudoAxisEngineModePsi *mode; char const *axes_names_psi[] = {"komega", "kappa", "kphi", "delta"}; self = hkl_pseudo_axis_engine_psi_new(); /* psi get/set */ mode = hkl_pseudo_axis_engine_mode_psi_new("psi_vertical", 4, axes_names_psi); hkl_pseudo_axis_engine_add_mode(self, (HklPseudoAxisEngineMode *)mode); hkl_pseudo_axis_engine_select_mode(self, 0); return self; } hkl-4.0.3/hkl/hkl-quaternion.c0000644000175000017500000001654311400153354013105 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include #include #include #include #include /* public */ /** * hkl_quaternion_init: * @self: the #HklQuaternion to initialize * @a: the 1st element value * @b: the 2nd element value * @c: the 3rd element value * @d: the 4th element value * * initialize the four elements of an #HklQuaternion **/ void hkl_quaternion_init(HklQuaternion *self, double a, double b, double c, double d) { self->data[0] = a; self->data[1] = b; self->data[2] = c; self->data[3] = d; } /** * hkl_quaternion_fprintf: * @file: the file to send the #HklQuaternion into * @self: the #HklQuaternion to write into the file stream. * * print an #HklQuaternion into a FILE stream **/ void hkl_quaternion_fprintf(FILE *file, HklQuaternion const *self) { double const *Q; Q = self->data; fprintf(file, "<%f, %f, %f, %f>", Q[0], Q[1], Q[2], Q[3]); } /** * hkl_quaternion_init_from_vector: * @self: the #HklQuaternion to set * @v: the #HklVector used to set the self #HklQuaternion * * initialize an #HklQuaternion from an #HklVector **/ void hkl_quaternion_init_from_vector(HklQuaternion *self, HklVector const *v) { self->data[0] = 0; memcpy(&self->data[1], &v->data[0], sizeof(v->data)); } /** * hkl_quaternion_init_from_angle_and_axe: * @self: the #HklQuaternion to set * @angle: the angles of the rotation * @v: the axe of rotation * * initialize an #HklQuaternion from a vector and a angle. **/ void hkl_quaternion_init_from_angle_and_axe(HklQuaternion *self, double angle, HklVector const *v) { double norm; double c; double s; /* check that parameters are ok. */ norm = hkl_vector_norm2(v); c = cos(angle / 2.); s = sin(angle / 2.) / norm; self->data[0] = c; self->data[1] = s * v->data[0]; self->data[2] = s * v->data[1]; self->data[3] = s * v->data[2]; } /** * hkl_quaternion_cmp: * @self: the first #HklQuaternion * @q: the second #HklQuaternion * * compare two #HklQuaternion. * * Returns: #HKL_TRUE if both are equal, #HKL_FAIL otherwise. **/ int hkl_quaternion_cmp(HklQuaternion const *self, HklQuaternion const *q) { unsigned int i; for (i=0;i<4;i++) if ( fabs(self->data[i] - q->data[i]) > HKL_EPSILON ) return HKL_FALSE; return HKL_TRUE; } /** * hkl_quaternion_minus_quaternion: * @self: the #HklQuaternion to modify. * @q: the #HklQuaternion to substract * * substract two #HklQuaternions * Todo: test **/ void hkl_quaternion_minus_quaternion(HklQuaternion *self, const HklQuaternion *q) { unsigned int i; for (i=0;i<4;i++) self->data[i] -= q->data[i]; } /** * hkl_quaternion_times_quaternion: * @self: the #HklQuaternion to modify * @q: the #HklQuaternion to multiply by * * multiply two quaternions **/ void hkl_quaternion_times_quaternion(HklQuaternion *self, const HklQuaternion *q) { HklQuaternion Tmp; double *Q; Tmp = *self; Q = Tmp.data; if (self == q){ self->data[0] = Q[0]*Q[0] - Q[1]*Q[1] - Q[2]*Q[2] - Q[3]*Q[3]; self->data[1] = Q[0]*Q[1] + Q[1]*Q[0] + Q[2]*Q[3] - Q[3]*Q[2]; self->data[2] = Q[0]*Q[2] - Q[1]*Q[3] + Q[2]*Q[0] + Q[3]*Q[1]; self->data[3] = Q[0]*Q[3] + Q[1]*Q[2] - Q[2]*Q[1] + Q[3]*Q[0]; }else{ double const *Q1 = q->data; self->data[0] = Q[0]*Q1[0] - Q[1]*Q1[1] - Q[2]*Q1[2] - Q[3]*Q1[3]; self->data[1] = Q[0]*Q1[1] + Q[1]*Q1[0] + Q[2]*Q1[3] - Q[3]*Q1[2]; self->data[2] = Q[0]*Q1[2] - Q[1]*Q1[3] + Q[2]*Q1[0] + Q[3]*Q1[1]; self->data[3] = Q[0]*Q1[3] + Q[1]*Q1[2] - Q[2]*Q1[1] + Q[3]*Q1[0]; } } /** * hkl_quaternion_norm2: * @self: the quaternion use to compute the norm * * compute the norm2 of an #HklQuaternion * * Returns: the self #hklquaternion norm **/ double hkl_quaternion_norm2(const HklQuaternion *self) { double sum2 = 0; unsigned int i; for (i=0;i<4;i++) sum2 += self->data[i] *self->data[i]; return sqrt(sum2); } /** * hkl_quaternion_conjugate: * @self: the #HklQuaternion to conjugate * * compute the conjugate of a quaternion **/ void hkl_quaternion_conjugate(HklQuaternion *self) { unsigned int i; for (i=1;i<4;i++) self->data[i] = -self->data[i]; } /** * hkl_quaternion_to_matrix: * @self: the #HklQuaternion use to compute the #HklMatrix * @m: the #HklMatrix return. * * Compute the rotation matrix of a Quaternion. * * compute the rotation matrix corresponding to the unitary quaternion. * \f$ q = a + b \cdot i + c \cdot j + d \cdot k \f$ * * \f$ * \left( * \begin{array}{ccc} * a^2+b^2-c^2-d^2 & 2bc-2ad & 2ac+2bd\\ * 2ad+2bc & a^2-b^2+c^2-d^2 & 2cd-2ab\\ * 2bd-2ac & 2ab+2cd & a^2-b^2-c^2+d^2 * \end{array} * \right) * \f$ * Todo: optimize */ void hkl_quaternion_to_matrix(const HklQuaternion *self, HklMatrix *m) { double const *Q; /* check that parameters are ok. */ hkl_assert(fabs(hkl_quaternion_norm2(self) - 1) < HKL_EPSILON); Q = self->data; m->data[0][0] = Q[0]*Q[0] + Q[1]*Q[1] - Q[2]*Q[2] - Q[3]*Q[3]; m->data[0][1] = 2 * (Q[1]*Q[2] - Q[0]*Q[3]); m->data[0][2] = 2 * (Q[0]*Q[2] + Q[1]*Q[3]); m->data[1][0] = 2 * (Q[0]*Q[3] + Q[1]*Q[2]); m->data[1][1] = Q[0]*Q[0] - Q[1]*Q[1] + Q[2]*Q[2] - Q[3]*Q[3]; m->data[1][2] = 2 * (Q[2]*Q[3] - Q[0]*Q[1]); m->data[2][0] = 2 * (Q[1]*Q[3] - Q[0]*Q[2]); m->data[2][1] = 2 * (Q[0]*Q[1] + Q[2]*Q[3]); m->data[2][2] = Q[0]*Q[0] - Q[1]*Q[1] - Q[2]*Q[2] + Q[3]*Q[3]; } /** * hkl_quaternion_to_angle_and_axe: * @self: The #HklQuaternion use to compute the angle and the roation axis. * @angle: the returned angle of the rotation. * @v: the returned axis of the rotation. * * compute the axe and angle of the unitary quaternion angle [-pi, pi] * if q is the (1, 0, 0, 0) quaternion return the (0,0,0) axe and a 0 angle */ void hkl_quaternion_to_angle_and_axe(HklQuaternion const *self, double *angle, HklVector *v) { double angle_2; double cos_angle_2; double sin_angle_2; /* check that parameters are ok. (norm must be equal to 1) */ hkl_assert(fabs(hkl_quaternion_norm2(self) - 1) < HKL_EPSILON); /* compute the angle */ cos_angle_2 = self->data[0]; angle_2 = acos(cos_angle_2); *angle = 2 *angle_2; /* we want an angle between -pi, pi */ if (*angle > M_PI) *angle -= 2 *M_PI; /* compute the axe */ sin_angle_2 = sin(angle_2); if (fabs(sin_angle_2) > HKL_EPSILON) { /* compute the axe using the vector part of the unitary quaterninon */ memcpy(v->data, &self->data[1], sizeof(v->data)); hkl_vector_div_double(v, sin_angle_2); } else { *angle = 0; memset(v->data, 0, sizeof(v->data)); } } hkl-4.0.3/hkl/hkl-pseudoaxis-k4cv-hkl.c0000644000175000017500000002133411400153354014517 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel * Maria-Teresa Nunez-Pardo-de-Verra * Jens Krüger */ #include #include #include #include /***********************/ /* numerical functions */ /***********************/ static int bissector_f1(const gsl_vector *x, void *params, gsl_vector *f) { double komega, tth, kappa, omega; size_t i; double const *x_data = x->data; double *f_data = f->data; for(i=0; isize;++i) if (gsl_isnan(x_data[i])) return GSL_ENOMEM; RUBh_minus_Q(x_data, params, f_data); komega = x_data[0]; kappa = x_data[1]; tth = x_data[3]; omega = komega + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) + M_PI_2; f_data[3] = fmod(tth - 2 * fmod(omega, M_PI), 2*M_PI); return GSL_SUCCESS; } static int bissector_f2(const gsl_vector *x, void *params, gsl_vector *f) { double komega, tth, kappa, omega; size_t i; double const *x_data = gsl_vector_const_ptr(x, 0); double *f_data = gsl_vector_ptr(f, 0); for(i=0; isize;++i) if (gsl_isnan(x_data[i])) return GSL_ENOMEM; RUBh_minus_Q(x_data, params, f_data); komega = x_data[0]; kappa = x_data[1]; tth = x_data[3]; omega = komega + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) - M_PI_2; f_data[3] = fmod(tth - 2 * fmod(omega, M_PI), 2*M_PI); return GSL_SUCCESS; } static int constant_omega_f1(const gsl_vector *x, void *params, gsl_vector *f) { double komega, kappa, omega; size_t i; HklPseudoAxisEngine *engine = params; double p0 = engine->mode->parameters[0].value; double const *x_data = x->data; double *f_data = f->data; for(i=0; isize;++i) if (gsl_isnan(x_data[i])) return GSL_ENOMEM; RUBh_minus_Q(x_data, params, f_data); komega = x_data[0]; kappa = x_data[1]; omega = komega + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) - M_PI_2; f_data[3] = p0 - omega; return GSL_SUCCESS; } static int constant_omega_f2(const gsl_vector *x, void *params, gsl_vector *f) { double komega, kappa, omega; size_t i; HklPseudoAxisEngine *engine = params; double p0 = engine->mode->parameters[0].value; double const *x_data = x->data; double *f_data = f->data; for(i=0; isize;++i) if (gsl_isnan(x_data[i])) return GSL_ENOMEM; RUBh_minus_Q(x_data, params, f_data); komega = x_data[0]; kappa = x_data[1]; omega = komega + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) + M_PI_2; f_data[3] = p0 - omega; return GSL_SUCCESS; } static int constant_chi_f1(const gsl_vector *x, void *params, gsl_vector *f) { double kappa, chi; size_t i; HklPseudoAxisEngine *engine = params; double p0 = engine->mode->parameters[0].value; double const *x_data = x->data; double *f_data = f->data; for(i=0; isize;++i) if (gsl_isnan(x_data[i])) return GSL_ENOMEM; RUBh_minus_Q(x_data, params, f_data); kappa = x_data[1]; chi = 2 * asin(sin(kappa/2.) * sin(50 * HKL_DEGTORAD)); f_data[3] = p0 - chi; return GSL_SUCCESS; } static int constant_chi_f2(const gsl_vector *x, void *params, gsl_vector *f) { double kappa, chi; size_t i; HklPseudoAxisEngine *engine = params; double p0 = engine->mode->parameters[0].value; double const *x_data = x->data; double *f_data = f->data; for(i=0; isize;++i) if (gsl_isnan(x_data[i])) return GSL_ENOMEM; RUBh_minus_Q(x_data, params, f_data); kappa = x_data[1]; chi = -2 * asin(sin(kappa/2.) * sin(50 * HKL_DEGTORAD)); f_data[3] = p0 - chi; return GSL_SUCCESS; } static int constant_phi_f1(const gsl_vector *x, void *params, gsl_vector *f) { double kappa, kphi, phi; size_t i; HklPseudoAxisEngine *engine = params; double p0 = engine->mode->parameters[0].value; double const *x_data = x->data; double *f_data = f->data; for(i=0; isize;++i) if (gsl_isnan(x_data[i])) return GSL_ENOMEM; RUBh_minus_Q(x_data, params, f_data); kappa = x_data[1]; kphi = x_data[2]; phi = kphi + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) + M_PI_2; f_data[3] = p0 - phi; return GSL_SUCCESS; } static int constant_phi_f2(const gsl_vector *x, void *params, gsl_vector *f) { double kappa, kphi, phi; size_t i; HklPseudoAxisEngine *engine = params; double p0 = engine->mode->parameters[0].value; double const *x_data = x->data; double *f_data = f->data; for(i=0; isize;++i) if (gsl_isnan(x_data[i])) return GSL_ENOMEM; RUBh_minus_Q(x_data, params, f_data); kappa = x_data[1]; kphi = x_data[2]; phi = kphi + atan(tan(kappa/2.)*cos(50 * HKL_DEGTORAD)) - M_PI_2; f_data[3] = p0 - phi; return GSL_SUCCESS; } /************************/ /* K4CV PseudoAxeEngine */ /************************/ HklPseudoAxisEngine *hkl_pseudo_axis_engine_k4cv_hkl_new(void) { HklPseudoAxisEngine *self; HklPseudoAxisEngineMode *mode; HklParameter parameter; HklParameter h2; HklParameter k2; HklParameter l2; HklParameter psi; self = hkl_pseudo_axis_engine_hkl_new(); /* hkl get/set bissector */ mode = hkl_pseudo_axis_engine_mode_new( "bissector", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 2, bissector_f1, bissector_f2, (size_t)0, (size_t)4, "komega", "kappa", "kphi", "tth"); hkl_pseudo_axis_engine_add_mode(self, mode); /* constant_omega */ hkl_parameter_init(¶meter, "omega", -M_PI, 0., M_PI, HKL_TRUE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg); mode = hkl_pseudo_axis_engine_mode_new( "constant_omega", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 2, constant_omega_f1, constant_omega_f2, (size_t)1, parameter, (size_t)4, "komega", "kappa", "kphi", "tth"); hkl_pseudo_axis_engine_add_mode(self, mode); /* constant_chi */ hkl_parameter_init(¶meter, "chi", -M_PI, 0., M_PI, HKL_TRUE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg); mode = hkl_pseudo_axis_engine_mode_new( "constant_chi", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 2, constant_chi_f1, constant_chi_f2, (size_t)1, parameter, (size_t)4, "komega", "kappa", "kphi", "tth"); hkl_pseudo_axis_engine_add_mode(self, mode); /* constant_phi */ hkl_parameter_init(¶meter, "phi", -M_PI, 0., M_PI, HKL_TRUE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg); mode = hkl_pseudo_axis_engine_mode_new( "constant_phi", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 2, constant_phi_f1, constant_phi_f2, (size_t)1, parameter, (size_t)4, "komega", "kappa", "kphi", "tth"); hkl_pseudo_axis_engine_add_mode(self, mode); /* double_diffraction */ hkl_parameter_init(&h2, "h2", -1, 1, 1, HKL_TRUE, HKL_TRUE, NULL, NULL); hkl_parameter_init(&k2, "k2", -1, 1, 1, HKL_TRUE, HKL_TRUE, NULL, NULL); hkl_parameter_init(&l2, "l2", -1, 1, 1, HKL_TRUE, HKL_TRUE, NULL, NULL); mode = hkl_pseudo_axis_engine_mode_new( "double_diffraction", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, double_diffraction_func, (size_t)3, h2, k2, l2, (size_t)4, "komega", "kappa", "kphi", "tth"); hkl_pseudo_axis_engine_add_mode(self, mode); /* psi_constant */ hkl_parameter_init(&h2, "h2", -1, 1, 1, HKL_TRUE, HKL_TRUE, NULL, NULL); hkl_parameter_init(&k2, "k2", -1, 0, 1, HKL_TRUE, HKL_TRUE, NULL, NULL); hkl_parameter_init(&l2, "l2", -1, 0, 1, HKL_TRUE, HKL_TRUE, NULL, NULL); hkl_parameter_init(&psi, "psi", -M_PI, 0, M_PI, HKL_TRUE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg); mode = hkl_pseudo_axis_engine_mode_new( "psi_constant", hkl_pseudo_axis_engine_mode_init_psi_constant_vertical_real, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_real, 1, psi_constant_vertical_func, (size_t)4, h2, k2, l2, psi, (size_t)4, "komega", "kappa", "kphi", "tth"); hkl_pseudo_axis_engine_add_mode(self, mode); hkl_pseudo_axis_engine_select_mode(self, 0); return self; } hkl-4.0.3/hkl/hkl-geometry-factory.c0000644000175000017500000001161111400153353014206 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include static void hkl_geometry_init_twoC_vertical(HklGeometry *self, const HklGeometryConfig *config) { HklHolder *h; self->config = config; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation_axis(h, "omega", 0, -1, 0); h = hkl_geometry_add_holder(self); hkl_holder_add_rotation_axis(h, "tth", 0, -1, 0); } static void hkl_geometry_init_eulerian4C_vertical(HklGeometry *self, const HklGeometryConfig *config) { HklHolder *h; self->config = config; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation_axis(h, "omega", 0, -1, 0); hkl_holder_add_rotation_axis(h, "chi", 1, 0, 0); hkl_holder_add_rotation_axis(h, "phi", 0, -1, 0); h = hkl_geometry_add_holder(self); hkl_holder_add_rotation_axis(h, "tth", 0, -1, 0); } static void hkl_geometry_init_kappa4C_vertical(HklGeometry *self, const HklGeometryConfig *config, double alpha) { HklHolder *h; self->config = config; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation_axis(h, "komega", 0, -1, 0); hkl_holder_add_rotation_axis(h, "kappa", 0, -cos(alpha), -sin(alpha)); hkl_holder_add_rotation_axis(h, "kphi", 0, -1, 0); h = hkl_geometry_add_holder(self); hkl_holder_add_rotation_axis(h, "tth", 0, -1, 0); } static void hkl_geometry_init_eulerian6C(HklGeometry *self, const HklGeometryConfig *config) { HklHolder *h; self->config = config; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation_axis(h, "mu", 0, 0, 1); hkl_holder_add_rotation_axis(h, "omega", 0, -1, 0); hkl_holder_add_rotation_axis(h, "chi", 1, 0, 0); hkl_holder_add_rotation_axis(h, "phi", 0, -1, 0); h = hkl_geometry_add_holder(self); hkl_holder_add_rotation_axis(h, "gamma", 0, 0, 1); hkl_holder_add_rotation_axis(h, "delta", 0, -1, 0); } static void hkl_geometry_init_kappa6C(HklGeometry *self, const HklGeometryConfig *config, double alpha) { HklHolder *h; self->config = config; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation_axis(h, "mu", 0, 0, 1); hkl_holder_add_rotation_axis(h, "komega", 0, -1, 0); hkl_holder_add_rotation_axis(h, "kappa", 0, -cos(alpha), -sin(alpha)); hkl_holder_add_rotation_axis(h, "kphi", 0, -1, 0); h = hkl_geometry_add_holder(self); hkl_holder_add_rotation_axis(h, "gamma", 0, 0, 1); hkl_holder_add_rotation_axis(h, "delta", 0, -1, 0); } static void hkl_geometry_init_zaxis(HklGeometry *self, const HklGeometryConfig *config) { HklHolder *h; self->config = config; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation_axis(h, "mu", 0, 0, 1); hkl_holder_add_rotation_axis(h, "omega", 0, -1, 0); h = hkl_geometry_add_holder(self); hkl_holder_add_rotation_axis(h, "mu", 0, 0, 1); hkl_holder_add_rotation_axis(h, "delta", 0, -1, 0); hkl_holder_add_rotation_axis(h, "gamma", 0, 0, 1); } const HklGeometryConfig *hkl_geometry_factory_get_config_from_type(HklGeometryType type) { const HklGeometryConfig *config; config = hkl_geometry_factory_configs; while(config) if(config->type == type) return config; else config++; return NULL; } HklGeometry *hkl_geometry_factory_new(const HklGeometryConfig *config, ...) { HklGeometry *geom; double alpha; va_list ap; geom = hkl_geometry_new(); switch(config->type) { case HKL_GEOMETRY_TYPE_TWOC_VERTICAL: hkl_geometry_init_twoC_vertical(geom, config); break; case HKL_GEOMETRY_TYPE_EULERIAN4C_VERTICAL: hkl_geometry_init_eulerian4C_vertical(geom, config); break; case HKL_GEOMETRY_TYPE_KAPPA4C_VERTICAL: va_start(ap, config); alpha = va_arg(ap, double); va_end(ap); hkl_geometry_init_kappa4C_vertical(geom, config, alpha); break; case HKL_GEOMETRY_TYPE_EULERIAN6C: hkl_geometry_init_eulerian6C(geom, config); break; case HKL_GEOMETRY_TYPE_KAPPA6C: va_start(ap, config); alpha = va_arg(ap, double); va_end(ap); hkl_geometry_init_kappa6C(geom, config, alpha); break; case HKL_GEOMETRY_TYPE_ZAXIS: hkl_geometry_init_zaxis(geom, config); break; } return geom; } hkl-4.0.3/hkl/hkl-vector.h0000644000175000017500000000646411400153354012230 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_VECTOR_H__ #define __HKL_VECTOR_H__ #include #include #include HKL_BEGIN_DECLS /* forward declaration begin */ typedef struct _HklMatrix HklMatrix; typedef struct _HklQuaternion HklQuaternion; /* forward declaration end */ typedef struct _HklVector HklVector; struct _HklVector { double data[3]; }; extern void hkl_vector_init(HklVector *self, double x, double y, double z); extern void hkl_vector_fprintf(FILE *file, const HklVector *self); extern int hkl_vector_cmp(const HklVector *self, const HklVector *vector); extern int hkl_vector_is_opposite(const HklVector *self, const HklVector *vector); extern void hkl_vector_add_vector(HklVector *self, const HklVector *vector); extern void hkl_vector_minus_vector(HklVector *self, const HklVector *vector); extern void hkl_vector_div_double(HklVector *self, const double d); extern void hkl_vector_times_double(HklVector *self, const double d); extern void hkl_vector_times_vector(HklVector *self, const HklVector *vector); extern void hkl_vector_times_matrix(HklVector *self, const HklMatrix *m); extern double hkl_vector_sum(const HklVector *self); extern double hkl_vector_scalar_product(const HklVector *self, const HklVector *vector); extern void hkl_vector_vectorial_product(HklVector *self, const HklVector *vector); extern double hkl_vector_angle(const HklVector *self, const HklVector *vector); extern double hkl_vector_oriented_angle(const HklVector *self, const HklVector *vector, const HklVector *ref); extern double hkl_vector_norm2(const HklVector *self); extern int hkl_vector_normalize(HklVector *self); extern int hkl_vector_is_colinear(const HklVector *self, const HklVector *vector); extern void hkl_vector_randomize(HklVector *self); extern void hkl_vector_randomize_vector(HklVector *self, const HklVector *vector); extern void hkl_vector_randomize_vector_vector(HklVector *self, const HklVector *vector1, const HklVector *vector2); extern void hkl_vector_rotated_around_vector(HklVector *self, const HklVector *axe, double angle); extern void hkl_vector_rotated_quaternion(HklVector *self, const HklQuaternion *qr); extern int hkl_vector_is_null(const HklVector *self); extern void hkl_vector_project_on_plan(HklVector *self, const HklVector *plan); HKL_END_DECLS #endif hkl-4.0.3/hkl/hkl-source.c0000644000175000017500000000407511400153354012215 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include int hkl_source_init(HklSource *self, double wave_length, double x, double y, double z) { if (wave_length > HKL_EPSILON && ( x > HKL_EPSILON || y > HKL_EPSILON || z > HKL_EPSILON)) { double norm; norm = sqrt(x*x + y*y + z*z); self->wave_length = wave_length; hkl_vector_init(&self->direction, x, y, z); hkl_vector_div_double(&self->direction, norm); return HKL_SUCCESS; } else return HKL_FAIL; } /** compare two sources */ int hkl_source_cmp(HklSource const *self, HklSource const *s) { return ( (fabs(self->wave_length - s->wave_length) < HKL_EPSILON) && hkl_vector_is_colinear(&self->direction, &s->direction)); } /** compute the ki hkl_vector */ void hkl_source_compute_ki(HklSource const *self, HklVector *ki) { *ki = self->direction; hkl_vector_times_double(ki, HKL_TAU / self->wave_length); } double hkl_source_get_wavelength(HklSource const *self) { return self->wave_length; } /** printf the source */ void hkl_source_fprintf(FILE *f, HklSource const *self) { fprintf(f, "%f", self->wave_length); hkl_vector_fprintf(f, &self->direction); } hkl-4.0.3/hkl/hkl-pseudoaxis-common-psi.c0000644000175000017500000001722011402652607015163 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include #include #include #include #include static int psi_func(const gsl_vector *x, void *params, gsl_vector *f) { HklVector dhkl0, hkl1; HklVector ki, kf, Q, n; HklMatrix RUB; HklPseudoAxisEngine *engine; HklPseudoAxisEngineModePsi *modepsi; HklPseudoAxis *psi; HklHolder *holder; size_t i; size_t len; double const *x_data = gsl_vector_const_ptr(x, 0); double *f_data = gsl_vector_ptr(f, 0); engine = params; modepsi = (HklPseudoAxisEngineModePsi *)engine->mode; psi = engine->pseudoAxes[0]; /* update the workspace from x; */ len = HKL_LIST_LEN(engine->axes); for(i=0; iaxes[i], x_data[i]); hkl_geometry_update(engine->geometry); /* kf - ki = Q */ hkl_source_compute_ki(&engine->geometry->source, &ki); hkl_detector_compute_kf(engine->detector, engine->geometry, &kf); Q = kf; hkl_vector_minus_vector(&Q, &ki); if (hkl_vector_is_null(&Q)){ f_data[0] = 1; f_data[1] = 1; f_data[2] = 1; f_data[3] = 1; }else{ /* R * UB */ /* for now the 0 holder is the sample holder. */ holder = &engine->geometry->holders[0]; hkl_quaternion_to_matrix(&holder->q, &RUB); hkl_matrix_times_matrix(&RUB, &engine->sample->UB); /* compute dhkl0 */ hkl_matrix_solve(&RUB, &dhkl0, &Q); hkl_vector_minus_vector(&dhkl0, &modepsi->hkl0); /* compute the intersection of the plan P(kf, ki) and PQ (normal Q) */ /* * now that dhkl0 have been computed we can use a * normalized Q to compute n and psi */ hkl_vector_normalize(&Q); n = kf; hkl_vector_vectorial_product(&n, &ki); hkl_vector_vectorial_product(&n, &Q); /* compute hkl1 in the laboratory referentiel */ /* for now the 0 holder is the sample holder. */ hkl1.data[0] = engine->mode->parameters[0].value; hkl1.data[1] = engine->mode->parameters[1].value; hkl1.data[2] = engine->mode->parameters[2].value; hkl_vector_times_matrix(&hkl1, &engine->sample->UB); hkl_vector_rotated_quaternion(&hkl1, &engine->geometry->holders[0].q); /* project hkl1 on the plan of normal Q */ hkl_vector_project_on_plan(&hkl1, &Q); if (hkl_vector_is_null(&hkl1)){ /* hkl1 colinear with Q */ f_data[0] = dhkl0.data[0]; f_data[1] = dhkl0.data[1]; f_data[2] = dhkl0.data[2]; f_data[3] = 1; }else{ f_data[0] = dhkl0.data[0]; f_data[1] = dhkl0.data[1]; f_data[2] = dhkl0.data[2]; f_data[3] = psi->parent.value - hkl_vector_oriented_angle(&n, &hkl1, &Q); } } return GSL_SUCCESS; } static int hkl_pseudo_axis_engine_mode_init_psi_real(HklPseudoAxisEngineMode *base, HklPseudoAxisEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, HklError **error) { int status = HKL_SUCCESS; HklVector ki; HklMatrix RUB; HklPseudoAxisEngineModePsi *self = (HklPseudoAxisEngineModePsi *)base; HklHolder *holder; status = hkl_pseudo_axis_engine_init_func(base, engine, geometry, detector, sample); if (status == HKL_FAIL) return status; /* update the geometry internals */ hkl_geometry_update(geometry); /* R * UB */ /* for now the 0 holder is the sample holder. */ holder = &geometry->holders[0]; hkl_quaternion_to_matrix(&holder->q, &RUB); hkl_matrix_times_matrix(&RUB, &sample->UB); /* kf - ki = Q0 */ hkl_source_compute_ki(&geometry->source, &ki); hkl_detector_compute_kf(detector, geometry, &self->Q0); hkl_vector_minus_vector(&self->Q0, &ki); if (hkl_vector_is_null(&self->Q0)) status = HKL_FAIL; else /* compute hkl0 */ hkl_matrix_solve(&RUB, &self->hkl0, &self->Q0); return status; } static int hkl_pseudo_axis_engine_mode_get_psi_real(HklPseudoAxisEngineMode *base, HklPseudoAxisEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample, HklError **error) { int status = HKL_SUCCESS; HklVector ki; HklVector kf; HklVector Q; HklVector hkl1; HklVector n; if (!base || !engine || !engine->mode || !geometry || !detector || !sample){ status = HKL_FAIL; return status; } /* get kf, ki and Q */ hkl_source_compute_ki(&geometry->source, &ki); hkl_detector_compute_kf(detector, geometry, &kf); Q = kf; hkl_vector_minus_vector(&Q, &ki); if (hkl_vector_is_null(&Q)) status = HKL_FAIL; else{ /* needed for a problem of precision */ hkl_vector_normalize(&Q); /* compute the intersection of the plan P(kf, ki) and PQ (normal Q) */ n = kf; hkl_vector_vectorial_product(&n, &ki); hkl_vector_vectorial_product(&n, &Q); /* compute hkl1 in the laboratory referentiel */ /* the geometry was already updated in the detector compute kf */ /* for now the 0 holder is the sample holder. */ hkl1.data[0] = base->parameters[0].value; hkl1.data[1] = base->parameters[1].value; hkl1.data[2] = base->parameters[2].value; hkl_vector_times_matrix(&hkl1, &sample->UB); hkl_vector_rotated_quaternion(&hkl1, &geometry->holders[0].q); /* project hkl1 on the plan of normal Q */ hkl_vector_project_on_plan(&hkl1, &Q); if (hkl_vector_is_null(&hkl1)) status = HKL_FAIL; else /* compute the angle beetween hkl1 and n */ ((HklParameter *)engine->pseudoAxes[0])->value = hkl_vector_oriented_angle(&n, &hkl1, &Q); } return status; } HklPseudoAxisEngineModePsi *hkl_pseudo_axis_engine_mode_psi_new(char const *name, size_t axes_names_len, char const *axes_names[]) { HklPseudoAxisEngineModePsi *self; HklParameter parameters[3]; HklFunction functions[] = {psi_func}; if (axes_names_len != 4){ fprintf(stderr, "This generic HklPseudoAxisEngineModePsi need exactly 4 axes"); exit(128); } self = HKL_MALLOC(HklPseudoAxisEngineModePsi); /* h1 */ hkl_parameter_init(¶meters[0], "h1", -1, 1, 1, HKL_TRUE, HKL_FALSE, NULL, NULL); /* k1 */ hkl_parameter_init(¶meters[1], "k1", -1, 0, 1, HKL_TRUE, HKL_FALSE, NULL, NULL); /* l1 */ hkl_parameter_init(¶meters[2], "l1", -1, 0, 1, HKL_TRUE, HKL_FALSE, NULL, NULL); /* the base constructor; */ hkl_pseudo_axis_engine_mode_init(&self->parent, name, hkl_pseudo_axis_engine_mode_init_psi_real, hkl_pseudo_axis_engine_mode_get_psi_real, hkl_pseudo_axis_engine_mode_set_real, 1, functions, 3, parameters, axes_names_len, axes_names); return self; } HklPseudoAxisEngine *hkl_pseudo_axis_engine_psi_new(void) { HklPseudoAxisEngine *self; self = hkl_pseudo_axis_engine_new("psi", 1, "psi"); /* psi */ hkl_parameter_init((HklParameter *)self->pseudoAxes[0], "psi", -M_PI, 0., M_PI, HKL_TRUE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg); return self; } hkl-4.0.3/test/0000755000175000017500000000000011402652636010261 500000000000000hkl-4.0.3/test/hkl-test-pseudoaxis-e4cv.c0000644000175000017500000003235511402652607015127 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include "hkl-test.h" #ifdef HKL_TEST_SUITE_NAME # undef HKL_TEST_SUITE_NAME #endif #define HKL_TEST_SUITE_NAME pseudoaxis_E4CV #define SET_AXES(geom, omega, chi, phi, tth) do{ \ hkl_geometry_set_values_v(geom, 4, \ omega * HKL_DEGTORAD, \ chi * HKL_DEGTORAD, \ phi * HKL_DEGTORAD, \ tth * HKL_DEGTORAD); \ } while(0) #define CHECK_PSEUDOAXES(engine, a, b, c) do{ \ HklParameter *H = (HklParameter *)(engine->pseudoAxes[0]); \ HklParameter *K = (HklParameter *)(engine->pseudoAxes[1]); \ HklParameter *L = (HklParameter *)(engine->pseudoAxes[2]); \ \ HKL_ASSERT_DOUBLES_EQUAL(a, H->value, HKL_EPSILON); \ HKL_ASSERT_DOUBLES_EQUAL(b, K->value, HKL_EPSILON); \ HKL_ASSERT_DOUBLES_EQUAL(c, L->value, HKL_EPSILON); \ } while(0) HKL_TEST_SUITE_FUNC(new) { HklPseudoAxisEngine *engine = hkl_pseudo_axis_engine_e4cv_hkl_new(); hkl_pseudo_axis_engine_free(engine); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(getter) { HklPseudoAxisEngineList *engines; HklPseudoAxisEngine *engine; const HklGeometryConfig *config; HklGeometry *geom; HklDetector *detector; HklSample *sample; config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_EULERIAN4C_VERTICAL); geom = hkl_geometry_factory_new(config); sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); detector->idx = 1; engines = hkl_pseudo_axis_engine_list_factory(config); hkl_pseudo_axis_engine_list_init(engines, geom, detector, sample); engine = hkl_pseudo_axis_engine_list_get_by_name(engines, "hkl"); /* geometry -> pseudo */ SET_AXES(geom, 30., 0., 0., 60.); hkl_pseudo_axis_engine_get(engine, NULL); CHECK_PSEUDOAXES(engine, 0., 0., 1.); SET_AXES(geom, 30., 0., 90., 60.); hkl_pseudo_axis_engine_get(engine, NULL); CHECK_PSEUDOAXES(engine, 1., 0., 0.); SET_AXES(geom, 30, 0., -90., 60.); hkl_pseudo_axis_engine_get(engine, NULL); CHECK_PSEUDOAXES(engine, -1., 0., 0.); SET_AXES(geom, 30., 0., 180., 60.); hkl_pseudo_axis_engine_get(engine, NULL); CHECK_PSEUDOAXES(engine, 0., 0., -1.); SET_AXES(geom, 45., 0., 135., 90.); hkl_pseudo_axis_engine_get(engine, NULL); CHECK_PSEUDOAXES(engine, 1., 0., -1.); hkl_pseudo_axis_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geom); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(degenerated) { HklPseudoAxisEngineList *engines; HklPseudoAxisEngine *engine; const HklGeometryConfig *config; HklGeometry *geom; HklDetector *detector; HklSample *sample; size_t i, f_idx; double *H, *K, *L; config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_EULERIAN4C_VERTICAL); geom = hkl_geometry_factory_new(config); sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); detector->idx = 1; engines = hkl_pseudo_axis_engine_list_factory(config); hkl_pseudo_axis_engine_list_init(engines, geom, detector, sample); engine = hkl_pseudo_axis_engine_list_get_by_name(engines, "hkl"); H = &(((HklParameter *)engine->pseudoAxes[0])->value); K = &(((HklParameter *)engine->pseudoAxes[1])->value); L = &(((HklParameter *)engine->pseudoAxes[2])->value); for(f_idx=0; f_idxmodes); ++f_idx){ double h, k, l; int res; hkl_pseudo_axis_engine_select_mode(engine, f_idx); if (HKL_LIST_LEN(engine->mode->parameters)) engine->mode->parameters[0].value = 0.; /* studdy this degenerated case */ *H = h = 0; *K = k = 0; *L = l = 1; /* pseudo -> geometry */ res = hkl_pseudo_axis_engine_set(engine, NULL); /* hkl_pseudo_axis_engine_fprintf(stdout, engine); */ /* geometry -> pseudo */ if(res == HKL_SUCCESS){ /* hkl_pseudo_axis_engine_fprintf(stdout, engine); */ for(i=0; igeometries); ++i){ *H = *K = *L = 0; hkl_geometry_init_geometry(engines->geometry, engines->geometries->items[i]->geometry); hkl_pseudo_axis_engine_get(engine, NULL); HKL_ASSERT_DOUBLES_EQUAL(h, *H, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(k, *K, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(l, *L, HKL_EPSILON); } } } hkl_pseudo_axis_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geom); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(psi_getter) { HklPseudoAxisEngineList *engines; HklPseudoAxisEngine *engine; const HklGeometryConfig *config; HklGeometry *geom; HklDetector *detector; HklSample *sample; size_t i, f_idx; double *psi; double *h_ref; double *k_ref; double *l_ref; int status; config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_EULERIAN4C_VERTICAL); geom = hkl_geometry_factory_new(config); sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); detector->idx = 1; engines = hkl_pseudo_axis_engine_list_factory(config); hkl_pseudo_axis_engine_list_init(engines, geom, detector, sample); engine = hkl_pseudo_axis_engine_list_get_by_name(engines, "psi"); psi = &(((HklParameter *)engine->pseudoAxes[0])->value); h_ref = &engine->mode->parameters[0].value; k_ref = &engine->mode->parameters[1].value; l_ref = &engine->mode->parameters[2].value; /* the getter part */ SET_AXES(geom, 30., 0., 0., 60.); hkl_pseudo_axis_engine_initialize(engine, NULL); *h_ref = 1; *k_ref = 0; *l_ref = 0; status = hkl_pseudo_axis_engine_get(engine, NULL); HKL_ASSERT_EQUAL(HKL_SUCCESS, status); HKL_ASSERT_DOUBLES_EQUAL(0 * HKL_DEGTORAD, *psi, HKL_EPSILON); *h_ref = 0; *k_ref = 1; *l_ref = 0; status = hkl_pseudo_axis_engine_get(engine, NULL); HKL_ASSERT_EQUAL(HKL_SUCCESS, status); HKL_ASSERT_DOUBLES_EQUAL(90 * HKL_DEGTORAD, *psi, HKL_EPSILON); /* here Q and _ref are colinear */ *h_ref = 0; *k_ref = 0; *l_ref = 1; status = hkl_pseudo_axis_engine_get(engine, NULL); HKL_ASSERT_EQUAL(HKL_FAIL, status); *h_ref = -1; *k_ref = 0; *l_ref = 0; status = hkl_pseudo_axis_engine_get(engine, NULL); HKL_ASSERT_EQUAL(HKL_SUCCESS, status); HKL_ASSERT_DOUBLES_EQUAL(180 * HKL_DEGTORAD, *psi, HKL_EPSILON); *h_ref = 0; *k_ref = -1; *l_ref = 0; status = hkl_pseudo_axis_engine_get(engine, NULL); HKL_ASSERT_EQUAL(HKL_SUCCESS, status); HKL_ASSERT_DOUBLES_EQUAL(-90 * HKL_DEGTORAD, *psi, HKL_EPSILON); *h_ref = 0; *k_ref = 0; *l_ref = -1; status = hkl_pseudo_axis_engine_get(engine, NULL); HKL_ASSERT_EQUAL(HKL_FAIL, status); hkl_pseudo_axis_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geom); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(psi_setter) { HklPseudoAxisEngineList *engines; HklPseudoAxisEngine *engine; const HklGeometryConfig *config; HklGeometry *geom; HklDetector *detector; HklSample *sample; size_t i, f_idx; double *Psi; double *h_ref, *k_ref, *l_ref; config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_EULERIAN4C_VERTICAL); geom = hkl_geometry_factory_new(config); sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); detector->idx = 1; engines = hkl_pseudo_axis_engine_list_factory(config); hkl_pseudo_axis_engine_list_init(engines, geom, detector, sample); engine = hkl_pseudo_axis_engine_list_get_by_name(engines, "psi"); Psi = &(((HklParameter *)engine->pseudoAxes[0])->value); h_ref = &engine->mode->parameters[0].value; k_ref = &engine->mode->parameters[1].value; l_ref = &engine->mode->parameters[2].value; /* the init part */ SET_AXES(geom, 30., 0., 0., 60.); *h_ref = 1; *k_ref = 0; *l_ref = 0; hkl_pseudo_axis_engine_initialize(engine, NULL); for(f_idx=0; f_idxmodes); ++f_idx){ double psi; int res; hkl_pseudo_axis_engine_select_mode(engine, f_idx); for(psi=-180;psi<180;psi++){ *Psi = psi * HKL_DEGTORAD; /* pseudo -> geometry */ res = hkl_pseudo_axis_engine_set(engine, NULL); /* hkl_pseudo_axis_engine_fprintf(stdout, engine); */ /* geometry -> pseudo */ if(res == HKL_SUCCESS){ /* hkl_pseudo_axis_engine_fprintf(stdout, engine); */ for(i=0; igeometries); ++i){ *Psi = 0; hkl_geometry_init_geometry(geom, engines->geometries->items[i]->geometry); hkl_pseudo_axis_engine_get(engine, NULL); HKL_ASSERT_DOUBLES_EQUAL(psi * HKL_DEGTORAD, *Psi, HKL_EPSILON); } } } } hkl_pseudo_axis_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geom); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(q) { HklPseudoAxisEngineList *engines; HklPseudoAxisEngine *engine; const HklGeometryConfig *config; HklGeometry *geom; HklDetector *detector; HklSample *sample; size_t i, f_idx; double *Q; config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_EULERIAN4C_VERTICAL); geom = hkl_geometry_factory_new(config); sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); detector->idx = 1; engines = hkl_pseudo_axis_engine_list_factory(config); hkl_pseudo_axis_engine_list_init(engines, geom, detector, sample); engine = hkl_pseudo_axis_engine_list_get_by_name(engines, "q"); Q = &(((HklParameter *)engine->pseudoAxes[0])->value); /* the init part */ SET_AXES(geom, 30., 0., 0., 60.); hkl_pseudo_axis_engine_initialize(engine, NULL); for(f_idx=0; f_idxmodes); ++f_idx){ double q; int res; hkl_pseudo_axis_engine_select_mode(engine, f_idx); for(q=-1.; q<1.; q += 0.1){ *Q = q; /* pseudo -> geometry */ res = hkl_pseudo_axis_engine_set(engine, NULL); /* geometry -> pseudo */ if(res == HKL_SUCCESS){ for(i=0; igeometries); ++i){ *Q = 0; hkl_geometry_init_geometry(geom, engines->geometries->items[i]->geometry); hkl_pseudo_axis_engine_get(engine, NULL); HKL_ASSERT_DOUBLES_EQUAL(q, *Q, HKL_EPSILON); } } } } hkl_pseudo_axis_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geom); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(hkl_psi_constant_vertical) { HklPseudoAxisEngineList *engines; HklPseudoAxisEngine *engine; const HklGeometryConfig *config; HklGeometry *geom; HklDetector *detector; HklSample *sample; size_t i, f_idx; double *H, *K, *L; double h, k, l; double *h_ref, *k_ref, *l_ref, *psi_ref; int res; config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_EULERIAN4C_VERTICAL); geom = hkl_geometry_factory_new(config); sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); detector->idx = 1; engines = hkl_pseudo_axis_engine_list_factory(config); hkl_pseudo_axis_engine_list_init(engines, geom, detector, sample); engine = hkl_pseudo_axis_engine_list_get_by_name(engines, "hkl"); H = &(((HklParameter *)engine->pseudoAxes[0])->value); K = &(((HklParameter *)engine->pseudoAxes[1])->value); L = &(((HklParameter *)engine->pseudoAxes[2])->value); hkl_pseudo_axis_engine_select_mode(engine, 5); h_ref = &engine->mode->parameters[0].value; k_ref = &engine->mode->parameters[1].value; l_ref = &engine->mode->parameters[2].value; psi_ref = &engine->mode->parameters[3].value; /* the init part */ SET_AXES(geom, 30., 0., 0., 60.); *h_ref = 1; *k_ref = 1; *l_ref = 0; hkl_pseudo_axis_engine_initialize(engine, NULL); *H = h = 1; *K = k = 0; *L = l = 1; res = hkl_pseudo_axis_engine_set(engine, NULL); /* geometry -> pseudo */ if(res == HKL_SUCCESS){ /* hkl_pseudo_axis_engine_fprintf(stdout, engine); */ for(i=0; igeometries); ++i){ *H = *K = *L = 0; hkl_geometry_init_geometry(geom, engines->geometries->items[i]->geometry); hkl_pseudo_axis_engine_get(engine, NULL); HKL_ASSERT_DOUBLES_EQUAL(h, *H, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(k, *K, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(l, *L, HKL_EPSILON); } } hkl_pseudo_axis_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geom); return HKL_TEST_PASS; } HKL_TEST_SUITE_BEGIN HKL_TEST( new ); HKL_TEST( getter ); HKL_TEST( degenerated ); HKL_TEST( psi_getter ); HKL_TEST( psi_setter ); HKL_TEST( q ); HKL_TEST( hkl_psi_constant_vertical ); HKL_TEST_SUITE_END hkl-4.0.3/test/hkl-test-quaternion.c0000644000175000017500000001117711402652607014270 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include "hkl-test.h" #ifdef HKL_TEST_SUITE_NAME # undef HKL_TEST_SUITE_NAME #endif #define HKL_TEST_SUITE_NAME quaternion HKL_TEST_SUITE_FUNC(assignment) { HklQuaternion q = {{1, 0, 0, 0}}; HklQuaternion copy = q; HKL_ASSERT_DOUBLES_EQUAL(1., copy.data[0], HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(0., copy.data[1], HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(0., copy.data[2], HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(0., copy.data[3], HKL_EPSILON); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(cmp) { HklQuaternion q_ref = {{1., 2., 3., 4.}}; HklQuaternion q = {{1., 2., 3., 4.}}; HklQuaternion q1 = {{1., 1., 3., 4.}}; HKL_ASSERT_EQUAL(HKL_TRUE, hkl_quaternion_cmp(&q_ref, &q)); HKL_ASSERT_EQUAL(HKL_FALSE, hkl_quaternion_cmp(&q_ref, &q1)); /* test the assignation */ q1 = q_ref; HKL_ASSERT_EQUAL(HKL_TRUE, hkl_quaternion_cmp(&q_ref, &q1)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(init_from_vector) { HklQuaternion q_ref = {{0, 1, -1, .5}}; HklVector v = {{1., -1., .5}}; HklQuaternion q; hkl_quaternion_init_from_vector(&q, &v); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_quaternion_cmp(&q_ref, &q)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(init_from_angle_and_axe) { HklQuaternion q_ref1 = {{1, 0, 0, 0}}; HklQuaternion q_ref2 = {{sqrt(2.)/2., sqrt(2./9.), -sqrt(2./9.), sqrt(1./18.)}}; HklVector v_ref2 = {{1., -1., .5}}; HklQuaternion q; hkl_quaternion_init_from_angle_and_axe(&q, 0, &v_ref2); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_quaternion_cmp(&q_ref1, &q)); hkl_quaternion_init_from_angle_and_axe(&q, 90. * HKL_DEGTORAD, &v_ref2); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_quaternion_cmp(&q_ref2, &q)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(times_quaternion) { HklQuaternion q_ref = {{-28., 4., 6., 8.}}; HklQuaternion q = {{1., 2., 3., 4.}}; hkl_quaternion_times_quaternion(&q, &q); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_quaternion_cmp(&q_ref, &q)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(norm2) { HklQuaternion q = {{1., 2., 3., 4.}}; HKL_ASSERT_DOUBLES_EQUAL(sqrt(30.), hkl_quaternion_norm2(&q), HKL_EPSILON); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(conjugate) { HklQuaternion q_ref = {{1., -2., -3., -4.}}; HklQuaternion q = {{1., 2., 3., 4.}}; hkl_quaternion_conjugate(&q); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_quaternion_cmp(&q_ref, &q)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(to_matrix) { HklQuaternion q_ref = {{1./sqrt(2), 0, 0, 1./sqrt(2)}}; HklMatrix m_ref = {{{0,-1, 0}, {1, 0, 0}, {0, 0, 1}}}; HklMatrix m; hkl_quaternion_to_matrix(&q_ref, &m); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_matrix_cmp(&m_ref, &m)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(to_angle_and_axe) { HklVector v_ref = {{0 ,0, 1}}; HklVector v_null = {{0 ,0, 0}}; HklQuaternion q_I = {{1, 0, 0, 0}}; int i; double angle_ref; double angle; HklVector v; HklQuaternion q; /* test the q = (1, 0, 0, 0) solution axe == (0, 0, 0) and angle = 0. */ hkl_quaternion_to_angle_and_axe(&q_I, &angle, &v); HKL_ASSERT_EQUAL(0, hkl_vector_cmp(&v_null, &v)); HKL_ASSERT_DOUBLES_EQUAL(0., angle, HKL_EPSILON); /* test other cases */ for(i=-180; i<180; i++) { angle_ref = i * HKL_DEGTORAD; hkl_quaternion_init_from_angle_and_axe(&q, angle_ref, &v_ref); hkl_quaternion_to_angle_and_axe(&q, &angle, &v); if (!hkl_vector_cmp(&v_ref, &v)) HKL_ASSERT_DOUBLES_EQUAL(angle_ref, angle, HKL_EPSILON); else if (hkl_vector_is_opposite(&v, &v_ref)) HKL_ASSERT_DOUBLES_EQUAL(angle_ref, -angle, HKL_EPSILON); } return HKL_TEST_PASS; } HKL_TEST_SUITE_BEGIN HKL_TEST( assignment ); HKL_TEST( cmp ); HKL_TEST( init_from_vector ); HKL_TEST( init_from_angle_and_axe ); HKL_TEST( times_quaternion ); HKL_TEST( norm2 ); HKL_TEST( conjugate ); HKL_TEST( to_matrix ); HKL_TEST( to_angle_and_axe ); HKL_TEST_SUITE_END hkl-4.0.3/test/hkl-test-matrix.c0000644000175000017500000001023511402652607013401 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include "hkl-test.h" #ifdef HKL_TEST_SUITE_NAME # undef HKL_TEST_SUITE_NAME #endif #define HKL_TEST_SUITE_NAME smatrix HKL_TEST_SUITE_FUNC(init) { HklMatrix m; hkl_matrix_init(&m, 1, 1, 0, 0, 1, 0, 0, 0, 1); HKL_ASSERT_DOUBLES_EQUAL(1., m.data[0][0], HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(1., m.data[0][1], HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(0., m.data[0][2], HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(0., m.data[1][0], HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(1., m.data[1][1], HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(0., m.data[1][2], HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(0., m.data[2][0], HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(0., m.data[2][1], HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(1., m.data[2][2], HKL_EPSILON); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(cmp) { HklMatrix m1 = {{{0.0, 1.0, 2.0}, {3.0, 4.0, 5.0}, {6.0, 7.0, 8.0}}}; HklMatrix m2 = {{{1.0, 1.0, 2.0}, {3.0, 4.0, 5.0}, {6.0, 7.0, 8.0}}}; HKL_ASSERT_EQUAL(HKL_TRUE, hkl_matrix_cmp(&m1, &m1)); HKL_ASSERT_EQUAL(HKL_FALSE, hkl_matrix_cmp(&m1, &m2)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(assignement) { HklMatrix m1 = {{{0.0, 1.0, 2.0}, {3.0, 4.0, 5.0}, {6.0, 7.0, 8.0}}}; HklMatrix m; m = m1; HKL_ASSERT_EQUAL(HKL_TRUE, hkl_matrix_cmp(&m1, &m)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(init_from_euler) { HklMatrix m_ref = {{{ 1./2., -1./2., sqrt(2)/2.}, { sqrt(2.)/4.+1./2., -sqrt(2.)/4.+1./2., -1./2.}, {-sqrt(2.)/4.+1./2., sqrt(2.)/4.+1./2., 1./2.}}}; HklMatrix m; hkl_matrix_init_from_euler(&m, 45.*HKL_DEGTORAD, 45.*HKL_DEGTORAD, 45.*HKL_DEGTORAD); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_matrix_cmp(&m_ref, &m)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(init_from_two_vector) { HklVector v1 = {{0.0, 1.0, 2.0}}; HklVector v2 = {{1.0, 2.0, 3.0}}; HklMatrix m_ref = {{{0.0, 5.0 / sqrt(30.0), -1.0 / sqrt(6.0)}, {1.0 / sqrt(5.0), 2.0 / sqrt(30.0), 2.0 / sqrt(6.0)}, {2.0 / sqrt(5.0),-1.0 / sqrt(30.0), -1.0 / sqrt(6.0)}} }; HklMatrix m; hkl_matrix_init_from_two_vector(&m, &v1, &v2); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_matrix_cmp(&m_ref, &m)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(times_vector) { HklMatrix m = {{{ 1.0, 3.0,-2.0}, {10.0, 5.0, 5.0}, {-3.0, 2.0, 0.0}} }; HklVector v = {{1, 2, 3}}; HklVector v_ref = {{1, 35, 1}}; hkl_matrix_times_vector(&m, &v); HKL_ASSERT_EQUAL(0, hkl_vector_cmp(&v_ref, &v)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(times_matrix) { HklMatrix m_ref = {{{37., 14., 13.}, {45., 65., 5.}, {17., 1., 16.}} }; HklMatrix m = {{{ 1., 3.,-2.}, {10., 5., 5.}, {-3., 2., 0.}} }; hkl_matrix_times_matrix(&m, &m); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_matrix_cmp(&m_ref, &m)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(transpose) { HklMatrix m_ref = {{{37., 14., 13.}, {45., 65., 5.}, {17., 1., 16.}} }; HklMatrix m = {{{37., 45., 17.}, {14., 65., 1.}, {13., 5., 16.}} }; hkl_matrix_transpose(&m); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_matrix_cmp(&m_ref, &m)); return HKL_TEST_PASS; } HKL_TEST_SUITE_BEGIN HKL_TEST(init); HKL_TEST(cmp); HKL_TEST(assignement); HKL_TEST(init_from_euler); HKL_TEST(init_from_two_vector); HKL_TEST(times_vector); HKL_TEST(times_matrix); HKL_TEST(transpose); HKL_TEST_SUITE_END hkl-4.0.3/test/hkl-test-sample.c0000644000175000017500000003551411402652607013365 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include "hkl-test.h" #ifdef HKL_TEST_SUITE_NAME # undef HKL_TEST_SUITE_NAME #endif #define HKL_TEST_SUITE_NAME sample #define SET_ANGLES(geom, a, b, c, d) hkl_geometry_set_values_v(geom, 4, \ (a) * HKL_DEGTORAD, \ (b) * HKL_DEGTORAD, \ (c) * HKL_DEGTORAD, \ (d) * HKL_DEGTORAD) HKL_TEST_SUITE_FUNC(new) { HklSample *sample; sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); hkl_sample_free(sample); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(add_reflection) { HklDetector *detector; const HklGeometryConfig *config; HklGeometry *geom; HklSample *sample; HklSampleReflection *ref; config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_EULERIAN4C_VERTICAL); geom = hkl_geometry_factory_new(config); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); detector->idx = 1; sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); ref = hkl_sample_add_reflection(sample, geom, detector, 1, 0, 0); hkl_sample_free(sample); hkl_detector_free(detector); hkl_geometry_free(geom); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(get_reflection) { HklDetector *detector; const HklGeometryConfig *config; HklGeometry *geom; HklSample *sample; HklSampleReflection *ref; HklSampleReflection *ref2; config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_EULERIAN4C_VERTICAL); geom = hkl_geometry_factory_new(config); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); detector->idx = 1; sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); ref = hkl_sample_add_reflection(sample, geom, detector, 1, 0, 0); ref2 = hkl_sample_get_ith_reflection(sample, 0); HKL_ASSERT_EQUAL(0, !ref); HKL_ASSERT_POINTER_EQUAL(ref, ref2); HKL_ASSERT_EQUAL(1, HKL_LIST_LEN(sample->reflections)); ref = hkl_sample_add_reflection(sample, geom, detector, -1, 0, 0); ref = hkl_sample_add_reflection(sample, geom, detector, 0, 1, 0); hkl_sample_free(sample); hkl_detector_free(detector); hkl_geometry_free(geom); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(del_reflection) { HklDetector *detector; const HklGeometryConfig *config; HklGeometry *geom; HklSample *sample; HklSampleReflection *ref; config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_EULERIAN4C_VERTICAL); geom = hkl_geometry_factory_new(config); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); detector->idx = 1; sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); ref = hkl_sample_add_reflection(sample, geom, detector, 1, 0, 0); hkl_sample_del_reflection(sample, 0); HKL_ASSERT_EQUAL(0, HKL_LIST_LEN(sample->reflections)); hkl_sample_free(sample); hkl_detector_free(detector); hkl_geometry_free(geom); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC( set_UB ) { HklSample *sample; static HklMatrix UB = {{{HKL_TAU/1.54, 0., 0.}, { 0., 0., HKL_TAU/1.54}, { 0.,-HKL_TAU/1.54, 0.}}}; static HklMatrix U = {{{1., 0., 0.}, {0., 0., 1.}, {0.,-1., 0.}}}; sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); hkl_sample_set_UB(sample, &UB); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_matrix_cmp(&U, &sample->U)); HKL_ASSERT_DOUBLES_EQUAL(-90. * HKL_DEGTORAD, sample->ux->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(0., sample->uy->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(0., sample->uz->value, HKL_EPSILON); hkl_sample_free(sample); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(compute_UB_busing_levy) { HklDetector *detector; const HklGeometryConfig *config; HklGeometry *geom; HklSample *sample; HklSampleReflection *ref; HklMatrix m_I = {{{1,0,0}, {0,1,0}, {0, 0, 1}}}; HklMatrix m_ref = {{{1., 0., 0.}, {0., 0., 1.}, {0.,-1., 0.}}}; config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_EULERIAN4C_VERTICAL); geom = hkl_geometry_factory_new(config); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); detector->idx = 1; sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); SET_ANGLES(geom, 30, 0, 0, 60); ref = hkl_sample_add_reflection(sample, geom, detector, 0, 0, 1); SET_ANGLES(geom, 30, 0, -90, 60); ref = hkl_sample_add_reflection(sample, geom, detector, -1, 0, 0); hkl_sample_compute_UB_busing_levy(sample, 0, 1); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_matrix_cmp(&m_I, &sample->U)); HKL_ASSERT_DOUBLES_EQUAL(0., sample->ux->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(0., sample->uy->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(0., sample->uz->value, HKL_EPSILON); SET_ANGLES(geom, 30, 0, 90, 60); ref = hkl_sample_add_reflection(sample, geom, detector, 1, 0, 0); SET_ANGLES(geom, 30, 0, 180, 60); ref = hkl_sample_add_reflection(sample, geom, detector, 0, 1, 0); hkl_sample_compute_UB_busing_levy(sample, 2, 3); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_matrix_cmp(&m_ref, &sample->U)); HKL_ASSERT_DOUBLES_EQUAL(-90. * HKL_DEGTORAD, sample->ux->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(0., sample->uy->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(0., sample->uz->value, HKL_EPSILON); hkl_sample_free(sample); hkl_detector_free(detector); hkl_geometry_free(geom); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(affine) { double a, b, c, alpha, beta, gamma; const HklGeometryConfig *config; HklDetector *detector; HklGeometry *geom; HklSample *sample; HklSampleReflection *ref; HklMatrix m_ref = {{{1., 0., 0.}, {0., 1., 0.}, {0., 0., 1.}}}; config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_EULERIAN4C_VERTICAL); geom = hkl_geometry_factory_new(config); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); detector->idx = 1; sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); sample->lattice->a->value = 1; sample->lattice->b->value = 5; sample->lattice->c->value = 4; sample->lattice->alpha->value = 92 * HKL_DEGTORAD; sample->lattice->beta->value = 81 * HKL_DEGTORAD; sample->lattice->gamma->value = 90 * HKL_DEGTORAD; SET_ANGLES(geom, 30, 0, 90, 60); ref = hkl_sample_add_reflection(sample, geom, detector, 1, 0, 0); SET_ANGLES(geom, 30, 90, 0, 60); ref = hkl_sample_add_reflection(sample, geom, detector, 0, 1, 0); SET_ANGLES(geom, 30, 0, 0, 60); ref = hkl_sample_add_reflection(sample, geom, detector, 0, 0, 1); SET_ANGLES(geom, 60, 60, 60, 60); ref = hkl_sample_add_reflection(sample, geom, detector, .625, .75, -.216506350946); SET_ANGLES(geom, 45, 45, 45, 60); ref = hkl_sample_add_reflection(sample, geom, detector, .665975615037, .683012701892, .299950211252); hkl_sample_affine(sample); a = sample->lattice->a->value; b = sample->lattice->b->value; c = sample->lattice->c->value; alpha = sample->lattice->alpha->value; beta = sample->lattice->beta->value; gamma = sample->lattice->gamma->value; HKL_ASSERT_EQUAL(HKL_TRUE, hkl_matrix_cmp(&m_ref, &sample->U)); HKL_ASSERT_DOUBLES_EQUAL(1.54, a, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(1.54, b, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(1.54, c, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(90 * HKL_DEGTORAD, alpha, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(90 * HKL_DEGTORAD, beta, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(90 * HKL_DEGTORAD, gamma, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(0., sample->ux->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(0., sample->uy->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(0., sample->uz->value, HKL_EPSILON); hkl_sample_free(sample); hkl_detector_free(detector); hkl_geometry_free(geom); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(get_reflections_xxx_angle) { HklDetector *detector; const HklGeometryConfig *config; HklGeometry *geom; HklSample *sample; HklSampleReflection *ref; config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_EULERIAN4C_VERTICAL); geom = hkl_geometry_factory_new(config); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); detector->idx = 1; sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); hkl_sample_set_lattice(sample, 1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD,90*HKL_DEGTORAD); SET_ANGLES(geom, 30, 0, 90, 60); ref = hkl_sample_add_reflection(sample, geom, detector, 1, 0, 0); SET_ANGLES(geom, 30, 90, 0, 60); ref = hkl_sample_add_reflection(sample, geom, detector, 0, 1, 0); SET_ANGLES(geom, 30, 0, 0, 60); ref = hkl_sample_add_reflection(sample, geom, detector, 0, 0, 1); SET_ANGLES(geom, 60, 60, 60, 60); ref = hkl_sample_add_reflection(sample, geom, detector, .625, .75, -.216506350946); SET_ANGLES(geom, 45, 45, 45, 60); ref = hkl_sample_add_reflection(sample, geom, detector, .665975615037, .683012701892, .299950211252); HKL_ASSERT_DOUBLES_EQUAL(90 * HKL_DEGTORAD, hkl_sample_get_reflection_theoretical_angle(sample, 0, 1), HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(90 * HKL_DEGTORAD, hkl_sample_get_reflection_mesured_angle(sample, 0, 1), HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(90 * HKL_DEGTORAD, hkl_sample_get_reflection_theoretical_angle(sample, 1, 2), HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(90 * HKL_DEGTORAD, hkl_sample_get_reflection_mesured_angle(sample, 1, 2), HKL_EPSILON); hkl_sample_free(sample); hkl_detector_free(detector); hkl_geometry_free(geom); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(reflection_set_geometry) { double a, b, c, alpha, beta, gamma; HklDetector *detector; const HklGeometryConfig *config; HklGeometry *geom; HklSample *sample; HklSampleReflection *ref; HklMatrix m_ref = {{{1., 0., 0.}, {0., 1., 0.}, {0., 0., 1.}}}; config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_EULERIAN4C_VERTICAL); geom = hkl_geometry_factory_new(config); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); detector->idx = 1; sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); hkl_sample_set_lattice(sample, 1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD,90*HKL_DEGTORAD); SET_ANGLES(geom, 30, 0, 90, 60); ref = hkl_sample_add_reflection(sample, geom, detector, 1, 0, 0); SET_ANGLES(geom, 30, 90, 0, 60); ref = hkl_sample_add_reflection(sample, geom, detector, 0, 1, 0); SET_ANGLES(geom, 30, 0, 0, 60); ref = hkl_sample_add_reflection(sample, geom, detector, 0, 0, 1); SET_ANGLES(geom, 60, 60, 60, 60); ref = hkl_sample_add_reflection(sample, geom, detector, .625, .75, -.216506350946); SET_ANGLES(geom, 46, 45, 45, 60); ref = hkl_sample_add_reflection(sample, geom, detector, .665975615037, .683012701892, .299950211252); /* correct the last reflection so the sample affinement must be ok. */ SET_ANGLES(geom, 45, 45, 45, 60); hkl_sample_reflection_set_geometry(ref, geom); hkl_sample_affine(sample); a = sample->lattice->a->value; b = sample->lattice->b->value; c = sample->lattice->c->value; alpha = sample->lattice->alpha->value; beta = sample->lattice->beta->value; gamma = sample->lattice->gamma->value; HKL_ASSERT_EQUAL(HKL_TRUE, hkl_matrix_cmp(&m_ref, &sample->U)); HKL_ASSERT_DOUBLES_EQUAL(1.54, a, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(1.54, b, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(1.54, c, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(90 * HKL_DEGTORAD, alpha, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(90 * HKL_DEGTORAD, beta, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(90 * HKL_DEGTORAD, gamma, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(0., sample->ux->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(0., sample->uy->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(0., sample->uz->value, HKL_EPSILON); hkl_sample_free(sample); hkl_detector_free(detector); hkl_geometry_free(geom); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(list_new) { HklSampleList *samples; samples = hkl_sample_list_new(); hkl_sample_list_free(samples); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(list_append_sample) { HklSampleList *samples; HklSample *sample1; HklSample *sample2; samples = hkl_sample_list_new(); sample1 = hkl_sample_new("test1", HKL_SAMPLE_TYPE_MONOCRYSTAL); sample2 = hkl_sample_new("test2", HKL_SAMPLE_TYPE_MONOCRYSTAL); HKL_ASSERT_POINTER_EQUAL(sample1, hkl_sample_list_append(samples, sample1)); HKL_ASSERT_EQUAL(0, hkl_sample_list_get_idx_from_name(samples, "test1")); HKL_ASSERT_POINTER_EQUAL(sample2, hkl_sample_list_append(samples, sample2)); HKL_ASSERT_EQUAL(0, hkl_sample_list_get_idx_from_name(samples, "test1")); HKL_ASSERT_EQUAL(1, hkl_sample_list_get_idx_from_name(samples, "test2")); /* can not have two samples with the same name. */ HKL_ASSERT_POINTER_EQUAL(NULL, hkl_sample_list_append(samples, sample1)); /* also relase sample1 and sample2 */ hkl_sample_list_free(samples); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(list_select_current) { HklSampleList *samples; HklSample *sample; samples = hkl_sample_list_new(); sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); hkl_sample_list_append(samples, sample); HKL_ASSERT_EQUAL(HKL_SUCCESS, hkl_sample_list_select_current(samples, "test")); HKL_ASSERT_EQUAL(HKL_FAIL, hkl_sample_list_select_current(samples, "tests")); /* also relase sample */ hkl_sample_list_free(samples); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(list_clear) { size_t i; HklSampleList *samples; HklSample *sample1; HklSample *sample2; samples = hkl_sample_list_new(); for(i=0; i<2; ++i){ /* two times to see if the clear has no side effect */ sample1 = hkl_sample_new("test1", HKL_SAMPLE_TYPE_MONOCRYSTAL); sample2 = hkl_sample_new("test2", HKL_SAMPLE_TYPE_MONOCRYSTAL); hkl_sample_list_append(samples, sample1); hkl_sample_list_append(samples, sample2); hkl_sample_list_clear(samples); HKL_ASSERT_EQUAL(0, hkl_sample_list_len(samples)); } /* also release sample1 and sample2 */ hkl_sample_list_free(samples); return HKL_TEST_PASS; } HKL_TEST_SUITE_BEGIN HKL_TEST( new ); HKL_TEST( add_reflection ); HKL_TEST( get_reflection ); HKL_TEST( del_reflection ); HKL_TEST( set_UB ); HKL_TEST( compute_UB_busing_levy ); HKL_TEST( affine ); HKL_TEST( get_reflections_xxx_angle ); HKL_TEST( reflection_set_geometry ); HKL_TEST( list_new ); HKL_TEST( list_append_sample ); HKL_TEST( list_select_current ); HKL_TEST( list_clear ); HKL_TEST_SUITE_END #undef SET_ANGLES hkl-4.0.3/test/hkl-test-error.c0000644000175000017500000000617511402652607013236 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include "hkl-test.h" #ifdef HKL_TEST_SUITE_NAME # undef HKL_TEST_SUITE_NAME #endif #define HKL_TEST_SUITE_NAME error HKL_TEST_SUITE_FUNC(new) { HklError *error; error = hkl_error_new("salut %s", "fred"); HKL_ASSERT_STRING_EQUAL(error->message, "salut fred"); hkl_error_free(error); error = hkl_error_new_literal("salut fred"); HKL_ASSERT_STRING_EQUAL(error->message, "salut fred"); hkl_error_free(error); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(copy) { HklError *error; HklError *copy; error = hkl_error_new ("salut %s", "fred"); copy = hkl_error_new_copy (error); HKL_ASSERT_STRING_EQUAL (copy->message, "salut fred"); hkl_error_free (error); hkl_error_free (copy); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(set) { HklError *error = NULL; hkl_error_set (&error, "salut %s", "bob"); HKL_ASSERT_STRING_EQUAL (error->message, "salut bob"); hkl_error_clear (&error); hkl_error_set_literal (&error, "salut fred"); HKL_ASSERT_STRING_EQUAL (error->message, "salut fred"); hkl_error_free (error); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(propagate) { HklError *dest = NULL; HklError *src; src = hkl_error_new ("salut %s", "fred"); hkl_error_propagate (NULL, src); /* free src so no memory leak here*/ src = hkl_error_new ("salut %s", "fred"); hkl_error_propagate (&dest, src); HKL_ASSERT_STRING_EQUAL (dest->message, "salut fred"); /* transfer the error into dest so no need to release src anymore */ hkl_error_free (dest); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(clear) { HklError *error; error = hkl_error_new ("salut %s", "fred"); hkl_error_clear (&error); HKL_ASSERT_POINTER_EQUAL (NULL, error); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(prefix) { HklError *error; HklError *dest = NULL; error = hkl_error_new ("%s", "fred"); hkl_error_prefix (&error, "%s", "salut "); HKL_ASSERT_STRING_EQUAL (error->message, "salut fred"); hkl_error_propagate_prefixed (&dest, error, "%s", "oh "); HKL_ASSERT_STRING_EQUAL (dest->message, "oh salut fred"); hkl_error_free (dest); return HKL_TEST_PASS; } HKL_TEST_SUITE_BEGIN HKL_TEST( new ); HKL_TEST( copy ); HKL_TEST( set ); HKL_TEST( propagate ); HKL_TEST( clear ); HKL_TEST( prefix ); HKL_TEST_SUITE_END hkl-4.0.3/test/hkl-test.c0000644000175000017500000000510111402652607012073 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include "hkl-test.h" void hkl_tests_grow(struct hkl_tests * tests, size_t extra) { if (tests->len + extra <= tests->len){ fprintf(stderr, "you want to use way too much memory"); exit(128); } if (!tests->alloc) tests->tests = NULL; ALLOC_GROW(tests->tests, tests->len + extra, tests->alloc); } void hkl_tests_init(struct hkl_tests *tests, size_t hint) { tests->alloc = tests->len = 0; if (hint) hkl_tests_grow(tests, hint); else tests->tests = NULL; } void hkl_tests_release(struct hkl_tests *tests) { if (tests->alloc) { free(tests->tests); hkl_tests_init(tests, 0); } } void hkl_tests_add_test(struct hkl_tests *tests, const char *name, hkl_test_method method) { struct hkl_test *test; hkl_tests_grow(tests, 1); test = &tests->tests[tests->len]; test->name = name; test->method = method; tests->len++; } int hkl_test_run(struct hkl_test * test) { return (*(test->method))(test); } int hkl_tests_run(struct hkl_tests * tests) { size_t i; int *results = alloca(tests->len * sizeof(*results)); int res = 0; for(i=0; ilen; i++) { size_t j; struct hkl_test *test; test = &tests->tests[i]; results[i] = hkl_test_run(test); /* pretty print of the test */ fprintf(stderr, "["); for(j=0; j<=i; ++j) if(results[j]) fprintf(stderr, "."); else fprintf(stderr, "X"); /* fill with spaces the rest */ for(j=i+1; jlen; ++j) fprintf(stderr, " "); fprintf(stderr, "]\r"); fflush(stderr); if (!results[i]) { fprintf(stderr, "\n%s:%d: FAIL %s\n", test->file, test->line, test->name); res = -1; break; } } fprintf(stderr, "\n"); return res; } hkl-4.0.3/test/Makefile.am0000644000175000017500000000152311402652607012234 00000000000000 TESTS = $(check_PROGRAMS) check_PROGRAMS = test bench AM_CPPFLAGS = -std=c89 -ansi -pedantic -D_BSD_SOURCE \ -I$(top_srcdir) \ -I$(top_srcdir)/hkl AM_LDFLAGS = $(top_builddir)/hkl/libhkl.la $(GSL_LIBS) test_SOURCES = \ hkl-test.h \ hkl-test-error.c \ hkl-test-pseudoaxis.c \ hkl-test-quaternion.c \ hkl-test-axis.c \ hkl-test-interval.c \ hkl-test-pseudoaxis-e4cv.c \ hkl-test-sample.c \ hkl-test.c \ hkl-test-lattice.c \ hkl-test-pseudoaxis-e6c.c \ hkl-test-source.c \ hkl-test-detector.c \ hkl-test-matrix.c \ hkl-test-pseudoaxis-k4cv.c \ hkl-test-vector.c \ hkl-test-geometry.c \ hkl-test-parameter.c \ hkl-test-pseudoaxis-k6c.c \ main.c bench_SOURCES = \ bench.c # Support for GNU Flymake, in Emacs. check-syntax: AM_CFLAGS += -fsyntax-only -pipe check-syntax: test -z "$(CHK_SOURCES)" || $(COMPILE) $(CHK_SOURCES) .PHONY: check-syntaxhkl-4.0.3/test/bench.c0000644000175000017500000001513511402652607011427 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include #define SET_AXES(geometry, mu, komega, kappa, kphi, gamma, delta) do{\ hkl_geometry_set_values_v(geometry, 6,\ mu * HKL_DEGTORAD,\ komega * HKL_DEGTORAD,\ kappa * HKL_DEGTORAD,\ kphi * HKL_DEGTORAD,\ gamma * HKL_DEGTORAD,\ delta * HKL_DEGTORAD);\ } while(0) static void hkl_test_bench_run(HklPseudoAxisEngine *engine, HklGeometry *geometry, size_t n) { size_t i, j; struct timeval debut, fin, dt; /* pseudo -> geometry */ for(j=0; jmodes); ++j){ hkl_pseudo_axis_engine_select_mode(engine, j); if (HKL_LIST_LEN(engine->mode->parameters)) engine->mode->parameters[0].value = 1.; gettimeofday(&debut, NULL); for(i=0; imode->name, n, i, (dt.tv_sec*1000.+dt.tv_usec/1000.)/n); } } static void hkl_test_bench_hkl_real(HklPseudoAxisEngineList *engines, HklGeometry *geometry, char const *name, int n, double h, double k, double l) { HklPseudoAxisEngine *engine; engine = hkl_pseudo_axis_engine_list_get_by_name(engines, name); ((HklParameter *)engine->pseudoAxes[0])->value = h; ((HklParameter *)engine->pseudoAxes[1])->value = k; ((HklParameter *)engine->pseudoAxes[2])->value = l; hkl_test_bench_run(engine, geometry, n); } static void hkl_test_bench_eulerians_real(HklPseudoAxisEngineList *engines, HklGeometry *geometry, char const *name, int n, double omega, double chi, double phi) { HklPseudoAxisEngine *engine; engine = hkl_pseudo_axis_engine_list_get_by_name(engines, name); ((HklParameter *)engine->pseudoAxes[0])->value = omega; ((HklParameter *)engine->pseudoAxes[1])->value = chi; ((HklParameter *)engine->pseudoAxes[2])->value = phi; hkl_test_bench_run(engine, geometry, n); } static void hkl_test_bench_psi_real(HklPseudoAxisEngineList *engines, HklGeometry *geometry, char const *name, int n, double psi) { HklPseudoAxisEngine *engine; engine = hkl_pseudo_axis_engine_list_get_by_name(engines, name); ((HklParameter *)engine->pseudoAxes[0])->value = psi; hkl_test_bench_run(engine, geometry, n); } static void hkl_test_bench_q2_real(HklPseudoAxisEngineList *engines, HklGeometry *geometry, char const *name, int n, double q, double alpha) { HklPseudoAxisEngine *engine; engine = hkl_pseudo_axis_engine_list_get_by_name(engines, name); ((HklParameter *)engine->pseudoAxes[0])->value = q; ((HklParameter *)engine->pseudoAxes[1])->value = alpha; hkl_test_bench_run(engine, geometry, n); } static void hkl_test_bench_k6c(void) { HklPseudoAxisEngineList *engines; HklPseudoAxisEngine *engine; const HklGeometryConfig *config; HklGeometry *geom; HklDetector *detector; HklSample *sample; size_t i, j; int res, n; config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_KAPPA6C); geom = hkl_geometry_factory_new(config, 50 * HKL_DEGTORAD); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); detector->idx = 1; sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); engines = hkl_pseudo_axis_engine_list_factory(config); hkl_pseudo_axis_engine_list_init(engines, geom, detector, sample); hkl_test_bench_hkl_real(engines, geom, "hkl", 1000, 1, 0, 0 ); hkl_test_bench_eulerians_real(engines, geom, "eulerians", 1000, 0, 90*HKL_DEGTORAD, 0 ); hkl_test_bench_psi_real(engines, geom, "psi", 1000, 10*HKL_DEGTORAD); hkl_test_bench_q2_real(engines, geom, "q2", 1000, 1, 10*HKL_DEGTORAD); hkl_pseudo_axis_engine_list_free(engines); hkl_sample_free(sample); hkl_detector_free(detector); hkl_geometry_free(geom); } static void hkl_test_bench_eulerians(void) { HklPseudoAxisEngineList *engines; HklPseudoAxisEngine *engine; const HklGeometryConfig *config; HklGeometry *geom; HklDetector *detector; HklSample *sample; size_t i, f_idx; double *Omega, *Chi, *Phi; config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_KAPPA6C); geom = hkl_geometry_factory_new(config, 50 * HKL_DEGTORAD); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); detector->idx = 1; sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); engines = hkl_pseudo_axis_engine_list_factory(config); hkl_pseudo_axis_engine_list_init(engines, geom, detector, sample); engine = hkl_pseudo_axis_engine_list_get_by_name(engines, "eulerians"); Omega = &(((HklParameter *)engine->pseudoAxes[0])->value); Chi = &(((HklParameter *)engine->pseudoAxes[1])->value); Phi = &(((HklParameter *)engine->pseudoAxes[2])->value); for(f_idx=0; f_idxmodes); ++f_idx) { double omega, chi, phi; int res; hkl_pseudo_axis_engine_select_mode(engine, f_idx); if (f_idx>0) engine->mode->parameters[0].value = 1.; /* studdy this degenerated case */ *Omega = omega = 0; *Chi = chi = 90 * HKL_DEGTORAD; *Phi = phi = 0; /* pseudo -> geometry */ res = hkl_pseudo_axis_engine_set(engine, NULL); /* hkl_pseudo_axis_engine_fprintf(stdout, engine); */ /* geometry -> pseudo */ if (res == HKL_SUCCESS) { for(i=0; igeometries); ++i) { *Omega = *Chi = *Phi = 0; hkl_geometry_init_geometry(engine->geometry, engines->geometries->items[i]->geometry); hkl_pseudo_axis_engine_get(engine, NULL); /* hkl_pseudo_axis_engine_fprintf(stdout, engine); */ } } } hkl_pseudo_axis_engine_list_free(engines); hkl_sample_free(sample); hkl_detector_free(detector); hkl_geometry_free(geom); } int main(int argc, char **argv) { size_t i; int res = 0; hkl_test_bench_k6c(); return res; } hkl-4.0.3/test/hkl-test-pseudoaxis-k6c.c0000644000175000017500000002670111402652607014747 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include "hkl-test.h" #ifdef HKL_TEST_SUITE_NAME # undef HKL_TEST_SUITE_NAME #endif #define HKL_TEST_SUITE_NAME pseudoaxis_K6C #define SET_AXES(geometry, mu, komega, kappa, kphi, gamma, delta) do{ \ hkl_geometry_set_values_v(geometry, 6, \ mu * HKL_DEGTORAD, \ komega * HKL_DEGTORAD, \ kappa * HKL_DEGTORAD, \ kphi * HKL_DEGTORAD, \ gamma * HKL_DEGTORAD, \ delta * HKL_DEGTORAD); \ } while(0) HKL_TEST_SUITE_FUNC(new) { HklPseudoAxisEngine *engine = hkl_pseudo_axis_engine_k6c_hkl_new(); hkl_pseudo_axis_engine_free(engine); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(degenerated) { HklPseudoAxisEngineList *engines; HklPseudoAxisEngine *engine; const HklGeometryConfig *config; HklGeometry *geom; HklDetector *detector; HklSample *sample; size_t i, f_idx; double *H, *K, *L; config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_KAPPA6C); geom = hkl_geometry_factory_new(config, 50 * HKL_DEGTORAD); sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); detector->idx = 1; engines = hkl_pseudo_axis_engine_list_factory(config); hkl_pseudo_axis_engine_list_init(engines, geom, detector, sample); engine = hkl_pseudo_axis_engine_list_get_by_name(engines, "hkl"); H = &(((HklParameter *)engine->pseudoAxes[0])->value); K = &(((HklParameter *)engine->pseudoAxes[1])->value); L = &(((HklParameter *)engine->pseudoAxes[2])->value); for(f_idx=0; f_idxmodes); ++f_idx) { double h, k, l; int res; hkl_pseudo_axis_engine_select_mode(engine, f_idx); if (HKL_LIST_LEN(engine->mode->parameters)) engine->mode->parameters[0].value = 1.; /* studdy this degenerated case */ *H = h = 0; *K = k = 1; *L = l = 0; /* pseudo -> geometry */ res = hkl_pseudo_axis_engine_set(engine, NULL); /* hkl_pseudo_axis_engine_fprintf(stdout, engine); */ /* geometry -> pseudo */ if (res == HKL_SUCCESS) { /* hkl_pseudo_axis_engine_fprintf(stdout, engine); */ for(i=0; igeometries); ++i) { *H = *K = *L = 0; hkl_geometry_init_geometry(geom, engines->geometries->items[i]->geometry); hkl_pseudo_axis_engine_get(engine, NULL); HKL_ASSERT_DOUBLES_EQUAL(h, *H, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(k, *K, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(l, *L, HKL_EPSILON); } } } hkl_pseudo_axis_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geom); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(eulerians) { HklPseudoAxisEngineList *engines; HklPseudoAxisEngine *engine; const HklGeometryConfig *config; HklGeometry *geom; HklDetector *detector; HklSample *sample; size_t i, f_idx; double *Omega, *Chi, *Phi; config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_KAPPA6C); geom = hkl_geometry_factory_new(config, 50 * HKL_DEGTORAD); sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); detector->idx = 1; engines = hkl_pseudo_axis_engine_list_factory(config); hkl_pseudo_axis_engine_list_init(engines, geom, detector, sample); engine = hkl_pseudo_axis_engine_list_get_by_name(engines, "eulerians"); Omega = &(((HklParameter *)engine->pseudoAxes[0])->value); Chi = &(((HklParameter *)engine->pseudoAxes[1])->value); Phi = &(((HklParameter *)engine->pseudoAxes[2])->value); for(f_idx=0; f_idxmodes); ++f_idx) { double omega, chi, phi; int res; hkl_pseudo_axis_engine_select_mode(engine, f_idx); if (f_idx>0) engine->mode->parameters[0].value = 1.; /* studdy this degenerated case */ *Omega = omega = 0; *Chi = chi = 90 * HKL_DEGTORAD; *Phi = phi = 0; /* pseudo -> geometry */ res = hkl_pseudo_axis_engine_set(engine, NULL); /* hkl_pseudo_axis_engine_fprintf(stdout, engine); */ /* geometry -> pseudo */ if (res == HKL_SUCCESS) { HKL_ASSERT_EQUAL(2, hkl_geometry_list_len(engines->geometries)); /* first solution = 0, 90, 0 */ hkl_geometry_init_geometry(geom, engines->geometries->items[1]->geometry); hkl_pseudo_axis_engine_get(engine, NULL); HKL_ASSERT_DOUBLES_EQUAL(0., *Omega, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(90. * HKL_DEGTORAD, *Chi, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(0. * HKL_DEGTORAD, *Phi, HKL_EPSILON); hkl_geometry_init_geometry(geom, engines->geometries->items[0]->geometry); hkl_pseudo_axis_engine_get(engine, NULL); HKL_ASSERT_DOUBLES_EQUAL(-180.* HKL_DEGTORAD, *Omega, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(-90. * HKL_DEGTORAD, *Chi, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(180. * HKL_DEGTORAD, *Phi, HKL_EPSILON); } } hkl_pseudo_axis_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geom); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(manip) { HklPseudoAxisEngineList *engines; HklPseudoAxisEngine *hkl; HklPseudoAxisEngine *psi; const HklGeometryConfig *config; HklGeometry *geom; HklDetector *detector; HklSample *sample; size_t i, f_idx; double *H, *K, *L; double H2, K2, L2; config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_KAPPA6C); geom = hkl_geometry_factory_new(config, 50 * HKL_DEGTORAD); hkl_source_init(&geom->source, 2.0837, 1., 0., 0.); hkl_source_fprintf(stdout, &geom->source); sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); /* hkl_matrix_init_from_euler(&sample->U, -90 * HKL_DEGTORAD, 0., 0.); */ hkl_sample_set_lattice(sample, 2.88, 2.88, 2.88, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD); hkl_matrix_init_from_euler(&sample->U, -90 * HKL_DEGTORAD, 0., 0.); hkl_sample_fprintf(stdout, sample); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); detector->idx = 1; engines = hkl_pseudo_axis_engine_list_factory(config); hkl_pseudo_axis_engine_list_init(engines, geom, detector, sample); hkl = hkl_pseudo_axis_engine_list_get_by_name(engines, "hkl"); psi = hkl_pseudo_axis_engine_list_get_by_name(engines, "psi"); H = &(((HklParameter *)hkl->pseudoAxes[0])->value); K = &(((HklParameter *)hkl->pseudoAxes[1])->value); L = &(((HklParameter *)hkl->pseudoAxes[2])->value); hkl_pseudo_axis_engine_select_mode(hkl, 9); *H = 0; *K = 0; *L = 1. - 0.047; H2 = hkl->mode->parameters[0].value = 0; K2 = hkl->mode->parameters[1].value = 1.; L2 = hkl->mode->parameters[2].value = 1. - 2*0.047; if( HKL_SUCCESS == hkl_pseudo_axis_engine_set(hkl, NULL)){ for(i=0; igeometries); ++i) { *H = *K = *L = 0; hkl_geometry_init_geometry(geom, engines->geometries->items[i]->geometry); hkl_pseudo_axis_engine_initialize(psi, NULL); hkl_pseudo_axis_engine_list_get(engines); hkl_pseudo_axis_engine_list_fprintf(stdout, engines); } } hkl_geometry_init_geometry(geom, engines->geometries->items[0]->geometry); hkl_pseudo_axis_engine_select_mode(hkl, 7); *H = H2; *K = K2; *L = L2; fprintf(stdout, "coucou\n"); if (HKL_SUCCESS == hkl_pseudo_axis_engine_set(hkl, NULL)){ fprintf(stdout, "coucou\n"); for(i=0; igeometries); ++i){ *H = *K = *L = 0; hkl_geometry_init_geometry(geom, engines->geometries->items[i]->geometry); hkl_pseudo_axis_engine_list_get(engines); hkl_pseudo_axis_engine_list_fprintf(stdout, engines); } } hkl_pseudo_axis_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geom); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(q2) { HklPseudoAxisEngineList *engines; HklPseudoAxisEngine *engine; const HklGeometryConfig *config; HklGeometry *geom; HklDetector *detector; HklSample *sample; size_t i, f_idx; double *Q, *Alpha; config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_KAPPA6C); geom = hkl_geometry_factory_new(config, 50 * HKL_DEGTORAD); sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); detector->idx = 1; engines = hkl_pseudo_axis_engine_list_factory(config); hkl_pseudo_axis_engine_list_init(engines, geom, detector, sample); engine = hkl_pseudo_axis_engine_list_get_by_name(engines, "q2"); Q = &(((HklParameter *)engine->pseudoAxes[0])->value); Alpha = &(((HklParameter *)engine->pseudoAxes[1])->value); /* the init part */ SET_AXES(geom, 0., 30., 0., 0., 0., 60.); hkl_pseudo_axis_engine_initialize(engine, NULL); for(f_idx=0; f_idxmodes); ++f_idx){ double q, alpha; int res; hkl_pseudo_axis_engine_select_mode(engine, f_idx); for(q=0.1; q<1.; q += 0.1){ for(alpha = -M_PI; alpha geometry */ res = hkl_pseudo_axis_engine_set(engine, NULL); /* geometry -> pseudo */ if(res == HKL_SUCCESS){ for(i=0; igeometries); ++i){ *Q = 0; *Alpha = 0.; hkl_geometry_init_geometry(geom, engines->geometries->items[i]->geometry); hkl_pseudo_axis_engine_get(engine, NULL); /* why this precision problem ? */ HKL_ASSERT_DOUBLES_EQUAL(q, *Q, HKL_EPSILON * 10); HKL_ASSERT_DOUBLES_EQUAL(alpha, *Alpha, HKL_EPSILON); } } } } } hkl_pseudo_axis_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geom); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(m15110) { HklPseudoAxisEngineList *engines; HklPseudoAxisEngine *engine; const HklGeometryConfig *config; HklGeometry *geom; HklDetector *detector; HklSample *sample; int res; config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_KAPPA6C); geom = hkl_geometry_factory_new(config, 50 * HKL_DEGTORAD); sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); detector->idx = 1; engines = hkl_pseudo_axis_engine_list_factory(config); hkl_pseudo_axis_engine_list_init(engines, geom, detector, sample); engine = hkl_pseudo_axis_engine_list_get_by_name(engines, "psi"); /* the init part must succed */ SET_AXES(geom, 0., 62.95, 134.75, 0., 0., 60.); res = hkl_pseudo_axis_engine_initialize(engine, NULL); HKL_ASSERT_EQUAL(HKL_SUCCESS, res); hkl_pseudo_axis_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geom); return HKL_TEST_PASS; } HKL_TEST_SUITE_BEGIN HKL_TEST( new ); HKL_TEST( degenerated ); HKL_TEST( eulerians ); /* HKL_TEST( manip ); */ HKL_TEST( q2 ); HKL_TEST( m15110 ); HKL_TEST_SUITE_END hkl-4.0.3/test/hkl-test-pseudoaxis-e6c.c0000644000175000017500000001640111402652607014735 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include "hkl-test.h" #ifdef HKL_TEST_SUITE_NAME # undef HKL_TEST_SUITE_NAME #endif #define HKL_TEST_SUITE_NAME pseudoaxis_E6C #define SET_AXES(geometry, mu, omega, chi, phi, gamma, delta) do{ \ hkl_geometry_set_values_v(geometry, 6, \ mu * HKL_DEGTORAD, \ omega * HKL_DEGTORAD, \ chi * HKL_DEGTORAD, \ phi * HKL_DEGTORAD, \ gamma * HKL_DEGTORAD, \ delta * HKL_DEGTORAD); \ } while(0) #define CHECK_PSEUDOAXES(engine, a, b, c) do{ \ HklParameter *H = (HklParameter *)(engine->pseudoAxes[0]); \ HklParameter *K = (HklParameter *)(engine->pseudoAxes[1]); \ HklParameter *L = (HklParameter *)(engine->pseudoAxes[2]); \ \ HKL_ASSERT_DOUBLES_EQUAL(a, H->value, HKL_EPSILON); \ HKL_ASSERT_DOUBLES_EQUAL(b, K->value, HKL_EPSILON); \ HKL_ASSERT_DOUBLES_EQUAL(c, L->value, HKL_EPSILON); \ } while(0) HKL_TEST_SUITE_FUNC(new) { HklPseudoAxisEngine *engine = hkl_pseudo_axis_engine_e6c_hkl_new(); hkl_pseudo_axis_engine_free(engine); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(getter) { HklPseudoAxisEngineList *engines; HklPseudoAxisEngine *engine; const HklGeometryConfig *config; HklGeometry *geom; HklDetector *detector; HklSample *sample; config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_EULERIAN6C); geom = hkl_geometry_factory_new(config); sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); detector->idx = 1; engines = hkl_pseudo_axis_engine_list_factory(config); hkl_pseudo_axis_engine_list_init(engines, geom, detector, sample); engine = hkl_pseudo_axis_engine_list_get_by_name(engines, "hkl"); /* geometry -> pseudo */ SET_AXES(geom, 0., 30., 0., 0., 0., 60.); hkl_pseudo_axis_engine_get(engine, NULL); CHECK_PSEUDOAXES(engine, 0., 0., 1.); SET_AXES(geom, 0., 30., 0., 90., 0., 60.); hkl_pseudo_axis_engine_get(engine, NULL); CHECK_PSEUDOAXES(engine, 1., 0., 0.); SET_AXES(geom, 0., 30, 0., -90., 0., 60.); hkl_pseudo_axis_engine_get(engine, NULL); CHECK_PSEUDOAXES(engine, -1., 0., 0.); SET_AXES(geom, 0., 30., 0., 180., 0., 60.); hkl_pseudo_axis_engine_get(engine, NULL); CHECK_PSEUDOAXES(engine, 0., 0., -1.); SET_AXES(geom, 0., 45., 0., 135., 0., 90.); hkl_pseudo_axis_engine_get(engine, NULL); CHECK_PSEUDOAXES(engine, 1., 0., -1.); hkl_pseudo_axis_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geom); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(degenerated) { HklPseudoAxisEngineList *engines; HklPseudoAxisEngine *engine; const HklGeometryConfig *config; HklGeometry *geom; HklDetector *detector; HklSample *sample; size_t i, f_idx; double *H, *K, *L; config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_EULERIAN6C); geom = hkl_geometry_factory_new(config); sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); detector->idx = 1; engines = hkl_pseudo_axis_engine_list_factory(config); hkl_pseudo_axis_engine_list_init(engines, geom, detector, sample); engine = hkl_pseudo_axis_engine_list_get_by_name(engines, "hkl"); H = &(((HklParameter *)engine->pseudoAxes[0])->value); K = &(((HklParameter *)engine->pseudoAxes[1])->value); L = &(((HklParameter *)engine->pseudoAxes[2])->value); for(f_idx=0; f_idxmodes); ++f_idx) { double h, k, l; int res; hkl_pseudo_axis_engine_select_mode(engine, f_idx); if (HKL_LIST_LEN(engine->mode->parameters)) engine->mode->parameters[0].value = 0.; /* studdy this degenerated case */ *H = h = 0; *K = k = 0; *L = l = 1; /* pseudo -> geometry */ res = hkl_pseudo_axis_engine_set(engine, NULL); /* hkl_pseudo_axis_engine_fprintf(stdout, engine); */ /* geometry -> pseudo */ if (res == HKL_SUCCESS) { /* hkl_pseudo_axis_engine_fprintf(stdout, engine); */ for(i=0; igeometries); ++i) { *H = *K = *L = 0; hkl_geometry_init_geometry(geom, engines->geometries->items[i]->geometry); hkl_pseudo_axis_engine_get(engine, NULL); HKL_ASSERT_DOUBLES_EQUAL(h, *H, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(k, *K, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(l, *L, HKL_EPSILON); } } } hkl_pseudo_axis_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geom); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(q2) { HklPseudoAxisEngineList *engines; HklPseudoAxisEngine *engine; const HklGeometryConfig *config; HklGeometry *geom; HklDetector *detector; HklSample *sample; size_t i, f_idx; double *Q, *Alpha; config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_EULERIAN6C); geom = hkl_geometry_factory_new(config); sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); detector->idx = 1; engines = hkl_pseudo_axis_engine_list_factory(config); hkl_pseudo_axis_engine_list_init(engines, geom, detector, sample); engine = hkl_pseudo_axis_engine_list_get_by_name(engines, "q2"); Q = &(((HklParameter *)engine->pseudoAxes[0])->value); Alpha = &(((HklParameter *)engine->pseudoAxes[1])->value); /* the init part */ SET_AXES(geom, 0., 30., 0., 0., 0., 60.); hkl_pseudo_axis_engine_initialize(engine, NULL); for(f_idx=0; f_idxmodes); ++f_idx){ double q, alpha; int res; hkl_pseudo_axis_engine_select_mode(engine, f_idx); for(q=0.1; q<1.; q += 0.1){ for(alpha = -M_PI; alpha geometry */ res = hkl_pseudo_axis_engine_set(engine, NULL); /* geometry -> pseudo */ if(res == HKL_SUCCESS){ for(i=0; igeometries); ++i){ *Q = 0.; *Alpha = 0.; hkl_geometry_init_geometry(geom, engines->geometries->items[i]->geometry); hkl_pseudo_axis_engine_get(engine, NULL); HKL_ASSERT_DOUBLES_EQUAL(q, *Q, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(alpha, *Alpha, HKL_EPSILON); } } } } } hkl_pseudo_axis_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geom); return HKL_TEST_PASS; } HKL_TEST_SUITE_BEGIN HKL_TEST( new ); HKL_TEST( getter ); HKL_TEST( degenerated ); HKL_TEST( q2 ); HKL_TEST_SUITE_END hkl-4.0.3/test/hkl-test-vector.c0000644000175000017500000001253511402652607013404 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include "hkl-test.h" #ifdef HKL_TEST_SUITE_NAME # undef HKL_TEST_SUITE_NAME #endif #define HKL_TEST_SUITE_NAME vector HKL_TEST_SUITE_FUNC(init) { HklVector v; hkl_vector_init(&v, 1, 2, 3); HKL_ASSERT_DOUBLES_EQUAL(1., v.data[0], HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(2., v.data[1], HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(3., v.data[2], HKL_EPSILON); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(cmp) { HklVector v1 = {{0.0, 1.0, 2.0}}; HklVector v2 = {{1.0, 2.0, 3.0}}; HKL_ASSERT_EQUAL(0, hkl_vector_cmp(&v1, &v1)); HKL_ASSERT_EQUAL(1, hkl_vector_cmp(&v1, &v2)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(is_opposite) { HklVector v_ref = {{0, 1, 2}}; HklVector v1 = {{1, 2, 3}}; HklVector v2 = {{0, -1, -2}}; HKL_ASSERT_EQUAL(HKL_FALSE, hkl_vector_is_opposite(&v_ref, &v1)); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_vector_is_opposite(&v_ref, &v2)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(norm2) { HklVector v1 = {{0.0, 1.0, 2.0}}; HklVector v2 = {{-1.0, 1.0, 2.0}}; HKL_ASSERT_DOUBLES_EQUAL(sqrt(5.0), hkl_vector_norm2(&v1), HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(sqrt(6.0), hkl_vector_norm2(&v2), HKL_EPSILON); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(normalize) { HklVector v_ref = {{1. /sqrt(2.), 1. / sqrt(2.), 0.}}; HklVector v = {{1., 1., 0.}}; hkl_vector_normalize(&v); HKL_ASSERT_EQUAL(0, hkl_vector_cmp(&v_ref, &v)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(scalar_product) { HklVector v = {{0.0, 1.0, 2.0}}; double scalar = hkl_vector_scalar_product(&v, &v); HKL_ASSERT_DOUBLES_EQUAL( 5.0, scalar, HKL_EPSILON ); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(vectorial_product) { HklVector v = {{0.0, 1.0, 2.0}}; HklVector v1 = {{1.0, 2.0, 3.0}}; HklVector v_ref = {{-1.0, 2.0, -1.0}}; hkl_vector_vectorial_product(&v, &v1); HKL_ASSERT_EQUAL(0, hkl_vector_cmp(&v_ref, &v)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(angle) { double angle; HklVector v = {{1., 0., 0.}}; HklVector v1 = {{1., 1., 0.}}; HklVector v2 = {{1., 1., .5}}; HklVector v3 = {{1., .5, -1}}; HklVector v4 = {{0., 1., 0.}}; HklVector v5 = {{0., -1., 0.}}; angle = hkl_vector_angle(&v, &v); HKL_ASSERT_DOUBLES_EQUAL(0., angle, HKL_EPSILON); angle = hkl_vector_angle(&v, &v1); HKL_ASSERT_DOUBLES_EQUAL(acos(1./sqrt(2.)), angle, HKL_EPSILON); angle = hkl_vector_angle(&v2, &v3); HKL_ASSERT_DOUBLES_EQUAL(acos(1./2.25), angle, HKL_EPSILON); angle = hkl_vector_angle(&v, &v4); HKL_ASSERT_DOUBLES_EQUAL(90 * HKL_DEGTORAD, angle, HKL_EPSILON); angle = hkl_vector_angle(&v, &v5); HKL_ASSERT_DOUBLES_EQUAL(90 * HKL_DEGTORAD, angle, HKL_EPSILON); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(oriented_angle) { double angle; HklVector v = {{1., 0., 0.}}; HklVector v1 = {{1., 1., 0.}}; HklVector v2 = {{0., 1., 0.}}; HklVector v3 = {{0., -1., 0.}}; HklVector ref = {{0, 0, 1}}; angle = hkl_vector_oriented_angle(&v, &v, &ref); HKL_ASSERT_DOUBLES_EQUAL(0., angle, HKL_EPSILON); angle = hkl_vector_oriented_angle(&v, &v1, &ref); HKL_ASSERT_DOUBLES_EQUAL(acos(1./sqrt(2.)), angle, HKL_EPSILON); angle = hkl_vector_oriented_angle(&v, &v2, &ref); HKL_ASSERT_DOUBLES_EQUAL(90 * HKL_DEGTORAD, angle, HKL_EPSILON); angle = hkl_vector_oriented_angle(&v, &v3, &ref); HKL_ASSERT_DOUBLES_EQUAL(-90 * HKL_DEGTORAD, angle, HKL_EPSILON); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(rotated_around_vector) { HklVector x = {{1, 0, 0}}; HklVector z = {{0, 0, 1}}; HklVector y_ref = {{0, 1, 0}}; hkl_vector_rotated_around_vector(&x, &z, 90*HKL_DEGTORAD); HKL_ASSERT_EQUAL(0, hkl_vector_cmp(&y_ref, &x)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(times_matrix) { HklMatrix m = {{{ 1.0, 3.0,-2.0}, {10.0, 5.0, 5.0}, {-3.0, 2.0, 0.0}} }; HklVector v = {{1.0, 2.0, 3.0}}; HklVector v_ref = {{12., 19., 8.}}; hkl_vector_times_matrix(&v, &m); HKL_ASSERT_EQUAL(0, hkl_vector_cmp(&v_ref, &v)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(project_on_plan) { HklVector v; HklVector v_ref = {{1, 0, 0}}; HklVector v1 = {{1, 0, 2}}; HklVector plan = {{0, 0, 1}}; v = v1; hkl_vector_project_on_plan(&v, &plan); HKL_ASSERT_EQUAL(0, hkl_vector_cmp(&v_ref, &v)); return HKL_TEST_PASS; } HKL_TEST_SUITE_BEGIN HKL_TEST( init ); HKL_TEST( cmp ); HKL_TEST( is_opposite ); HKL_TEST( norm2 ); HKL_TEST( normalize ); HKL_TEST( scalar_product ); HKL_TEST( vectorial_product ); HKL_TEST( angle ); HKL_TEST( oriented_angle ); HKL_TEST( rotated_around_vector ); HKL_TEST( times_matrix ); HKL_TEST( project_on_plan ); HKL_TEST_SUITE_END hkl-4.0.3/test/hkl-test-parameter.c0000644000175000017500000001077711402652607014070 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include "hkl-test.h" #ifdef HKL_TEST_SUITE_NAME # undef HKL_TEST_SUITE_NAME #endif #define HKL_TEST_SUITE_NAME parameter HKL_TEST_SUITE_FUNC(new) { HklParameter *p; HKL_ASSERT_POINTER_EQUAL(NULL, hkl_parameter_new("", 2, 1, 3, HKL_FALSE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg)); HKL_ASSERT_POINTER_EQUAL(NULL, hkl_parameter_new("", 2, 1, 3, HKL_FALSE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg)); HKL_ASSERT_POINTER_EQUAL(NULL, hkl_parameter_new("", 2, 1, 3, HKL_FALSE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg)); HKL_ASSERT_POINTER_EQUAL(NULL, hkl_parameter_new("toto", 2, 1, 3, HKL_FALSE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg)); HKL_ASSERT_POINTER_EQUAL(NULL, hkl_parameter_new("toto", 1, 2, 3, HKL_FALSE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_length_nm)); p = hkl_parameter_new("toto", 1, 2, 3, HKL_FALSE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg); HKL_ASSERT_EQUAL(0, !p); HKL_ASSERT_DOUBLES_EQUAL(1., p->range.min, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(2., p->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(3., p->range.max, HKL_EPSILON); HKL_ASSERT_EQUAL(HKL_FALSE, p->fit); HKL_ASSERT_EQUAL(HKL_TRUE, p->changed); HKL_ASSERT_POINTER_EQUAL(&hkl_unit_angle_rad, p->unit); HKL_ASSERT_POINTER_EQUAL(&hkl_unit_angle_deg, p->punit); hkl_parameter_free(p); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(new_copy) { HklParameter *copy, p; hkl_parameter_init(&p, "toto", 1, 2, 3, HKL_FALSE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg); copy = hkl_parameter_new_copy(&p); HKL_ASSERT_POINTER_EQUAL(copy->name, p.name); HKL_ASSERT_DOUBLES_EQUAL(copy->range.min, p.range.min, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(copy->value, p.value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(copy->range.max, p.range.max, HKL_EPSILON); HKL_ASSERT_EQUAL(copy->fit, p.fit); HKL_ASSERT_EQUAL(copy->changed, p.changed); HKL_ASSERT_POINTER_EQUAL(&hkl_unit_angle_rad, copy->unit); HKL_ASSERT_POINTER_EQUAL(&hkl_unit_angle_deg, copy->punit); hkl_parameter_free(copy); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(init) { HklParameter p; HKL_ASSERT_EQUAL(HKL_FAIL, hkl_parameter_init(&p, "", 2, 1, 3, HKL_FALSE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg)); HKL_ASSERT_EQUAL(HKL_FAIL, hkl_parameter_init(&p, "", 2, 1, 3, HKL_FALSE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg)); HKL_ASSERT_EQUAL(HKL_FAIL, hkl_parameter_init(&p, "", 2, 1, 3, HKL_FALSE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg)); HKL_ASSERT_EQUAL(HKL_FAIL, hkl_parameter_init(&p, "toto", 2, 1, 3, HKL_FALSE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg)); HKL_ASSERT_EQUAL(HKL_FAIL, hkl_parameter_init(&p, "toto", 1, 2, 3, HKL_FALSE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_length_nm)); HKL_ASSERT_EQUAL(HKL_SUCCESS, hkl_parameter_init(&p, "toto", 1, 2, 3, HKL_FALSE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(is_valid) { HklParameter p; hkl_parameter_init(&p, "toto", 1, 2, 3, HKL_FALSE, HKL_TRUE, &hkl_unit_angle_rad, &hkl_unit_angle_deg); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_parameter_is_valid(&p)); hkl_parameter_set_value(&p, 10); HKL_ASSERT_EQUAL(HKL_FALSE, hkl_parameter_is_valid(&p)); return HKL_TEST_PASS; } HKL_TEST_SUITE_BEGIN HKL_TEST( new ); HKL_TEST( new_copy ); HKL_TEST( init ); HKL_TEST( is_valid ); HKL_TEST_SUITE_END hkl-4.0.3/test/hkl-test-source.c0000644000175000017500000000506611402652607013403 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include "hkl-test.h" #ifdef HKL_TEST_SUITE_NAME # undef HKL_TEST_SUITE_NAME #endif #define HKL_TEST_SUITE_NAME source HKL_TEST_SUITE_FUNC(new_copy) { HklSource s, c; hkl_source_init(&s, 1.54, 1, 0, 0); c = s; HKL_ASSERT_DOUBLES_EQUAL(c.wave_length, s.wave_length, HKL_EPSILON); HKL_ASSERT_EQUAL(HKL_FALSE, hkl_vector_cmp(&c.direction, &s.direction)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(init) { HklSource s; hkl_source_init(&s, 1, 1, 0, 0); HKL_ASSERT_DOUBLES_EQUAL(1., s.wave_length, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(1., s.direction.data[0], HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(0., s.direction.data[1], HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(0., s.direction.data[2], HKL_EPSILON); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(cmp) { HklSource ref, s1, s2; hkl_source_init(&ref, 1.54, 1, 0, 0); hkl_source_init(&s1, 1.54, 1, 0, 0); hkl_source_init(&s2, 1, 1, 0, 0); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_source_cmp(&ref, &s1)); HKL_ASSERT_EQUAL(HKL_FALSE, hkl_source_cmp(&ref, &s2)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(compute_ki) { HklSource s; HklVector ki_ref = {{HKL_TAU / 1.54, 0, 0}}; HklVector ki; hkl_source_init(&s, 1.54, 1, 0, 0); hkl_source_compute_ki(&s, &ki); HKL_ASSERT_EQUAL(0, hkl_vector_cmp(&ki_ref, &ki)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(get_wavelength) { HklSource s; hkl_source_init(&s, 1, 1, 0, 0); HKL_ASSERT_DOUBLES_EQUAL(1., hkl_source_get_wavelength(&s), HKL_EPSILON); return HKL_TEST_PASS; } HKL_TEST_SUITE_BEGIN HKL_TEST( new_copy ); HKL_TEST( init ); HKL_TEST( cmp ); HKL_TEST( compute_ki ); HKL_TEST( get_wavelength ); HKL_TEST_SUITE_END hkl-4.0.3/test/hkl-test-detector.c0000644000175000017500000000571411402652607013714 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include "hkl-test.h" #ifdef HKL_TEST_SUITE_NAME # undef HKL_TEST_SUITE_NAME #endif #define HKL_TEST_SUITE_NAME detector HKL_TEST_SUITE_FUNC(new) { HklDetector *detector1; HklDetector *detector2; detector1 = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); HKL_ASSERT_EQUAL(0, detector1->idx); HKL_ASSERT_POINTER_EQUAL(NULL, detector1->holder); detector2 = hkl_detector_new_copy(detector1); HKL_ASSERT_EQUAL(detector1->idx, detector2->idx); HKL_ASSERT_POINTER_EQUAL(detector1->holder, detector2->holder); hkl_detector_free(detector1); hkl_detector_free(detector2); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(attach_to_holder) { HklDetector *detector = NULL; HklGeometry *geometry = NULL; HklHolder *holder = NULL; detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); geometry = hkl_geometry_new(); holder = hkl_geometry_add_holder(geometry); hkl_detector_attach_to_holder(detector, holder); HKL_ASSERT_EQUAL(0, detector->idx); HKL_ASSERT_POINTER_EQUAL(holder, detector->holder); hkl_geometry_free(geometry); hkl_detector_free(detector); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(compute_kf) { HklDetector *detector = NULL; HklGeometry *geometry = NULL; HklAxis *axis1 = NULL; HklAxis *axis2 = NULL; HklHolder *holder = NULL; HklVector kf; HklVector kf_ref = {{0, HKL_TAU / HKL_SOURCE_DEFAULT_WAVE_LENGTH, 0}}; detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); geometry = hkl_geometry_new(); holder = hkl_geometry_add_holder(geometry); hkl_holder_add_rotation_axis(holder, "a", 1, 0, 0); hkl_holder_add_rotation_axis(holder, "b", 0, 1, 0); hkl_axis_set_value(&geometry->axes[0], M_PI_2); hkl_axis_set_value(&geometry->axes[1], M_PI_2); hkl_detector_attach_to_holder(detector, holder); hkl_detector_compute_kf(detector, geometry, &kf); HKL_ASSERT_EQUAL(0, hkl_vector_cmp(&kf_ref, &kf)); hkl_geometry_free(geometry); hkl_detector_free(detector); return HKL_TEST_PASS; } HKL_TEST_SUITE_BEGIN HKL_TEST( new ); HKL_TEST( attach_to_holder ); HKL_TEST( compute_kf ); HKL_TEST_SUITE_END hkl-4.0.3/test/hkl-test.h0000644000175000017500000000644411402652607012113 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __HKL_TEST_H__ #define __HKL_TEST_H__ #include #include #include #define HKL_TEST_PASS 1 #define HKL_TEST_FAIL 0 #define HKL_ASSERT_EQUAL(a, b) do { \ test->file = __FILE__; \ test->line = __LINE__; \ if ((a) != (b)) { \ printf("%d != %d", a, b); \ return HKL_TEST_FAIL; \ } \ } while(0) #define HKL_ASSERT_DOUBLES_EQUAL(a, b, c) do { \ test->file = __FILE__; \ test->line = __LINE__; \ if (isnan(a) || isnan(b) || fabs((a)-(b)) > (c)) { \ printf("%.7f != %.7f (%.7f)", a, b, c); \ return HKL_TEST_FAIL; \ } \ } while(0) #define HKL_ASSERT_POINTER_EQUAL(a, b) do { \ test->file = __FILE__; \ test->line = __LINE__; \ if ((a) != (b)) { \ printf("%p != %p", a, b); \ return HKL_TEST_FAIL; \ } \ } while(0) #define HKL_ASSERT_STRING_EQUAL(a, b) do { \ test->file = __FILE__; \ test->line = __LINE__; \ if (strcmp((a),(b))) { \ printf("\"%s\" != \"%s\"", a, b); \ return HKL_TEST_FAIL; \ } \ } while(0) #define xstr(s) str(s) #define str(s) #s #define _concat(a, b) a ## _ ## b #define concat(a, b) _concat(a, b) #define HKL_TEST_SUITE_FUNC(a) int HKL_TEST_SUITE_FUNC_NAME(a) (struct hkl_test *test) #define HKL_TEST_SUITE_FUNC_NAME(a) concat(hkl_test, concat(HKL_TEST_SUITE_NAME, a)) #define HKL_TEST_SUITE(a) do{ \ extern void hkl_test_suite_ ## a (struct hkl_tests *tests); \ hkl_test_suite_ ## a (&tests); \ } while(0) #define HKL_TEST_SUITE_FULLNAME concat(hkl_test_suite, HKL_TEST_SUITE_NAME) #define HKL_TEST_SUITE_BEGIN void HKL_TEST_SUITE_FULLNAME (struct hkl_tests *tests) { #define HKL_TEST(a) hkl_tests_add_test( tests, xstr(HKL_TEST_SUITE_FUNC_NAME(a)), &HKL_TEST_SUITE_FUNC_NAME(a) ) #define HKL_TEST_SUITE_END } /* forward declaration for the hkl_test_method typedef */ struct hkl_test; typedef int (*hkl_test_method)(struct hkl_test *test); struct hkl_test { const char *name; hkl_test_method method; const char *file; int line; }; struct hkl_tests { size_t alloc; size_t len; struct hkl_test *tests; }; extern void hkl_tests_init(struct hkl_tests * tests, size_t hint); extern void hkl_tests_add_test(struct hkl_tests *tests, const char *name, hkl_test_method method); extern int hkl_tests_run(struct hkl_tests *tests); extern void hkl_tests_release(struct hkl_tests *tests); #endif /* __HKL_TEST_H__ */ hkl-4.0.3/test/hkl-test-lattice.c0000644000175000017500000002162311402652607013525 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include "hkl-test.h" #ifdef HKL_TEST_SUITE_NAME # undef HKL_TEST_SUITE_NAME #endif #define HKL_TEST_SUITE_NAME lattice HKL_TEST_SUITE_FUNC(new) { HklLattice *lattice; /* can not set this lattice */ lattice = hkl_lattice_new(1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 10*HKL_DEGTORAD, 120*HKL_DEGTORAD); HKL_ASSERT_POINTER_EQUAL(NULL, lattice); /* but can create this one */ lattice = hkl_lattice_new(1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD); HKL_ASSERT_EQUAL(0, !lattice); HKL_ASSERT_DOUBLES_EQUAL(1.54, lattice->a->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(1.54, lattice->b->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(1.54, lattice->c->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(90*HKL_DEGTORAD, lattice->alpha->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(90*HKL_DEGTORAD, lattice->beta->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(90*HKL_DEGTORAD, lattice->gamma->value, HKL_EPSILON); hkl_lattice_free(lattice); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC( new_copy ) { HklLattice *lattice; HklLattice *copy; lattice = hkl_lattice_new(1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD); /* copy constructor */ copy = hkl_lattice_new_copy(lattice); HKL_ASSERT_DOUBLES_EQUAL(1.54, copy->a->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(1.54, copy->b->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(1.54, copy->c->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(90. * HKL_DEGTORAD, copy->alpha->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(90. * HKL_DEGTORAD, copy->beta->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(90. * HKL_DEGTORAD, copy->gamma->value, HKL_EPSILON); hkl_lattice_free(lattice); hkl_lattice_free(copy); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(set) { HklLattice *lattice; /* can not set this lattice */ lattice = hkl_lattice_new_default(); /* but can create this one */ hkl_lattice_set(lattice, 1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 91*HKL_DEGTORAD, 92*HKL_DEGTORAD); HKL_ASSERT_DOUBLES_EQUAL(1.54, lattice->a->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(1.54, lattice->b->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(1.54, lattice->c->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(90*HKL_DEGTORAD, lattice->alpha->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(91*HKL_DEGTORAD, lattice->beta->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(92*HKL_DEGTORAD, lattice->gamma->value, HKL_EPSILON); hkl_lattice_free(lattice); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC( reciprocal ) { HklLattice *lattice; HklLattice *reciprocal; lattice = hkl_lattice_new_default(); reciprocal = hkl_lattice_new_default(); /* cubic */ hkl_lattice_set(lattice, 1.54, 1.54, 1.54, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD, 90*HKL_DEGTORAD); HKL_ASSERT_EQUAL(HKL_SUCCESS, hkl_lattice_reciprocal(lattice, reciprocal)); HKL_ASSERT_DOUBLES_EQUAL(HKL_TAU / 1.54, reciprocal->a->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(HKL_TAU / 1.54, reciprocal->b->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(HKL_TAU / 1.54, reciprocal->c->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(90. * HKL_DEGTORAD, reciprocal->alpha->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(90. * HKL_DEGTORAD, reciprocal->beta->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(90. * HKL_DEGTORAD, reciprocal->gamma->value, HKL_EPSILON); /* orthorombic */ hkl_lattice_set(lattice, 1., 3., 4., 90 * HKL_DEGTORAD, 90 * HKL_DEGTORAD, 90 * HKL_DEGTORAD); HKL_ASSERT_EQUAL(HKL_SUCCESS, hkl_lattice_reciprocal(lattice, reciprocal)); HKL_ASSERT_DOUBLES_EQUAL(HKL_TAU / 1., reciprocal->a->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(HKL_TAU / 3., reciprocal->b->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(HKL_TAU / 4., reciprocal->c->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(90. * HKL_DEGTORAD, reciprocal->alpha->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(90. * HKL_DEGTORAD, reciprocal->beta->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(90. * HKL_DEGTORAD, reciprocal->gamma->value, HKL_EPSILON); /* hexagonal1 */ hkl_lattice_set(lattice, 1., 2., 1., 90 * HKL_DEGTORAD, 120 * HKL_DEGTORAD, 90 * HKL_DEGTORAD); HKL_ASSERT_EQUAL(HKL_SUCCESS, hkl_lattice_reciprocal(lattice, reciprocal)); HKL_ASSERT_DOUBLES_EQUAL(HKL_TAU * 2. / sqrt(3.), reciprocal->a->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(HKL_TAU / 2., reciprocal->b->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(HKL_TAU * 2. / sqrt(3.), reciprocal->c->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(90. * HKL_DEGTORAD, reciprocal->alpha->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(60. * HKL_DEGTORAD, reciprocal->beta->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(90. * HKL_DEGTORAD, reciprocal->gamma->value, HKL_EPSILON); /* hexagonal2 */ hkl_lattice_set(lattice, 2., 1., 1., 120 * HKL_DEGTORAD, 90 * HKL_DEGTORAD, 90 * HKL_DEGTORAD); HKL_ASSERT_EQUAL(HKL_SUCCESS, hkl_lattice_reciprocal(lattice, reciprocal)); HKL_ASSERT_DOUBLES_EQUAL(HKL_TAU / 2., reciprocal->a->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(HKL_TAU * 2. / sqrt(3.), reciprocal->b->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(HKL_TAU * 2. / sqrt(3.), reciprocal->c->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(60. * HKL_DEGTORAD, reciprocal->alpha->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(90. * HKL_DEGTORAD, reciprocal->beta->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(90. * HKL_DEGTORAD, reciprocal->gamma->value, HKL_EPSILON); /* triclinic1 */ hkl_lattice_set(lattice, 9.32, 8.24, 13.78, 91.23 * HKL_DEGTORAD, 93.64 * HKL_DEGTORAD, 122.21 * HKL_DEGTORAD); HKL_ASSERT_EQUAL(HKL_SUCCESS, hkl_lattice_reciprocal(lattice, reciprocal)); HKL_ASSERT_DOUBLES_EQUAL(HKL_TAU * 0.1273130168, reciprocal->a->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(HKL_TAU * 0.1437422974, reciprocal->b->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(HKL_TAU * 0.0728721120, reciprocal->c->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(1.5052513337, reciprocal->alpha->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(1.482101482, reciprocal->beta->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(1.0055896011, reciprocal->gamma->value, HKL_EPSILON); /* triclinic2 */ hkl_lattice_set(lattice, 18.423, 18.417, 18.457, 89.99 * HKL_DEGTORAD, 89.963 * HKL_DEGTORAD, 119.99 * HKL_DEGTORAD); HKL_ASSERT_EQUAL(HKL_SUCCESS, hkl_lattice_reciprocal(lattice, reciprocal)); HKL_ASSERT_DOUBLES_EQUAL(HKL_TAU * 0.0626708259, reciprocal->a->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(HKL_TAU * 0.0626912310, reciprocal->b->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(HKL_TAU * 0.0541800061, reciprocal->c->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(1.5713705262, reciprocal->alpha->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(1.5716426508, reciprocal->beta->value, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(1.0473718249, reciprocal->gamma->value, HKL_EPSILON); hkl_lattice_free(lattice); hkl_lattice_free(reciprocal); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC( get_B ) { static HklMatrix B_ref = {{{HKL_TAU / 1.54, 0, 0}, { 0, HKL_TAU / 1.54, 0}, { 0, 0, HKL_TAU / 1.54}}}; HklLattice *lattice; HklMatrix B; /* cubic */ lattice = hkl_lattice_new(1.54, 1.54, 1.54, 90 * HKL_DEGTORAD, 90 * HKL_DEGTORAD, 90 * HKL_DEGTORAD); hkl_lattice_get_B(lattice, &B); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_matrix_cmp(&B_ref, &B)); hkl_lattice_free(lattice); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC( get_1_B ) { static HklMatrix I_ref = {{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}}; HklLattice *lattice; HklMatrix I; HklMatrix B_1; /* cubic */ lattice = hkl_lattice_new(1.54, 1.54, 1.54, 90 * HKL_DEGTORAD, 90 * HKL_DEGTORAD, 90 * HKL_DEGTORAD); hkl_lattice_get_B(lattice, &I); hkl_lattice_get_1_B(lattice, &B_1); /* B times B^-1 = Identity */ hkl_matrix_times_matrix(&I, &B_1); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_matrix_cmp(&I_ref, &I)); hkl_lattice_free(lattice); return HKL_TEST_PASS; } HKL_TEST_SUITE_BEGIN HKL_TEST( new ); HKL_TEST( new_copy ); HKL_TEST( set ); HKL_TEST( reciprocal ); HKL_TEST( get_B ); HKL_TEST( get_1_B ); HKL_TEST_SUITE_END hkl-4.0.3/test/hkl-test-pseudoaxis-k4cv.c0000644000175000017500000001743711402652607015141 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include "hkl-test.h" #ifdef HKL_TEST_SUITE_NAME # undef HKL_TEST_SUITE_NAME #endif #define HKL_TEST_SUITE_NAME pseudoaxis_K4CV #define SET_AXES(geometry, komega, kappa, kphi, tth) do{ \ hkl_geometry_set_values_v(geometry, 4, \ komega * HKL_DEGTORAD, \ kappa * HKL_DEGTORAD, \ kphi * HKL_DEGTORAD, \ tth * HKL_DEGTORAD); \ } while(0) #define CHECK_PSEUDOAXES(engine, a, b, c) do{ \ HklParameter *H = (HklPArameter *)(engine->pseudoAxes[0]); \ HklParameter *K = (HklParameter *)(engine->pseudoAxes[1]); \ HklParameter *L = (HklParameter *)(engine->pseudoAxes[2]); \ \ HKL_ASSERT_DOUBLES_EQUAL(a, H->value, HKL_EPSILON); \ HKL_ASSERT_DOUBLES_EQUAL(b, K->value, HKL_EPSILON); \ HKL_ASSERT_DOUBLES_EQUAL(c, L->value, HKL_EPSILON); \ } while(0) HKL_TEST_SUITE_FUNC(new) { HklPseudoAxisEngine *engine = hkl_pseudo_axis_engine_k4cv_hkl_new(); hkl_pseudo_axis_engine_free(engine); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(degenerated) { HklPseudoAxisEngineList *engines; HklPseudoAxisEngine *engine; const HklGeometryConfig *config; HklGeometry *geom; HklDetector *detector; HklSample *sample; size_t i, f_idx; double *H, *K, *L; config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_KAPPA4C_VERTICAL); geom = hkl_geometry_factory_new(config, 50 * HKL_DEGTORAD); sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); detector->idx = 1; engines = hkl_pseudo_axis_engine_list_factory(config); hkl_pseudo_axis_engine_list_init(engines, geom, detector, sample); engine = hkl_pseudo_axis_engine_list_get_by_name(engines, "hkl"); H = &(((HklParameter *)engine->pseudoAxes[0])->value); K = &(((HklParameter *)engine->pseudoAxes[1])->value); L = &(((HklParameter *)engine->pseudoAxes[2])->value); for(f_idx=0; f_idxmodes); ++f_idx) { double h, k, l; int res; hkl_pseudo_axis_engine_select_mode(engine, f_idx); if (f_idx>0) engine->mode->parameters[0].value = 1.; /* studdy this degenerated case */ *H = h = 0; *K = k = 1; *L = l = 0; /* pseudo -> geometry */ res = hkl_pseudo_axis_engine_set(engine, NULL); /* hkl_pseudo_axis_engine_fprintf(stdout, engine); */ /* geometry -> pseudo */ if (res == HKL_SUCCESS) { for(i=0; igeometries); ++i) { *H = *K = *L = 0; hkl_geometry_init_geometry(geom, engines->geometries->items[i]->geometry); hkl_pseudo_axis_engine_get(engine, NULL); HKL_ASSERT_DOUBLES_EQUAL(h, *H, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(k, *K, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(l, *L, HKL_EPSILON); } } } hkl_pseudo_axis_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geom); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(eulerians) { HklPseudoAxisEngineList *engines; HklPseudoAxisEngine *engine; const HklGeometryConfig *config; HklGeometry *geom; HklDetector *detector; HklSample *sample; size_t i, f_idx; double *Omega, *Chi, *Phi; config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_KAPPA4C_VERTICAL); geom = hkl_geometry_factory_new(config, 50 * HKL_DEGTORAD); sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); detector->idx = 1; engines = hkl_pseudo_axis_engine_list_factory(config); hkl_pseudo_axis_engine_list_init(engines, geom, detector, sample); engine = hkl_pseudo_axis_engine_list_get_by_name(engines, "eulerians"); Omega = &(((HklParameter *)engine->pseudoAxes[0])->value); Chi = &(((HklParameter *)engine->pseudoAxes[1])->value); Phi = &(((HklParameter *)engine->pseudoAxes[2])->value); for(f_idx=0; f_idxmodes); ++f_idx) { double omega, chi, phi; int res; hkl_pseudo_axis_engine_select_mode(engine, f_idx); if (f_idx>0) engine->mode->parameters[0].value = 1.; /* studdy this degenerated case */ *Omega = omega = 0; *Chi = chi = 90 * HKL_DEGTORAD; *Phi = phi = 0; /* pseudo -> geometry */ res = hkl_pseudo_axis_engine_set(engine, NULL); /* geometry -> pseudo */ if (res == HKL_SUCCESS) { HKL_ASSERT_EQUAL(2, hkl_geometry_list_len(engines->geometries)); /* hkl_geometry_list_fprintf(stdout, engines->geometries); */ /* first solution = 0, 90, 0 */ hkl_geometry_init_geometry(geom, engines->geometries->items[1]->geometry); hkl_pseudo_axis_engine_get(engine, NULL); HKL_ASSERT_DOUBLES_EQUAL(0., *Omega, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(90. * HKL_DEGTORAD, *Chi, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(0. * HKL_DEGTORAD, *Phi, HKL_EPSILON); hkl_geometry_init_geometry(geom, engines->geometries->items[0]->geometry); hkl_pseudo_axis_engine_get(engine, NULL); HKL_ASSERT_DOUBLES_EQUAL(-180.* HKL_DEGTORAD, *Omega, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(-90. * HKL_DEGTORAD, *Chi, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(180. * HKL_DEGTORAD, *Phi, HKL_EPSILON); } } hkl_pseudo_axis_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geom); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(q) { HklPseudoAxisEngineList *engines; HklPseudoAxisEngine *engine; const HklGeometryConfig *config; HklGeometry *geom; HklDetector *detector; HklSample *sample; size_t i, f_idx; double *Q; config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_KAPPA4C_VERTICAL); geom = hkl_geometry_factory_new(config, 50 * HKL_DEGTORAD); sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); detector->idx = 1; engines = hkl_pseudo_axis_engine_list_factory(config); hkl_pseudo_axis_engine_list_init(engines, geom, detector, sample); engine = hkl_pseudo_axis_engine_list_get_by_name(engines, "q"); Q = &(((HklParameter *)engine->pseudoAxes[0])->value); /* the init part */ SET_AXES(geom, 30., 0., 0., 60.); hkl_pseudo_axis_engine_initialize(engine, NULL); for(f_idx=0; f_idxmodes); ++f_idx){ double q; int res; hkl_pseudo_axis_engine_select_mode(engine, f_idx); for(q=-1.; q<1.; q += 0.1){ *Q = q; /* pseudo -> geometry */ res = hkl_pseudo_axis_engine_set(engine, NULL); /* geometry -> pseudo */ if(res == HKL_SUCCESS){ for(i=0; igeometries); ++i){ *Q = 0; hkl_geometry_init_geometry(geom, engines->geometries->items[i]->geometry); hkl_pseudo_axis_engine_get(engine, NULL); HKL_ASSERT_DOUBLES_EQUAL(q, *Q, HKL_EPSILON); } } } } hkl_pseudo_axis_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); hkl_geometry_free(geom); return HKL_TEST_PASS; } HKL_TEST_SUITE_BEGIN HKL_TEST( new ); HKL_TEST( degenerated ); HKL_TEST( eulerians ); HKL_TEST( q ); HKL_TEST_SUITE_END hkl-4.0.3/test/hkl-test-pseudoaxis.c0000644000175000017500000001400211402652607014255 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include #include "hkl-test.h" #ifdef HKL_TEST_SUITE_NAME # undef HKL_TEST_SUITE_NAME #endif #define HKL_TEST_SUITE_NAME pseudoaxis #define with_log 0 #define N 2 static int test_engine(struct hkl_test *test, HklPseudoAxisEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample) { size_t i, j, k, f_idx; double *values = alloca(HKL_LIST_LEN(engine->pseudoAxes) * sizeof(*values)); int miss = 0; /* randomize the geometry */ hkl_geometry_randomize(geometry); for(f_idx=0; f_idxmodes); ++f_idx) { hkl_pseudo_axis_engine_select_mode(engine, f_idx); /* for now unactive the eulerians check */ if(!strcmp(engine->mode->name, "eulerians")) continue; miss = 0; for(i=0;ipseudoAxes); /* randomize the pseudoAxes values */ for(j=0; jpseudoAxes[j]); hkl_parameter_randomize(parameter); values[j] = parameter->value; } /* randomize the parameters */ for(j=0; jmode->parameters); ++j) hkl_parameter_randomize(&engine->mode->parameters[j]); /* pseudo -> geometry */ hkl_pseudo_axis_engine_initialize(engine, NULL); /* hkl_pseudo_axis_engine_fprintf(stderr, engine); */ res = hkl_pseudo_axis_engine_set(engine, NULL); /* geometry -> pseudo */ if (res == HKL_SUCCESS) { size_t g_len = hkl_geometry_list_len(engine->engines->geometries); /* check all finded geometries */ /* hkl_pseudo_axis_engine_fprintf(stderr, engine); */ for(j=0; jpseudoAxes[k])->value = 0.; hkl_geometry_init_geometry(geometry, engine->engines->geometries->items[j]->geometry); hkl_pseudo_axis_engine_get(engine, NULL); for(k=0; kpseudoAxes[k])->value, HKL_EPSILON); } } } else miss++; } #if with_log fprintf(stderr, "\n\"%s\" \"%s\" missed : %d", engine->geometry->name, engine->mode->name, miss); #endif } #if with_log fprintf(stderr, "\n"); #endif return HKL_TEST_PASS; } #define test_engines(test, engines) do{ \ size_t i; \ for(i=0; iengines); ++i){ \ if (!test_engine(test, engines->engines[i], \ engines->geometry, \ engines->detector, \ engines->sample)) \ return HKL_TEST_FAIL; \ } \ }while(0) HKL_TEST_SUITE_FUNC(set) { const HklGeometryConfig *config; HklGeometry *geometry = NULL; HklDetector *detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); HklSample *sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); HklPseudoAxisEngineList *engines; /* attach to the second holder */ detector->idx = 1; /* test all E4CV engines */ config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_EULERIAN4C_VERTICAL); geometry = hkl_geometry_factory_new(config); engines = hkl_pseudo_axis_engine_list_factory(config); hkl_pseudo_axis_engine_list_init(engines, geometry, detector, sample); test_engines(test, engines); hkl_geometry_free(geometry); hkl_pseudo_axis_engine_list_free(engines); /* test all E6C HKL engines */ config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_EULERIAN6C); geometry = hkl_geometry_factory_new(config); engines = hkl_pseudo_axis_engine_list_factory(config); hkl_pseudo_axis_engine_list_init(engines, geometry, detector, sample); test_engines(test, engines); hkl_geometry_free(geometry); hkl_pseudo_axis_engine_list_free(engines); /* test all K4CV HKL engines */ config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_KAPPA4C_VERTICAL); geometry = hkl_geometry_factory_new(config, 50 * HKL_DEGTORAD); engines = hkl_pseudo_axis_engine_list_factory(config); hkl_pseudo_axis_engine_list_init(engines, geometry, detector, sample); test_engines(test, engines); hkl_geometry_free(geometry); hkl_pseudo_axis_engine_list_free(engines); /* test all K6C engines */ config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_KAPPA6C); geometry = hkl_geometry_factory_new(config, 50 * HKL_DEGTORAD); engines = hkl_pseudo_axis_engine_list_factory(config); hkl_pseudo_axis_engine_list_init(engines, geometry, detector, sample); test_engines(test, engines); hkl_geometry_free(geometry); hkl_pseudo_axis_engine_list_free(engines); /* test all ZAXIS engines */ config = hkl_geometry_factory_get_config_from_type(HKL_GEOMETRY_TYPE_ZAXIS); geometry = hkl_geometry_factory_new(config); engines = hkl_pseudo_axis_engine_list_factory(config); hkl_pseudo_axis_engine_list_init(engines, geometry, detector, sample); test_engines(test, engines); hkl_geometry_free(geometry); hkl_pseudo_axis_engine_list_free(engines); hkl_detector_free(detector); hkl_sample_free(sample); return HKL_TEST_PASS; } HKL_TEST_SUITE_BEGIN HKL_TEST( set ); HKL_TEST_SUITE_END hkl-4.0.3/test/hkl-test-geometry.c0000644000175000017500000002220211402652607013725 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include "hkl-test.h" #ifdef HKL_TEST_SUITE_NAME # undef HKL_TEST_SUITE_NAME #endif #define HKL_TEST_SUITE_NAME geometry HKL_TEST_SUITE_FUNC(add_holder) { HklGeometry *g = NULL; HklHolder *holder = NULL; g = hkl_geometry_new(); HKL_ASSERT_EQUAL(0, HKL_LIST_LEN(g->holders)); holder = hkl_geometry_add_holder(g); hkl_holder_add_rotation_axis(holder, "A", 1., 0., 0.); hkl_holder_add_rotation_axis(holder, "B", 1., 0., 0.); HKL_ASSERT_EQUAL(1, HKL_LIST_LEN(g->holders)); holder = hkl_geometry_add_holder(g); hkl_holder_add_rotation_axis(holder, "A", 1., 0., 0.); hkl_holder_add_rotation_axis(holder, "C", 1., 0., 0.); HKL_ASSERT_EQUAL(2, HKL_LIST_LEN(g->holders)); HKL_ASSERT_POINTER_EQUAL(holder, &g->holders[1]); hkl_geometry_free(g); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(get_axis) { HklGeometry *g = NULL; HklHolder *holder = NULL; HklAxis *axis0, *axis1, *axis2; g = hkl_geometry_new(); holder = hkl_geometry_add_holder(g); hkl_holder_add_rotation_axis(holder, "A", 1., 0., 0.); hkl_holder_add_rotation_axis(holder, "B", 1., 0., 0.); holder = hkl_geometry_add_holder(g); hkl_holder_add_rotation_axis(holder, "A", 1., 0., 0.); hkl_holder_add_rotation_axis(holder, "C", 1., 0., 0.); HKL_ASSERT_EQUAL(0, !hkl_geometry_get_axis_by_name(g, "A")); HKL_ASSERT_EQUAL(0, !hkl_geometry_get_axis_by_name(g, "B")); HKL_ASSERT_EQUAL(0, !hkl_geometry_get_axis_by_name(g, "C")); HKL_ASSERT_EQUAL(1, !hkl_geometry_get_axis_by_name(g, "D")); hkl_geometry_free(g); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(update) { HklGeometry *g = NULL; HklHolder *holder = NULL; HklAxis *axis0, *axis1, *axis2; g = hkl_geometry_new(); holder = hkl_geometry_add_holder(g); hkl_holder_add_rotation_axis(holder, "A", 1., 0., 0.); hkl_holder_add_rotation_axis(holder, "B", 1., 0., 0.); holder = hkl_geometry_add_holder(g); hkl_holder_add_rotation_axis(holder, "A", 1., 0., 0.); hkl_holder_add_rotation_axis(holder, "C", 1., 0., 0.); axis1 = hkl_geometry_get_axis_by_name(g, "B"); hkl_axis_set_value(axis1, M_PI_2); /* now axis1 is dirty */ HKL_ASSERT_EQUAL(HKL_TRUE, hkl_axis_get_changed(axis1)); hkl_geometry_update(g); HKL_ASSERT_DOUBLES_EQUAL(1./sqrt(2), g->holders[0].q.data[0], HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(1./sqrt(2), g->holders[0].q.data[1], HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(.0, g->holders[0].q.data[2], HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(.0, g->holders[0].q.data[3], HKL_EPSILON); /* now axis1 is clean */ HKL_ASSERT_EQUAL(HKL_FALSE, hkl_axis_get_changed(axis1)); hkl_geometry_free(g); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(set_values) { HklGeometry *g; HklHolder *holder; g = hkl_geometry_new(); holder = hkl_geometry_add_holder(g); hkl_holder_add_rotation_axis(holder, "A", 1., 0., 0.); hkl_holder_add_rotation_axis(holder, "B", 1., 0., 0.); hkl_holder_add_rotation_axis(holder, "C", 1., 0., 0.); hkl_geometry_set_values_v(g, 3, 1., 1., 1.); HKL_ASSERT_DOUBLES_EQUAL(1., hkl_axis_get_value(&g->axes[0]), HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(1., hkl_axis_get_value(&g->axes[1]), HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(1., hkl_axis_get_value(&g->axes[2]), HKL_EPSILON); hkl_geometry_free(g); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(distance) { HklGeometry *g1 = NULL; HklGeometry *g2 = NULL; HklHolder *holder = NULL; g1 = hkl_geometry_new(); holder = hkl_geometry_add_holder(g1); hkl_holder_add_rotation_axis(holder, "A", 1., 0., 0.); hkl_holder_add_rotation_axis(holder, "B", 1., 0., 0.); hkl_holder_add_rotation_axis(holder, "C", 1., 0., 0.); g2 = hkl_geometry_new_copy(g1); hkl_geometry_set_values_v(g1, 3, 0., 0., 0.); hkl_geometry_set_values_v(g2, 3, 1., 1., 1.); HKL_ASSERT_DOUBLES_EQUAL(3, hkl_geometry_distance(g1, g2), HKL_EPSILON); hkl_geometry_free(g1); hkl_geometry_free(g2); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(is_valid) { HklGeometry *geom = NULL; HklHolder *holder = NULL; geom = hkl_geometry_new(); holder = hkl_geometry_add_holder(geom); hkl_holder_add_rotation_axis(holder, "A", 1., 0., 0.); hkl_holder_add_rotation_axis(holder, "B", 1., 0., 0.); hkl_holder_add_rotation_axis(holder, "C", 1., 0., 0.); hkl_geometry_set_values_v(geom, 3, 0., 0., 0.); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_geometry_is_valid(geom)); hkl_geometry_set_values_v(geom, 3, -180., 0., 0.); HKL_ASSERT_EQUAL(HKL_FALSE, hkl_geometry_is_valid(geom)); hkl_geometry_free(geom); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(list) { HklGeometry *g; HklGeometryList *list; HklHolder *holder; g = hkl_geometry_new(); holder = hkl_geometry_add_holder(g); hkl_holder_add_rotation_axis(holder, "A", 1., 0., 0.); hkl_holder_add_rotation_axis(holder, "B", 1., 0., 0.); hkl_holder_add_rotation_axis(holder, "C", 1., 0., 0.); list = hkl_geometry_list_new(); hkl_geometry_set_values_v(g, 3, 0., 0., 0.); hkl_geometry_list_add(list, g); HKL_ASSERT_EQUAL(1, HKL_LIST_LEN(list->items)); /* can not add two times the same geometry */ hkl_geometry_list_add(list, g); HKL_ASSERT_EQUAL(1, HKL_LIST_LEN(list->items)); hkl_geometry_set_values_v(g, 3, 30*HKL_DEGTORAD, 0., 0.); hkl_geometry_list_add(list, g); hkl_geometry_set_values_v(g, 3, 10*HKL_DEGTORAD, 0., 0.); hkl_geometry_list_add(list, g); HKL_ASSERT_EQUAL(3, HKL_LIST_LEN(list->items)); hkl_geometry_set_values_v(g, 3, 0., 0., 0.); hkl_geometry_list_sort(list, g); HKL_ASSERT_DOUBLES_EQUAL(0., hkl_axis_get_value(&list->items[0]->geometry->axes[0]), HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(10*HKL_DEGTORAD, hkl_axis_get_value(&list->items[1]->geometry->axes[0]), HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(30*HKL_DEGTORAD, hkl_axis_get_value(&list->items[2]->geometry->axes[0]), HKL_EPSILON); hkl_geometry_free(g); hkl_geometry_list_free(list); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC( list_multiply_from_range ) { HklGeometry *g; HklGeometryList *list; HklHolder *holder; HklAxis *axisA, *axisB, *axisC; g = hkl_geometry_new(); holder = hkl_geometry_add_holder(g); hkl_holder_add_rotation_axis(holder, "A", 1., 0., 0.); hkl_holder_add_rotation_axis(holder, "B", 1., 0., 0.); hkl_holder_add_rotation_axis(holder, "C", 1., 0., 0.); axisA = hkl_geometry_get_axis_by_name(g, "A"); axisB = hkl_geometry_get_axis_by_name(g, "B"); axisC = hkl_geometry_get_axis_by_name(g, "C"); hkl_axis_set_range_unit(axisA, -190, 190); hkl_axis_set_range_unit(axisB, -190, 190); hkl_axis_set_range_unit(axisC, -190, 190); list = hkl_geometry_list_new(); hkl_geometry_set_values_v(g, 3, 185. * HKL_DEGTORAD, -185. * HKL_DEGTORAD, 190. * HKL_DEGTORAD); hkl_geometry_list_add(list, g); hkl_geometry_list_multiply_from_range(list); hkl_geometry_free(g); hkl_geometry_list_free(list); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC( list_remove_invalid ) { HklGeometry *g; HklGeometryList *list; HklHolder *holder; HklAxis *axisA, *axisB, *axisC; g = hkl_geometry_new(); holder = hkl_geometry_add_holder(g); hkl_holder_add_rotation_axis(holder, "A", 1., 0., 0.); hkl_holder_add_rotation_axis(holder, "B", 1., 0., 0.); hkl_holder_add_rotation_axis(holder, "C", 1., 0., 0.); axisA = hkl_geometry_get_axis_by_name(g, "A"); axisB = hkl_geometry_get_axis_by_name(g, "B"); axisC = hkl_geometry_get_axis_by_name(g, "C"); hkl_axis_set_range_unit(axisA, -190., 180.); hkl_axis_set_range_unit(axisB, -190., 180.); hkl_axis_set_range_unit(axisC, -190., 180.); list = hkl_geometry_list_new(); hkl_geometry_set_values_v(g, 3, 185. * HKL_DEGTORAD, -185.* HKL_DEGTORAD, 185. * HKL_DEGTORAD); hkl_geometry_list_add(list, g); hkl_geometry_set_values_v(g, 3, -190. * HKL_DEGTORAD, -190.* HKL_DEGTORAD, -190.* HKL_DEGTORAD); hkl_geometry_list_add(list, g); hkl_geometry_set_values_v(g, 3, 180. * HKL_DEGTORAD, 180.* HKL_DEGTORAD, 180.* HKL_DEGTORAD); hkl_geometry_list_add(list, g); HKL_ASSERT_EQUAL(3, HKL_LIST_LEN(list->items)); hkl_geometry_list_remove_invalid(list); HKL_ASSERT_EQUAL(2, HKL_LIST_LEN(list->items)); hkl_geometry_free(g); hkl_geometry_list_free(list); return HKL_TEST_PASS; } HKL_TEST_SUITE_BEGIN HKL_TEST( add_holder ); HKL_TEST( get_axis ); HKL_TEST( update ); HKL_TEST( set_values ); HKL_TEST( distance ); HKL_TEST( is_valid ); HKL_TEST( list ); HKL_TEST( list_multiply_from_range ); HKL_TEST( list_remove_invalid ); HKL_TEST_SUITE_END hkl-4.0.3/test/main.c0000644000175000017500000000321411402652607011267 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include "hkl-test.h" int main(int argc, char **argv) { int res; struct hkl_tests tests; hkl_tests_init(&tests, 0); HKL_TEST_SUITE( error ); HKL_TEST_SUITE( vector ); HKL_TEST_SUITE( smatrix ); HKL_TEST_SUITE( quaternion ); /* HKL_TEST_SUITE( interval ); */ HKL_TEST_SUITE( source ); HKL_TEST_SUITE( axis ); HKL_TEST_SUITE( detector ); HKL_TEST_SUITE( geometry ); HKL_TEST_SUITE( parameter ); HKL_TEST_SUITE( lattice ); HKL_TEST_SUITE( sample ); HKL_TEST_SUITE( pseudoaxis ); HKL_TEST_SUITE( pseudoaxis_E4CV ); HKL_TEST_SUITE( pseudoaxis_E6C ); HKL_TEST_SUITE( pseudoaxis_K4CV ); HKL_TEST_SUITE( pseudoaxis_K6C ); res = hkl_tests_run(&tests); hkl_tests_release(&tests); return res; } hkl-4.0.3/test/hkl-test-axis.c0000644000175000017500000001315411402652607013044 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include "hkl-test.h" #ifdef HKL_TEST_SUITE_NAME # undef HKL_TEST_SUITE_NAME #endif #define HKL_TEST_SUITE_NAME axis HKL_TEST_SUITE_FUNC( new ) { HklAxis *axis; HklVector v = {{1, 0, 0}}; axis = hkl_axis_new("omega", &v); HKL_ASSERT_STRING_EQUAL("omega", ((HklParameter *)axis)->name); HKL_ASSERT_DOUBLES_EQUAL(-M_PI, ((HklParameter *)axis)->range.min, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(M_PI, ((HklParameter *)axis)->range.max, HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(0., ((HklParameter *)axis)->value, HKL_EPSILON); HKL_ASSERT_EQUAL(HKL_TRUE, ((HklParameter *)axis)->fit); HKL_ASSERT_EQUAL(HKL_TRUE, ((HklParameter *)axis)->changed); hkl_axis_free(axis); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC( get_quaternions ) { HklAxis *axis; HklVector v = {{1, 0, 0}}; HklQuaternion q; axis = hkl_axis_new("omega", &v); hkl_axis_get_quaternion(axis, &q); HKL_ASSERT_DOUBLES_EQUAL(1., q.data[0], HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(0., q.data[1], HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(0., q.data[2], HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(0., q.data[3], HKL_EPSILON); ((HklParameter *)axis)->value = -M_PI_2; hkl_axis_get_quaternion(axis, &q); HKL_ASSERT_DOUBLES_EQUAL(1./sqrt(2.), q.data[0], HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(-1./sqrt(2.), q.data[1], HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(0., q.data[2], HKL_EPSILON); HKL_ASSERT_DOUBLES_EQUAL(0., q.data[3], HKL_EPSILON); hkl_axis_free(axis); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC( is_value_compatible_with_range ) { HklAxis *axis1; HklVector v = {{1, 0, 0}}; axis1 = hkl_axis_new("omega", &v); hkl_axis_set_value_unit(axis1, 45); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_axis_is_value_compatible_with_range(axis1)); /* change the range of axis1 */ hkl_axis_set_range_unit(axis1, -270, 0); HKL_ASSERT_EQUAL(HKL_FALSE, hkl_axis_is_value_compatible_with_range(axis1)); hkl_axis_set_value_unit(axis1, -45); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_axis_is_value_compatible_with_range(axis1)); hkl_axis_set_range_unit(axis1, 350, 450); hkl_axis_set_value_unit(axis1, 45); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_axis_is_value_compatible_with_range(axis1)); hkl_axis_set_value_unit(axis1, -45); HKL_ASSERT_EQUAL(HKL_FALSE, hkl_axis_is_value_compatible_with_range(axis1)); hkl_axis_set_range_unit(axis1, -10, 90); hkl_axis_set_value_unit(axis1, 405); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_axis_is_value_compatible_with_range(axis1)); hkl_axis_set_value_unit(axis1, -405); HKL_ASSERT_EQUAL(HKL_FALSE, hkl_axis_is_value_compatible_with_range(axis1)); hkl_axis_free(axis1); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC( set_value_smallest_in_range ) { HklAxis *axis; HklVector v = {{1, 0, 0}}; axis = hkl_axis_new("omega", &v); hkl_axis_set_range_unit(axis, -190, 190); hkl_axis_set_value_unit(axis, 185); hkl_axis_set_value_smallest_in_range(axis); HKL_ASSERT_DOUBLES_EQUAL(-175, hkl_axis_get_value_unit(axis), HKL_EPSILON); hkl_axis_set_value_unit(axis, 545); hkl_axis_set_value_smallest_in_range(axis); HKL_ASSERT_DOUBLES_EQUAL(-175, hkl_axis_get_value_unit(axis), HKL_EPSILON); hkl_axis_set_value_unit(axis, -185); hkl_axis_set_value_smallest_in_range(axis); HKL_ASSERT_DOUBLES_EQUAL(-185, hkl_axis_get_value_unit(axis), HKL_EPSILON); hkl_axis_set_value_unit(axis, 175); hkl_axis_set_value_smallest_in_range(axis); HKL_ASSERT_DOUBLES_EQUAL(-185, hkl_axis_get_value_unit(axis), HKL_EPSILON); hkl_axis_set_value_unit(axis, 190); hkl_axis_set_value_smallest_in_range(axis); HKL_ASSERT_DOUBLES_EQUAL(-170, hkl_axis_get_value_unit(axis), HKL_EPSILON); hkl_axis_set_value_unit(axis, -190); hkl_axis_set_value_smallest_in_range(axis); HKL_ASSERT_DOUBLES_EQUAL(-190, hkl_axis_get_value_unit(axis), HKL_EPSILON); hkl_axis_free(axis); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC( get_value_closest ) { HklAxis *axis1, *axis2; HklVector v = {{1, 0, 0}}; axis1 = hkl_axis_new("omega", &v); axis2 = hkl_axis_new("omega", &v); hkl_axis_set_value_unit(axis1, 0); hkl_axis_set_value_unit(axis2, 0); HKL_ASSERT_DOUBLES_EQUAL(0., hkl_axis_get_value_closest(axis1, axis2), HKL_EPSILON); /* change the range of axis1 */ hkl_axis_set_range_unit(axis1, -270, 180); hkl_axis_set_value_unit(axis1, 100); hkl_axis_set_value_unit(axis2, -75); HKL_ASSERT_DOUBLES_EQUAL(100*HKL_DEGTORAD, hkl_axis_get_value_closest(axis1, axis2), HKL_EPSILON); hkl_axis_set_value_unit(axis2, -85); HKL_ASSERT_DOUBLES_EQUAL(-260*HKL_DEGTORAD, hkl_axis_get_value_closest(axis1, axis2), HKL_EPSILON); hkl_axis_free(axis1); hkl_axis_free(axis2); return HKL_TEST_PASS; } HKL_TEST_SUITE_BEGIN HKL_TEST( new ); HKL_TEST( get_quaternions ); HKL_TEST( is_value_compatible_with_range ); HKL_TEST( set_value_smallest_in_range ); HKL_TEST( get_value_closest ); HKL_TEST_SUITE_END hkl-4.0.3/test/Makefile.in0000644000175000017500000004764111402652623012256 00000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ check_PROGRAMS = test$(EXEEXT) bench$(EXEEXT) subdir = test DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am_bench_OBJECTS = bench.$(OBJEXT) bench_OBJECTS = $(am_bench_OBJECTS) bench_LDADD = $(LDADD) am_test_OBJECTS = hkl-test-error.$(OBJEXT) \ hkl-test-pseudoaxis.$(OBJEXT) hkl-test-quaternion.$(OBJEXT) \ hkl-test-axis.$(OBJEXT) hkl-test-interval.$(OBJEXT) \ hkl-test-pseudoaxis-e4cv.$(OBJEXT) hkl-test-sample.$(OBJEXT) \ hkl-test.$(OBJEXT) hkl-test-lattice.$(OBJEXT) \ hkl-test-pseudoaxis-e6c.$(OBJEXT) hkl-test-source.$(OBJEXT) \ hkl-test-detector.$(OBJEXT) hkl-test-matrix.$(OBJEXT) \ hkl-test-pseudoaxis-k4cv.$(OBJEXT) hkl-test-vector.$(OBJEXT) \ hkl-test-geometry.$(OBJEXT) hkl-test-parameter.$(OBJEXT) \ hkl-test-pseudoaxis-k6c.$(OBJEXT) main.$(OBJEXT) test_OBJECTS = $(am_test_OBJECTS) test_LDADD = $(LDADD) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(bench_SOURCES) $(test_SOURCES) DIST_SOURCES = $(bench_SOURCES) $(test_SOURCES) ETAGS = etags CTAGS = ctags am__tty_colors = \ red=; grn=; lgn=; blu=; std= DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ GSL_CFLAGS = @GSL_CFLAGS@ GSL_CONFIG = @GSL_CONFIG@ GSL_LIBS = @GSL_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTKMM_CFLAGS = @GTKMM_CFLAGS@ GTKMM_LIBS = @GTKMM_LIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ TESTS = $(check_PROGRAMS) AM_CPPFLAGS = -std=c89 -ansi -pedantic -D_BSD_SOURCE \ -I$(top_srcdir) \ -I$(top_srcdir)/hkl AM_LDFLAGS = $(top_builddir)/hkl/libhkl.la $(GSL_LIBS) test_SOURCES = \ hkl-test.h \ hkl-test-error.c \ hkl-test-pseudoaxis.c \ hkl-test-quaternion.c \ hkl-test-axis.c \ hkl-test-interval.c \ hkl-test-pseudoaxis-e4cv.c \ hkl-test-sample.c \ hkl-test.c \ hkl-test-lattice.c \ hkl-test-pseudoaxis-e6c.c \ hkl-test-source.c \ hkl-test-detector.c \ hkl-test-matrix.c \ hkl-test-pseudoaxis-k4cv.c \ hkl-test-vector.c \ hkl-test-geometry.c \ hkl-test-parameter.c \ hkl-test-pseudoaxis-k6c.c \ main.c bench_SOURCES = \ bench.c all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu test/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-checkPROGRAMS: @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list bench$(EXEEXT): $(bench_OBJECTS) $(bench_DEPENDENCIES) @rm -f bench$(EXEEXT) $(LINK) $(bench_OBJECTS) $(bench_LDADD) $(LIBS) test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) @rm -f test$(EXEEXT) $(LINK) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bench.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-test-axis.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-test-detector.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-test-error.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-test-geometry.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-test-interval.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-test-lattice.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-test-matrix.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-test-parameter.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-test-pseudoaxis-e4cv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-test-pseudoaxis-e6c.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-test-pseudoaxis-k4cv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-test-pseudoaxis-k6c.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-test-pseudoaxis.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-test-quaternion.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-test-sample.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-test-source.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-test-vector.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkl-test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags check-TESTS: $(TESTS) @failed=0; all=0; xfail=0; xpass=0; skip=0; \ srcdir=$(srcdir); export srcdir; \ list=' $(TESTS) '; \ $(am__tty_colors); \ if test -n "$$list"; then \ for tst in $$list; do \ if test -f ./$$tst; then dir=./; \ elif test -f $$tst; then dir=; \ else dir="$(srcdir)/"; fi; \ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$tst[\ \ ]*) \ xpass=`expr $$xpass + 1`; \ failed=`expr $$failed + 1`; \ col=$$red; res=XPASS; \ ;; \ *) \ col=$$grn; res=PASS; \ ;; \ esac; \ elif test $$? -ne 77; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$tst[\ \ ]*) \ xfail=`expr $$xfail + 1`; \ col=$$lgn; res=XFAIL; \ ;; \ *) \ failed=`expr $$failed + 1`; \ col=$$red; res=FAIL; \ ;; \ esac; \ else \ skip=`expr $$skip + 1`; \ col=$$blu; res=SKIP; \ fi; \ echo "$${col}$$res$${std}: $$tst"; \ done; \ if test "$$all" -eq 1; then \ tests="test"; \ All=""; \ else \ tests="tests"; \ All="All "; \ fi; \ if test "$$failed" -eq 0; then \ if test "$$xfail" -eq 0; then \ banner="$$All$$all $$tests passed"; \ else \ if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ fi; \ else \ if test "$$xpass" -eq 0; then \ banner="$$failed of $$all $$tests failed"; \ else \ if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ fi; \ fi; \ dashes="$$banner"; \ skipped=""; \ if test "$$skip" -ne 0; then \ if test "$$skip" -eq 1; then \ skipped="($$skip test was not run)"; \ else \ skipped="($$skip tests were not run)"; \ fi; \ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$skipped"; \ fi; \ report=""; \ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ report="Please report to $(PACKAGE_BUGREPORT)"; \ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$report"; \ fi; \ dashes=`echo "$$dashes" | sed s/./=/g`; \ if test "$$failed" -eq 0; then \ echo "$$grn$$dashes"; \ else \ echo "$$red$$dashes"; \ fi; \ echo "$$banner"; \ test -z "$$skipped" || echo "$$skipped"; \ test -z "$$report" || echo "$$report"; \ echo "$$dashes$$std"; \ test "$$failed" -eq 0; \ else :; fi distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ clean-checkPROGRAMS clean-generic clean-libtool ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am # Support for GNU Flymake, in Emacs. check-syntax: AM_CFLAGS += -fsyntax-only -pipe check-syntax: test -z "$(CHK_SOURCES)" || $(COMPILE) $(CHK_SOURCES) .PHONY: check-syntax # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: hkl-4.0.3/test/hkl-test-interval.c0000644000175000017500000001671611402652607013733 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #define _GNU_SOURCE #include #include "hkl-test.h" #ifdef HKL_TEST_SUITE_NAME # undef HKL_TEST_SUITE_NAME #endif #define HKL_TEST_SUITE_NAME interval HKL_TEST_SUITE_FUNC(cmp) { HklInterval interval_ref = {-1, 1}; HklInterval interval; interval = interval_ref; HKL_ASSERT_EQUAL(HKL_TRUE, hkl_interval_cmp(&interval_ref, &interval)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(plus_interval) { HklInterval i_ref = {-2, 8}; HklInterval i1 = {-1, 4}; HklInterval i2 = {-1, 4}; hkl_interval_plus_interval(&i1, &i2); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_interval_cmp(&i_ref, &i1)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(plus_double) { HklInterval i_ref = {-1, 9}; HklInterval i1 = {-2, 8}; hkl_interval_plus_double(&i1, 1); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_interval_cmp(&i_ref, &i1)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(times_interval) { HklInterval i_ref = {-9, 36}; HklInterval i1 = {-1, 9}; HklInterval i2 = {-1, 4}; hkl_interval_times_interval(&i1, &i2); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_interval_cmp(&i_ref, &i1)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(times_double) { HklInterval i_ref = {-108, 27}; HklInterval i1 = {-9, 36}; hkl_interval_times_double(&i1, -3); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_interval_cmp(&i_ref, &i1)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(divides_double) { HklInterval i_ref = {-9, 36}; HklInterval i1 = {-108, 27}; hkl_interval_divides_double(&i1, -3); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_interval_cmp(&i_ref, &i1)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(contain_zero) { HklInterval i1 = {-9, 36}; HklInterval i2 = {-108, -27}; HKL_ASSERT_EQUAL(HKL_TRUE, hkl_interval_contain_zero(&i1)); HKL_ASSERT_EQUAL(HKL_FALSE, hkl_interval_contain_zero(&i2)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(cos) { /* we will test all 16 cases. */ /* we devide the trigonometric circle in 4 from quaters */ /* 0 [0, pi/2[ */ /* 1 [pi/2, pi[ */ /* 2 [pi, 3*pi/2[ */ /* 3 [3*pi/2, 2*pi[ */ HklInterval i_ref; HklInterval i; double min; double max; #define COS(a, b, min_ref, max_ref) do {\ i.min = min = a * HKL_DEGTORAD;\ i.max = max = b * HKL_DEGTORAD;\ i_ref.min = min_ref;\ i_ref.max = max_ref;\ hkl_interval_cos(&i);\ HKL_ASSERT_EQUAL(HKL_TRUE, hkl_interval_cmp(&i_ref, &i));\ } while(0) /* 1st max(0) */ /* min(0) */ COS(10, 14, cos(max), cos(min)); /* min(3) */ COS(-15, 14,cos(min), 1); /* min(2) */ COS(-95, 14, cos(min), 1); /* min(1) */ COS(-215, 14, -1, 1); /* 2nd max(1) */ /* min(0) */ COS(10, 100, cos(max), cos(min)); /* min(3) */ COS(-20, 100, cos(max), 1); /* min(2) */ COS(-110, 100, cos(min), 1); COS(-95, 100, cos(max), 1); /* min(1) */ COS(-190, 100,-1, 1); /* 3rd max(2) */ /* min(0) */ COS(10, 190, -1, cos(min)); /* min(3) */ COS(95, 190, -1, cos(min)); COS(175, 190, -1, cos(max)); /* min(2) */ COS(185, 190, cos(min), cos(max)); COS(-95, 190, -1, 1); /* min(1) */ COS(-45, 190, -1, 1); /* 4th max(3) */ /* min(0) */ COS(-350, -30, -1, cos(min)); COS(-310, -30, -1, cos(max)); /* min(3) */ COS(-40, -30, cos(min), cos(max)); COS(-370, -30, -1, 1); /* min(2) */ COS(-100, -30, cos(min), cos(max)); /* min(1) */ COS(-190, -30, -1, cos(max)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(acos) { HklInterval i_ref = {acos(.5), acos(-.5)}; HklInterval i = {-.5, .5}; hkl_interval_acos(&i); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_interval_cmp(&i_ref, &i)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(sin) { /* we will test all 16 cases. */ /* we devide the trigonometric circle in 4 from quaters */ /* 0 [0, pi/2[ */ /* 1 [pi/2, pi[ */ /* 2 [pi, 3*pi/2[ */ /* 3 [3*pi/2, 2*pi[ */ HklInterval i_ref; HklInterval i; double min, max; #define SIN(a,b, min_ref, max_ref) do {\ i.min = min = a * HKL_DEGTORAD;\ i.max = max = b * HKL_DEGTORAD;\ i_ref.min = min_ref;\ i_ref.max = max_ref;\ hkl_interval_sin(&i);\ HKL_ASSERT_EQUAL(HKL_TRUE, hkl_interval_cmp(&i_ref, &i));\ } while(0) /* 1st max(0) */ /* min(0) */ SIN(10, 14,sin(min), sin(max)); SIN(-275, 14, -1, 1); /* min(3) */ SIN(-15, 14, sin(min), sin(max)); /* min(2) */ SIN(-95, 14, -1, sin(max)); /* min(1) */ SIN(-185, 14, -1, sin(max)); SIN(-215, 14, -1, sin(min)); /* 2nd max(1) */ /* min(0) */ SIN(10, 100, sin(min), 1); SIN(85, 100, sin(max), 1); /* min(3) */ SIN(-20, 100, sin(min), 1); /* min(2) */ SIN(-110, 100, -1, 1); /* min(1) */ SIN(-190, 100, -1, 1); SIN(95, 100, sin(max), sin(min)); /* 3rd max(2) */ /* min(0) */ SIN(10, 190, sin(max), 1); /* min(3) */ SIN(95, 190, sin(max), sin(min)); /* min(2) */ SIN(-95, 190, -1, 1); SIN(185, 190, sin(max), sin(min)); /* min(1) */ SIN(-5, 190, sin(max), 1); SIN(-45, 190, sin(min), 1); /* 4th max(3) */ /* min(0); */ SIN(-350, -30, -1, 1); /* min(3); */ SIN(-40, -30, sin(min), sin(max)); SIN(-370, -30, -1, 1); /* min(2); */ SIN(-100, -30, -1, sin(max)); SIN(-170, -30, -1, sin(min)); /* min(1); */ SIN(-190, -30, -1, sin(min)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(asin) { HklInterval i_ref = {asin(-.5), asin(.5)}; HklInterval i = {-.5, .5}; hkl_interval_asin(&i); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_interval_cmp(&i_ref, &i)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(tan) { HklInterval i; HklInterval i_ref; double min, max; #define TAN(a,b, min_ref, max_ref) do {\ i.min = min = a * HKL_DEGTORAD;\ i.max = max = b * HKL_DEGTORAD;\ i_ref.min = min_ref;\ i_ref.max = max_ref;\ hkl_interval_tan(&i);\ HKL_ASSERT_EQUAL(HKL_TRUE, hkl_interval_cmp(&i_ref, &i));\ } while(0) TAN(-100, -89, -INFINITY, INFINITY); /* // The limit case is not yet ok TAN(-100, 11, 12, -90); r_ref.set(-hklconstantmathinfinity, tan(current), tan(consign), hklconstantmathinfinity); HKL_ASSERT_EQUAL(r_ref, r); */ return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(atan) { HklInterval i_ref = {atan(-10.), atan(10)}; HklInterval i = {-10, 10}; hkl_interval_atan(&i); HKL_ASSERT_EQUAL(HKL_TRUE, hkl_interval_cmp(&i_ref, &i)); return HKL_TEST_PASS; } HKL_TEST_SUITE_FUNC(length) { HklInterval interval; interval.min = 10; interval.max = 11; HKL_ASSERT_DOUBLES_EQUAL(1, hkl_interval_length(&interval), HKL_EPSILON); interval.min = -11; interval.max = -10; HKL_ASSERT_DOUBLES_EQUAL(1, hkl_interval_length(&interval), HKL_EPSILON); return HKL_TEST_PASS; } HKL_TEST_SUITE_BEGIN HKL_TEST( cmp ); HKL_TEST( plus_interval ); HKL_TEST( plus_double ); HKL_TEST( times_interval ); HKL_TEST( times_double ); HKL_TEST( divides_double ); HKL_TEST( contain_zero ); HKL_TEST( cos ); HKL_TEST( acos ); HKL_TEST( sin ); HKL_TEST( asin ); HKL_TEST( tan ); HKL_TEST( atan ); HKL_TEST( length ); HKL_TEST_SUITE_END hkl-4.0.3/configure0000755000175000017500000212672111402652624011141 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.65 for hkl 4.0.3. # # Report bugs to . # # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV export CONFIG_SHELL exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: picca@synchrotron-soleil.fr about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error ERROR [LINENO LOG_FD] # --------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with status $?, using 1 if that was 0. as_fn_error () { as_status=$?; test $as_status -eq 0 && as_status=1 if test "$3"; then as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 fi $as_echo "$as_me: error: $1" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in #( -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$lt_ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','` ;; esac ECHO=${lt_ECHO-echo} if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then # Yippee, $ECHO works! : else # Restart under the correct shell. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat <<_LT_EOF $* _LT_EOF exit 0 fi # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH if test -z "$lt_ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if { echo_test_string=`eval $cmd`; } 2>/dev/null && { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null then break fi done fi if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$ECHO" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. ECHO='print -r' elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} else # Try using printf. ECHO='printf %s\n' if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL ECHO="$CONFIG_SHELL $0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. ECHO=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. lt_ECHO=$ECHO if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" fi test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='hkl' PACKAGE_TARNAME='hkl' PACKAGE_VERSION='4.0.3' PACKAGE_STRING='hkl 4.0.3' PACKAGE_BUGREPORT='picca@synchrotron-soleil.fr' PACKAGE_URL='' ac_unique_file="config.h.in" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS GTKMM_LIBS GTKMM_CFLAGS GHKL_FALSE GHKL_TRUE GTK_DOC_USE_REBASE_FALSE GTK_DOC_USE_REBASE_TRUE GTK_DOC_USE_LIBTOOL_FALSE GTK_DOC_USE_LIBTOOL_TRUE GTK_DOC_BUILD_PDF_FALSE GTK_DOC_BUILD_PDF_TRUE GTK_DOC_BUILD_HTML_FALSE GTK_DOC_BUILD_HTML_TRUE ENABLE_GTK_DOC_FALSE ENABLE_GTK_DOC_TRUE PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG HTML_DIR GTKDOC_MKPDF GTKDOC_REBASE GTKDOC_CHECK LIBOBJS ALLOCA GSL_LIBS GSL_CFLAGS GSL_CONFIG CXXCPP OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL lt_ECHO RANLIB AR OBJDUMP NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED host_os host_vendor host_cpu host build_os build_vendor build_cpu build LIBTOOL LN_S CPP am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE ac_ct_CC CFLAGS CC am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CXX CPPFLAGS LDFLAGS CXXFLAGS CXX am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_dependency_tracking enable_shared enable_static with_pic enable_fast_install with_gnu_ld enable_libtool_lock with_gsl_prefix with_gsl_exec_prefix enable_gsltest with_html_dir enable_gtk_doc enable_gtk_doc_html enable_gtk_doc_pdf enable_ghkl ' ac_precious_vars='build_alias host_alias target_alias CXX CXXFLAGS LDFLAGS LIBS CPPFLAGS CCC CC CFLAGS CPP CXXCPP PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR GTKMM_CFLAGS GTKMM_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error "unrecognized option: \`$ac_option' Try \`$0 --help' for more information." ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures hkl 4.0.3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/hkl] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of hkl 4.0.3:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --disable-gsltest Do not try to compile and run a test GSL program --enable-gtk-doc use gtk-doc to build documentation [[default=no]] --enable-gtk-doc-html build documentation in html format [[default=yes]] --enable-gtk-doc-pdf build documentation in pdf format [[default=no]] --enable-ghkl turn on the ghkl gui [[default=yes]] Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic try to use only PIC/non-PIC objects [default=use both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-gsl-prefix=PFX Prefix where GSL is installed (optional) --with-gsl-exec-prefix=PFX Exec prefix where GSL is installed (optional) --with-html-dir=PATH path to installed docs Some influential environment variables: CXX C++ compiler command CXXFLAGS C++ compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CC C compiler command CFLAGS C compiler flags CPP C preprocessor CXXCPP C++ preprocessor PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path GTKMM_CFLAGS C compiler flags for GTKMM, overriding pkg-config GTKMM_LIBS linker flags for GTKMM, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF hkl configure 4.0.3 generated by GNU Autoconf 2.65 Copyright (C) 2009 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} } # ac_fn_c_check_header_compile # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} } # ac_fn_c_check_func # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} as_fn_set_status $ac_retval } # ac_fn_cxx_try_link # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} } # ac_fn_c_check_type # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( cat <<\_ASBOX ## ------------------------------------------ ## ## Report this to picca@synchrotron-soleil.fr ## ## ------------------------------------------ ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} } # ac_fn_c_check_header_mongrel cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by hkl $as_me 4.0.3, which was generated by GNU Autoconf 2.65. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX ## ------------------- ## ## File substitutions. ## ## ------------------- ## _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then ac_site_file1=$CONFIG_SITE elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers config.h" ac_aux_dir= for ac_dir in config "$srcdir"/config; do for ac_t in install-sh install.sh shtool; do if test -f "$ac_dir/$ac_t"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/$ac_t -c" break 2 fi done done if test -z "$ac_aux_dir"; then as_fn_error "cannot find install-sh, install.sh, or shtool in config \"$srcdir\"/config" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. am__api_version='1.11' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi test "$2" = conftest.file ) then # Ok. : else as_fn_error "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if test "${ac_cv_path_mkdir+set}" = set; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AWK+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE=hkl VERSION=4.0.3 cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. AMTAR=${AMTAR-"${am_missing_run}tar"} am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' # Checks for programs. ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CXX+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 $as_echo_n "checking whether the C++ compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { as_fn_set_status 77 as_fn_error "C++ compiler cannot create executables See \`config.log' for more details." "$LINENO" 5; }; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 $as_echo_n "checking for C++ compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if test "${ac_cv_objext+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "cannot compute suffix of object files: cannot compile See \`config.log' for more details." "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if test "${ac_cv_cxx_compiler_gnu+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if test "${ac_cv_prog_cxx_g+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AWK+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "no acceptable C compiler found in \$PATH See \`config.log' for more details." "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if test "${ac_cv_prog_cc_c89+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi case `pwd` in *\ * | *\ *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.2.6b' macro_revision='1.3017' ltmain="$ac_aux_dir/ltmain.sh" # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if test "${ac_cv_build+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if test "${ac_cv_host+set}" = set; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if test "${ac_cv_path_SED+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if test "${ac_cv_path_GREP+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if test "${ac_cv_path_EGREP+set}" = set; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if test "${ac_cv_path_FGREP+set}" = set; then : $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if test "${lt_cv_path_LD+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if test "${lt_cv_prog_gnu_ld+set}" = set; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if test "${lt_cv_path_NM+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$ac_tool_prefix"; then for ac_prog in "dumpbin -symbols" "link -dump -symbols" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_DUMPBIN+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in "dumpbin -symbols" "link -dump -symbols" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if test "${lt_cv_nm_interface+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:5320: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:5323: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:5326: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } # find the maximum length of command line arguments { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if test "${lt_cv_sys_max_cmd_len+set}" = set; then : $as_echo_n "(cached) " >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ = "XX$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 $as_echo "$xsi_shell" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 $as_echo_n "checking whether the shell understands \"+=\"... " >&6; } lt_shell_append=no ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 $as_echo "$lt_shell_append" >&6; } if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if test "${lt_cv_ld_reload_flag+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OBJDUMP+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if test "${lt_cv_deplibs_check_method+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AR+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AR="${ac_tool_prefix}ar" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_AR+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_AR="ar" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi else AR="$ac_cv_prog_AR" fi test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_RANLIB+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then : $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ const struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line 6521 "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if test "${lt_cv_cc_needs_belf+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_DSYMUTIL+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_NMEDIT+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_LIPO+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OTOOL+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OTOOL64+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if test "${lt_cv_apple_cc_single_mod+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if test "${lt_cv_ld_exported_symbols_list+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[012]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if test "${ac_cv_header_stdc+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " eval as_val=\$$as_ac_Header if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DLFCN_H 1 _ACEOF fi done ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CXX+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if test "${ac_cv_cxx_compiler_gnu+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if test "${ac_cv_prog_cxx_g+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if test "${ac_cv_prog_CXXCPP+set}" = set; then : $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} _lt_caught_CXX_error=yes; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu else _lt_caught_CXX_error=yes fi # Set options enable_dlopen=no enable_win32_dll=no # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=yes fi # Check whether --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; pic_mode="$withval" else pic_mode=default fi test -z "$pic_mode" && pic_mode=default # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if test "${lt_cv_objdir+set}" = set; then : $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag=' -fno-builtin' { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:8441: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:8445: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl*) # IBM XL C 8.0/Fortran 10.1 on PPC lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5 $as_echo "$lt_prog_compiler_pic" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if test "${lt_cv_prog_compiler_pic_works+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:8780: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:8784: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test "${lt_cv_prog_compiler_static_works+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:8885: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:8889: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:8940: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:8944: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_flag_spec_ld= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; linux* | k*bsd*-gnu) link_all_deplibs=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag= tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec= hardcode_libdir_flag_spec_ld='-rpath $libdir' archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi link_all_deplibs=no else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes=yes ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported whole_archive_flag_spec='' link_all_deplibs=yes allow_undefined_flag="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=echo archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld='+b $libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo(void) {} _ACEOF if ac_fn_c_try_link "$LINENO"; then : archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='${wl}-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='${wl}-z,text' allow_undefined_flag='${wl}-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='${wl}-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then archive_cmds_need_lc=no else archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc" >&5 $as_echo "$archive_cmds_need_lc" >&6; } ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` else lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink || test "$inherit_rpath" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = x""yes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = x""yes; then : lt_cv_dlopen="shl_load" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if test "${ac_cv_lib_dld_shl_load+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = x""yes; then : lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = x""yes; then : lt_cv_dlopen="dlopen" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = x""yes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if test "${ac_cv_lib_svld_dlopen+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = x""yes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if test "${ac_cv_lib_dld_dld_link+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = x""yes; then : lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if test "${lt_cv_dlopen_self+set}" = set; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line 11324 "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if test "${lt_cv_dlopen_self_static+set}" = set; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line 11420 "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report which library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= compiler_needs_object_CXX=no export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_flag_spec_ld_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no inherit_rpath_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC compiler_CXX=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if test "${lt_cv_path_LD+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if test "${lt_cv_prog_gnu_ld+set}" = set; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes file_list_spec_CXX='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec_CXX='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. always_export_symbols_CXX=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty # executable. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' ${wl}-bernotok' allow_undefined_flag_CXX=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' archive_cmds_need_lc_CXX=yes # This is similar to how AIX traditionally builds its shared # libraries. archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_CXX=no fi ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported whole_archive_flag_spec_CXX='' link_all_deplibs_CXX=yes allow_undefined_flag_CXX="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=echo archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" if test "$lt_cv_apple_cc_single_mod" != "yes"; then archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi else ld_shlibs_CXX=no fi ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd[12]*) # C++ shared libraries reported to be fairly broken before # switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; gnu*) ;; hpux9*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes; then archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: inherit_rpath_CXX=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [1-5]* | *pgcpp\ [1-5]*) prelink_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"' old_archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~ $RANLIB $oldlib' archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 will use weak symbols archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; xl*) # IBM XL 8.0 on PPC, with GNU ld hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object_CXX=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) ld_shlibs_CXX=yes ;; openbsd2*) # C++ shared libraries are fairly broken ld_shlibs_CXX=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no hardcode_direct_absolute_CXX=yes archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='${wl}-E' whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=echo else ld_shlibs_CXX=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) case $host in osf3*) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' ;; *) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' ;; esac hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' fi hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='${wl}-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_CXX='${wl}-z,text' allow_undefined_flag_CXX='${wl}-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" LD_CXX="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue else prev= fi if test "$pre_test_object_deps_done" = no; then case $p in -L* | -R*) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX="${prev}${p}" else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX="${prev}${p}" else postdeps_CXX="${postdeps_CXX} ${prev}${p}" fi fi ;; *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$predep_objects_CXX"; then predep_objects_CXX="$p" else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX="$p" else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $RM -f confest.$objext # PORTME: override above test on systems where it is broken case $host_os in interix[3-9]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac compiler_lib_search_dirs_CXX= if test -n "${compiler_lib_search_path_CXX}"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_CXX='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix[4-9]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; xlc* | xlC*) # IBM XL 8.0 on PPC lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-qpic' lt_prog_compiler_static_CXX='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_CXX" >&5 $as_echo "$lt_prog_compiler_pic_CXX" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if test "${lt_cv_prog_compiler_pic_works_CXX+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:13376: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:13380: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test "${lt_cv_prog_compiler_static_works_CXX+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then : else lt_prog_compiler_static_CXX= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:13475: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:13479: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:13527: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:13531: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' ;; linux* | k*bsd*-gnu) link_all_deplibs_CXX=no ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then archive_cmds_need_lc_CXX=no else archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc_CXX" >&5 $as_echo "$archive_cmds_need_lc_CXX" >&6; } ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || test "X$hardcode_automatic_CXX" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct_CXX" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && test "$hardcode_minus_L_CXX" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 $as_echo "$hardcode_action_CXX" >&6; } if test "$hardcode_action_CXX" = relink || test "$inherit_rpath_CXX" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi fi # test -n "$compiler" CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_commands="$ac_config_commands libtool" # Only expand once: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_RANLIB+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi # Checks for libraries. # Check whether --with-gsl-prefix was given. if test "${with_gsl_prefix+set}" = set; then : withval=$with_gsl_prefix; gsl_prefix="$withval" else gsl_prefix="" fi # Check whether --with-gsl-exec-prefix was given. if test "${with_gsl_exec_prefix+set}" = set; then : withval=$with_gsl_exec_prefix; gsl_exec_prefix="$withval" else gsl_exec_prefix="" fi # Check whether --enable-gsltest was given. if test "${enable_gsltest+set}" = set; then : enableval=$enable_gsltest; else enable_gsltest=yes fi if test "x${GSL_CONFIG+set}" != xset ; then if test "x$gsl_prefix" != x ; then GSL_CONFIG="$gsl_prefix/bin/gsl-config" fi if test "x$gsl_exec_prefix" != x ; then GSL_CONFIG="$gsl_exec_prefix/bin/gsl-config" fi fi # Extract the first word of "gsl-config", so it can be a program name with args. set dummy gsl-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_GSL_CONFIG+set}" = set; then : $as_echo_n "(cached) " >&6 else case $GSL_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_GSL_CONFIG="$GSL_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_GSL_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GSL_CONFIG" && ac_cv_path_GSL_CONFIG="no" ;; esac fi GSL_CONFIG=$ac_cv_path_GSL_CONFIG if test -n "$GSL_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GSL_CONFIG" >&5 $as_echo "$GSL_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi min_gsl_version=0.2.5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GSL - version >= $min_gsl_version" >&5 $as_echo_n "checking for GSL - version >= $min_gsl_version... " >&6; } no_gsl="" if test "$GSL_CONFIG" = "no" ; then no_gsl=yes else GSL_CFLAGS=`$GSL_CONFIG --cflags` GSL_LIBS=`$GSL_CONFIG --libs` gsl_major_version=`$GSL_CONFIG --version | \ sed 's/^\([0-9]*\).*/\1/'` if test "x${gsl_major_version}" = "x" ; then gsl_major_version=0 fi gsl_minor_version=`$GSL_CONFIG --version | \ sed 's/^\([0-9]*\)\.\{0,1\}\([0-9]*\).*/\2/'` if test "x${gsl_minor_version}" = "x" ; then gsl_minor_version=0 fi gsl_micro_version=`$GSL_CONFIG --version | \ sed 's/^\([0-9]*\)\.\{0,1\}\([0-9]*\)\.\{0,1\}\([0-9]*\).*/\3/'` if test "x${gsl_micro_version}" = "x" ; then gsl_micro_version=0 fi if test "x$enable_gsltest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GSL_CFLAGS" LIBS="$LIBS $GSL_LIBS" rm -f conf.gsltest if test "$cross_compiling" = yes; then : echo $ac_n "cross compiling; assumed OK... $ac_c" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include char* my_strdup (const char *str); char* my_strdup (const char *str) { char *new_str; if (str) { new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); strcpy (new_str, str); } else new_str = NULL; return new_str; } int main (void) { int major = 0, minor = 0, micro = 0; int n; char *tmp_version; system ("touch conf.gsltest"); /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = my_strdup("$min_gsl_version"); n = sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) ; if (n != 2 && n != 3) { printf("%s, bad version string\n", "$min_gsl_version"); exit(1); } if (($gsl_major_version > major) || (($gsl_major_version == major) && ($gsl_minor_version > minor)) || (($gsl_major_version == major) && ($gsl_minor_version == minor) && ($gsl_micro_version >= micro))) { exit(0); } else { exit(1); } } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else no_gsl=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_gsl" = x ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } : else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if test "$GSL_CONFIG" = "no" ; then echo "*** The gsl-config script installed by GSL could not be found" echo "*** If GSL was installed in PREFIX, make sure PREFIX/bin is in" echo "*** your path, or set the GSL_CONFIG environment variable to the" echo "*** full path to gsl-config." else if test -f conf.gsltest ; then : else echo "*** Could not run GSL test program, checking why..." CFLAGS="$CFLAGS $GSL_CFLAGS" LIBS="$LIBS $GSL_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { return 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GSL or finding the wrong" echo "*** version of GSL. If it is not finding GSL, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" else echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means GSL was incorrectly installed" echo "*** or that you have moved GSL since it was installed. In the latter case, you" echo "*** may want to edit the gsl-config script: $GSL_CONFIG" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi # GSL_CFLAGS="" # GSL_LIBS="" : fi rm -f conf.gsltest # Checks for header files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5 $as_echo_n "checking for stdbool.h that conforms to C99... " >&6; } if test "${ac_cv_header_stdbool_h+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifndef bool "error: bool is not defined" #endif #ifndef false "error: false is not defined" #endif #if false "error: false is not 0" #endif #ifndef true "error: true is not defined" #endif #if true != 1 "error: true is not 1" #endif #ifndef __bool_true_false_are_defined "error: __bool_true_false_are_defined is not defined" #endif struct s { _Bool s: 1; _Bool t; } s; char a[true == 1 ? 1 : -1]; char b[false == 0 ? 1 : -1]; char c[__bool_true_false_are_defined == 1 ? 1 : -1]; char d[(bool) 0.5 == true ? 1 : -1]; bool e = &s; char f[(_Bool) 0.0 == false ? 1 : -1]; char g[true]; char h[sizeof (_Bool)]; char i[sizeof s.t]; enum { j = false, k = true, l = false * true, m = true * 256 }; /* The following fails for HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ _Bool n[m]; char o[sizeof n == m * sizeof n[0] ? 1 : -1]; char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; # if defined __xlc__ || defined __GNUC__ /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0 reported by James Lemley on 2005-10-05; see http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html This test is not quite right, since xlc is allowed to reject this program, as the initializer for xlcbug is not one of the forms that C requires support for. However, doing the test right would require a runtime test, and that would make cross-compilation harder. Let us hope that IBM fixes the xlc bug, and also adds support for this kind of constant expression. In the meantime, this test will reject xlc, which is OK, since our stdbool.h substitute should suffice. We also test this with GCC, where it should work, to detect more quickly whether someone messes up the test in the future. */ char digs[] = "0123456789"; int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1); # endif /* Catch a bug in an HP-UX C compiler. See http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html */ _Bool q = true; _Bool *pq = &q; int main () { *pq |= q; *pq |= ! q; /* Refer to every declared value, to avoid compiler optimizations. */ return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l + !m + !n + !o + !p + !q + !pq); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdbool_h=yes else ac_cv_header_stdbool_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 $as_echo "$ac_cv_header_stdbool_h" >&6; } ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" if test "x$ac_cv_type__Bool" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE__BOOL 1 _ACEOF fi if test $ac_cv_header_stdbool_h = yes; then $as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if test "${ac_cv_header_stdc+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 $as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } if test "${ac_cv_header_time+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { if ((struct tm *) 0) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_time=yes else ac_cv_header_time=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 $as_echo "$ac_cv_header_time" >&6; } if test $ac_cv_header_time = yes; then $as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h fi for ac_header in float.h stdlib.h string.h sys/time.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" eval as_val=\$$as_ac_Header if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Checks for typedefs, structures, and compiler characteristics. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if test "${ac_cv_c_const+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { /* FIXME: Include the comments suggested by Paul. */ #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; const charset cs; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this. */ char *t; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; }; struct s *b; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "#define const /**/" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 $as_echo_n "checking for inline... " >&6; } if test "${ac_cv_c_inline+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; static $ac_kw foo_t static_foo () {return 0; } $ac_kw foo_t foo () {return 0; } #endif _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_inline=$ac_kw fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext test "$ac_cv_c_inline" != no && break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 $as_echo "$ac_cv_c_inline" >&6; } case $ac_cv_c_inline in inline | yes) ;; *) case $ac_cv_c_inline in no) ac_val=;; *) ac_val=$ac_cv_c_inline;; esac cat >>confdefs.h <<_ACEOF #ifndef __cplusplus #define inline $ac_val #endif _ACEOF ;; esac ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = x""yes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi # Checks for library functions. # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 $as_echo_n "checking for working alloca.h... " >&6; } if test "${ac_cv_working_alloca_h+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { char *p = (char *) alloca (2 * sizeof (int)); if (p) return 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_working_alloca_h=yes else ac_cv_working_alloca_h=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 $as_echo "$ac_cv_working_alloca_h" >&6; } if test $ac_cv_working_alloca_h = yes; then $as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 $as_echo_n "checking for alloca... " >&6; } if test "${ac_cv_func_alloca_works+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __GNUC__ # define alloca __builtin_alloca #else # ifdef _MSC_VER # include # define alloca _alloca # else # ifdef HAVE_ALLOCA_H # include # else # ifdef _AIX #pragma alloca # else # ifndef alloca /* predefined by HP cc +Olibcalls */ char *alloca (); # endif # endif # endif # endif #endif int main () { char *p = (char *) alloca (1); if (p) return 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_func_alloca_works=yes else ac_cv_func_alloca_works=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 $as_echo "$ac_cv_func_alloca_works" >&6; } if test $ac_cv_func_alloca_works = yes; then $as_echo "#define HAVE_ALLOCA 1" >>confdefs.h else # The SVR3 libPW and SVR4 libucb both contain incompatible functions # that cause trouble. Some versions do not even contain alloca or # contain a buggy version. If you still want to use their alloca, # use ar to extract alloca.o from them instead of compiling alloca.c. ALLOCA=\${LIBOBJDIR}alloca.$ac_objext $as_echo "#define C_ALLOCA 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5 $as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } if test "${ac_cv_os_cray+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined CRAY && ! defined CRAY2 webecray #else wenotbecray #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "webecray" >/dev/null 2>&1; then : ac_cv_os_cray=yes else ac_cv_os_cray=no fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5 $as_echo "$ac_cv_os_cray" >&6; } if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" eval as_val=\$$as_ac_var if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF #define CRAY_STACKSEG_END $ac_func _ACEOF break fi done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 $as_echo_n "checking stack direction for C alloca... " >&6; } if test "${ac_cv_c_stack_direction+set}" = set; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_c_stack_direction=0 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int find_stack_direction () { static char *addr = 0; auto char dummy; if (addr == 0) { addr = &dummy; return find_stack_direction (); } else return (&dummy > addr) ? 1 : -1; } int main () { return find_stack_direction () < 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_c_stack_direction=1 else ac_cv_c_stack_direction=-1 fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 $as_echo "$ac_cv_c_stack_direction" >&6; } cat >>confdefs.h <<_ACEOF #define STACK_DIRECTION $ac_cv_c_stack_direction _ACEOF fi for ac_header in stdlib.h do : ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" if test "x$ac_cv_header_stdlib_h" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STDLIB_H 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5 $as_echo_n "checking for GNU libc compatible malloc... " >&6; } if test "${ac_cv_func_malloc_0_nonnull+set}" = set; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_malloc_0_nonnull=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined STDC_HEADERS || defined HAVE_STDLIB_H # include #else char *malloc (); #endif int main () { return ! malloc (0); ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_malloc_0_nonnull=yes else ac_cv_func_malloc_0_nonnull=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5 $as_echo "$ac_cv_func_malloc_0_nonnull" >&6; } if test $ac_cv_func_malloc_0_nonnull = yes; then : $as_echo "#define HAVE_MALLOC 1" >>confdefs.h else $as_echo "#define HAVE_MALLOC 0" >>confdefs.h case " $LIBOBJS " in *" malloc.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS malloc.$ac_objext" ;; esac $as_echo "#define malloc rpl_malloc" >>confdefs.h fi for ac_header in stdlib.h do : ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" if test "x$ac_cv_header_stdlib_h" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STDLIB_H 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible realloc" >&5 $as_echo_n "checking for GNU libc compatible realloc... " >&6; } if test "${ac_cv_func_realloc_0_nonnull+set}" = set; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_realloc_0_nonnull=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined STDC_HEADERS || defined HAVE_STDLIB_H # include #else char *realloc (); #endif int main () { return ! realloc (0, 0); ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_realloc_0_nonnull=yes else ac_cv_func_realloc_0_nonnull=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_realloc_0_nonnull" >&5 $as_echo "$ac_cv_func_realloc_0_nonnull" >&6; } if test $ac_cv_func_realloc_0_nonnull = yes; then : $as_echo "#define HAVE_REALLOC 1" >>confdefs.h else $as_echo "#define HAVE_REALLOC 0" >>confdefs.h case " $LIBOBJS " in *" realloc.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS realloc.$ac_objext" ;; esac $as_echo "#define realloc rpl_realloc" >>confdefs.h fi for ac_func in vprintf do : ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf" if test "x$ac_cv_func_vprintf" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_VPRINTF 1 _ACEOF ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt" if test "x$ac_cv_func__doprnt" = x""yes; then : $as_echo "#define HAVE_DOPRNT 1" >>confdefs.h fi fi done for ac_func in floor gettimeofday memmove memset sqrt strdup do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" eval as_val=\$$as_ac_var if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done # gtk-doc if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_PKG_CONFIG+set}" = set; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi # Extract the first word of "gtkdoc-check", so it can be a program name with args. set dummy gtkdoc-check; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_GTKDOC_CHECK+set}" = set; then : $as_echo_n "(cached) " >&6 else case $GTKDOC_CHECK in [\\/]* | ?:[\\/]*) ac_cv_path_GTKDOC_CHECK="$GTKDOC_CHECK" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_GTKDOC_CHECK="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi GTKDOC_CHECK=$ac_cv_path_GTKDOC_CHECK if test -n "$GTKDOC_CHECK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_CHECK" >&5 $as_echo "$GTKDOC_CHECK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi for ac_prog in gtkdoc-rebase do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_GTKDOC_REBASE+set}" = set; then : $as_echo_n "(cached) " >&6 else case $GTKDOC_REBASE in [\\/]* | ?:[\\/]*) ac_cv_path_GTKDOC_REBASE="$GTKDOC_REBASE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_GTKDOC_REBASE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi GTKDOC_REBASE=$ac_cv_path_GTKDOC_REBASE if test -n "$GTKDOC_REBASE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_REBASE" >&5 $as_echo "$GTKDOC_REBASE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$GTKDOC_REBASE" && break done test -n "$GTKDOC_REBASE" || GTKDOC_REBASE="true" # Extract the first word of "gtkdoc-mkpdf", so it can be a program name with args. set dummy gtkdoc-mkpdf; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_GTKDOC_MKPDF+set}" = set; then : $as_echo_n "(cached) " >&6 else case $GTKDOC_MKPDF in [\\/]* | ?:[\\/]*) ac_cv_path_GTKDOC_MKPDF="$GTKDOC_MKPDF" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_GTKDOC_MKPDF="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi GTKDOC_MKPDF=$ac_cv_path_GTKDOC_MKPDF if test -n "$GTKDOC_MKPDF"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_MKPDF" >&5 $as_echo "$GTKDOC_MKPDF" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Check whether --with-html-dir was given. if test "${with_html_dir+set}" = set; then : withval=$with_html_dir; else with_html_dir='${datadir}/gtk-doc/html' fi HTML_DIR="$with_html_dir" # Check whether --enable-gtk-doc was given. if test "${enable_gtk_doc+set}" = set; then : enableval=$enable_gtk_doc; else enable_gtk_doc=no fi if test x$enable_gtk_doc = xyes; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk-doc >= 1.9\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk-doc >= 1.9") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : else as_fn_error "You need to have gtk-doc >= 1.9 installed to build $PACKAGE_NAME" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build gtk-doc documentation" >&5 $as_echo_n "checking whether to build gtk-doc documentation... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_gtk_doc" >&5 $as_echo "$enable_gtk_doc" >&6; } # Check whether --enable-gtk-doc-html was given. if test "${enable_gtk_doc_html+set}" = set; then : enableval=$enable_gtk_doc_html; else enable_gtk_doc_html=yes fi # Check whether --enable-gtk-doc-pdf was given. if test "${enable_gtk_doc_pdf+set}" = set; then : enableval=$enable_gtk_doc_pdf; else enable_gtk_doc_pdf=no fi if test -z "$GTKDOC_MKPDF"; then enable_gtk_doc_pdf=no fi if test x$enable_gtk_doc = xyes; then ENABLE_GTK_DOC_TRUE= ENABLE_GTK_DOC_FALSE='#' else ENABLE_GTK_DOC_TRUE='#' ENABLE_GTK_DOC_FALSE= fi if test x$enable_gtk_doc_html = xyes; then GTK_DOC_BUILD_HTML_TRUE= GTK_DOC_BUILD_HTML_FALSE='#' else GTK_DOC_BUILD_HTML_TRUE='#' GTK_DOC_BUILD_HTML_FALSE= fi if test x$enable_gtk_doc_pdf = xyes; then GTK_DOC_BUILD_PDF_TRUE= GTK_DOC_BUILD_PDF_FALSE='#' else GTK_DOC_BUILD_PDF_TRUE='#' GTK_DOC_BUILD_PDF_FALSE= fi if test -n "$LIBTOOL"; then GTK_DOC_USE_LIBTOOL_TRUE= GTK_DOC_USE_LIBTOOL_FALSE='#' else GTK_DOC_USE_LIBTOOL_TRUE='#' GTK_DOC_USE_LIBTOOL_FALSE= fi if test -n "$GTKDOC_REBASE"; then GTK_DOC_USE_REBASE_TRUE= GTK_DOC_USE_REBASE_FALSE='#' else GTK_DOC_USE_REBASE_TRUE='#' GTK_DOC_USE_REBASE_FALSE= fi # add an option for the ghkl build # Check whether --enable-ghkl was given. if test "${enable_ghkl+set}" = set; then : enableval=$enable_ghkl; case "${enableval}" in yes) ghkl=true ;; no) ghkl=false ;; *) as_fn_error "bad value ${enableval} for --enable-ghkl" "$LINENO" 5 ;; esac else ghkl=true fi if test x$ghkl = xtrue; then GHKL_TRUE= GHKL_FALSE='#' else GHKL_TRUE='#' GHKL_FALSE= fi # gtkmm + glademm if test x$ghkl = xtrue; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTKMM" >&5 $as_echo_n "checking for GTKMM... " >&6; } if test -n "$GTKMM_CFLAGS"; then pkg_cv_GTKMM_CFLAGS="$GTKMM_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtkmm-2.4 >= 2.18\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtkmm-2.4 >= 2.18") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTKMM_CFLAGS=`$PKG_CONFIG --cflags "gtkmm-2.4 >= 2.18" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTKMM_LIBS"; then pkg_cv_GTKMM_LIBS="$GTKMM_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtkmm-2.4 >= 2.18\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtkmm-2.4 >= 2.18") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTKMM_LIBS=`$PKG_CONFIG --libs "gtkmm-2.4 >= 2.18" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTKMM_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gtkmm-2.4 >= 2.18" 2>&1` else GTKMM_PKG_ERRORS=`$PKG_CONFIG --print-errors "gtkmm-2.4 >= 2.18" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTKMM_PKG_ERRORS" >&5 as_fn_error "Package requirements (gtkmm-2.4 >= 2.18) were not met: $GTKMM_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GTKMM_CFLAGS and GTKMM_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GTKMM_CFLAGS and GTKMM_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." "$LINENO" 5; } else GTKMM_CFLAGS=$pkg_cv_GTKMM_CFLAGS GTKMM_LIBS=$pkg_cv_GTKMM_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi fi ac_config_files="$ac_config_files Makefile hkl/Makefile test/Makefile hkl.pc Documentation/Makefile Documentation/api/Makefile gui/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then test "x$cache_file" != "x/dev/null" && { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_GTK_DOC_TRUE}" && test -z "${ENABLE_GTK_DOC_FALSE}"; then as_fn_error "conditional \"ENABLE_GTK_DOC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GTK_DOC_BUILD_HTML_TRUE}" && test -z "${GTK_DOC_BUILD_HTML_FALSE}"; then as_fn_error "conditional \"GTK_DOC_BUILD_HTML\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GTK_DOC_BUILD_PDF_TRUE}" && test -z "${GTK_DOC_BUILD_PDF_FALSE}"; then as_fn_error "conditional \"GTK_DOC_BUILD_PDF\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GTK_DOC_USE_LIBTOOL_TRUE}" && test -z "${GTK_DOC_USE_LIBTOOL_FALSE}"; then as_fn_error "conditional \"GTK_DOC_USE_LIBTOOL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GTK_DOC_USE_REBASE_TRUE}" && test -z "${GTK_DOC_USE_REBASE_FALSE}"; then as_fn_error "conditional \"GTK_DOC_USE_REBASE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GHKL_TRUE}" && test -z "${GHKL_FALSE}"; then as_fn_error "conditional \"GHKL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : ${CONFIG_STATUS=./config.status} ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error ERROR [LINENO LOG_FD] # --------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with status $?, using 1 if that was 0. as_fn_error () { as_status=$?; test $as_status -eq 0 && as_status=1 if test "$3"; then as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 fi $as_echo "$as_me: error: $1" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in #( -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by hkl $as_me 4.0.3, which was generated by GNU Autoconf 2.65. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ hkl config.status 4.0.3 configured by $0, generated by GNU Autoconf 2.65, with options \\"\$ac_cs_config\\" Copyright (C) 2009 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`' macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`' enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`' enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`' pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`' host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`' host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`' host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`' build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`' build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`' build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`' SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`' Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`' GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`' EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`' FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`' LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`' NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`' LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`' ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`' exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`' lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`' STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`' RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`' CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`' compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`' GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`' NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`' LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`' OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`' OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`' libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`' fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`' include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`' file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`' version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`' runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`' libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`' library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`' soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`' finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`' sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`' hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`' old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`' striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`' compiler_lib_search_dirs='`$ECHO "X$compiler_lib_search_dirs" | $Xsed -e "$delay_single_quote_subst"`' predep_objects='`$ECHO "X$predep_objects" | $Xsed -e "$delay_single_quote_subst"`' postdep_objects='`$ECHO "X$postdep_objects" | $Xsed -e "$delay_single_quote_subst"`' predeps='`$ECHO "X$predeps" | $Xsed -e "$delay_single_quote_subst"`' postdeps='`$ECHO "X$postdeps" | $Xsed -e "$delay_single_quote_subst"`' compiler_lib_search_path='`$ECHO "X$compiler_lib_search_path" | $Xsed -e "$delay_single_quote_subst"`' LD_CXX='`$ECHO "X$LD_CXX" | $Xsed -e "$delay_single_quote_subst"`' old_archive_cmds_CXX='`$ECHO "X$old_archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' compiler_CXX='`$ECHO "X$compiler_CXX" | $Xsed -e "$delay_single_quote_subst"`' GCC_CXX='`$ECHO "X$GCC_CXX" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "X$lt_prog_compiler_no_builtin_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_wl_CXX='`$ECHO "X$lt_prog_compiler_wl_CXX" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_pic_CXX='`$ECHO "X$lt_prog_compiler_pic_CXX" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_static_CXX='`$ECHO "X$lt_prog_compiler_static_CXX" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_CXX='`$ECHO "X$lt_cv_prog_compiler_c_o_CXX" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds_need_lc_CXX='`$ECHO "X$archive_cmds_need_lc_CXX" | $Xsed -e "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_CXX='`$ECHO "X$enable_shared_with_static_runtimes_CXX" | $Xsed -e "$delay_single_quote_subst"`' export_dynamic_flag_spec_CXX='`$ECHO "X$export_dynamic_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' whole_archive_flag_spec_CXX='`$ECHO "X$whole_archive_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' compiler_needs_object_CXX='`$ECHO "X$compiler_needs_object_CXX" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_new_cmds_CXX='`$ECHO "X$old_archive_from_new_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_CXX='`$ECHO "X$old_archive_from_expsyms_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds_CXX='`$ECHO "X$archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' archive_expsym_cmds_CXX='`$ECHO "X$archive_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' module_cmds_CXX='`$ECHO "X$module_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' module_expsym_cmds_CXX='`$ECHO "X$module_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' with_gnu_ld_CXX='`$ECHO "X$with_gnu_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`' allow_undefined_flag_CXX='`$ECHO "X$allow_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' no_undefined_flag_CXX='`$ECHO "X$no_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_CXX='`$ECHO "X$hardcode_libdir_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_ld_CXX='`$ECHO "X$hardcode_libdir_flag_spec_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_separator_CXX='`$ECHO "X$hardcode_libdir_separator_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct_CXX='`$ECHO "X$hardcode_direct_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct_absolute_CXX='`$ECHO "X$hardcode_direct_absolute_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_minus_L_CXX='`$ECHO "X$hardcode_minus_L_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_shlibpath_var_CXX='`$ECHO "X$hardcode_shlibpath_var_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_automatic_CXX='`$ECHO "X$hardcode_automatic_CXX" | $Xsed -e "$delay_single_quote_subst"`' inherit_rpath_CXX='`$ECHO "X$inherit_rpath_CXX" | $Xsed -e "$delay_single_quote_subst"`' link_all_deplibs_CXX='`$ECHO "X$link_all_deplibs_CXX" | $Xsed -e "$delay_single_quote_subst"`' fix_srcfile_path_CXX='`$ECHO "X$fix_srcfile_path_CXX" | $Xsed -e "$delay_single_quote_subst"`' always_export_symbols_CXX='`$ECHO "X$always_export_symbols_CXX" | $Xsed -e "$delay_single_quote_subst"`' export_symbols_cmds_CXX='`$ECHO "X$export_symbols_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' exclude_expsyms_CXX='`$ECHO "X$exclude_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`' include_expsyms_CXX='`$ECHO "X$include_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`' prelink_cmds_CXX='`$ECHO "X$prelink_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' file_list_spec_CXX='`$ECHO "X$file_list_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_action_CXX='`$ECHO "X$hardcode_action_CXX" | $Xsed -e "$delay_single_quote_subst"`' compiler_lib_search_dirs_CXX='`$ECHO "X$compiler_lib_search_dirs_CXX" | $Xsed -e "$delay_single_quote_subst"`' predep_objects_CXX='`$ECHO "X$predep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`' postdep_objects_CXX='`$ECHO "X$postdep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`' predeps_CXX='`$ECHO "X$predeps_CXX" | $Xsed -e "$delay_single_quote_subst"`' postdeps_CXX='`$ECHO "X$postdeps_CXX" | $Xsed -e "$delay_single_quote_subst"`' compiler_lib_search_path_CXX='`$ECHO "X$compiler_lib_search_path_CXX" | $Xsed -e "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # Quote evaled strings. for var in SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ AR \ AR_FLAGS \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ SHELL \ ECHO \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_wl \ lt_prog_compiler_pic \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_flag_spec_ld \ hardcode_libdir_separator \ fix_srcfile_path \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ finish_eval \ old_striplib \ striplib \ compiler_lib_search_dirs \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ LD_CXX \ compiler_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_static_CXX \ lt_cv_prog_compiler_c_o_CXX \ export_dynamic_flag_spec_CXX \ whole_archive_flag_spec_CXX \ compiler_needs_object_CXX \ with_gnu_ld_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_flag_spec_ld_CXX \ hardcode_libdir_separator_CXX \ fix_srcfile_path_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX \ file_list_spec_CXX \ compiler_lib_search_dirs_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX; do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ export_symbols_cmds_CXX \ prelink_cmds_CXX; do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Fix-up fallback echo if it was mangled by the above quoting rules. case \$lt_ECHO in *'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\` ;; esac ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "hkl/Makefile") CONFIG_FILES="$CONFIG_FILES hkl/Makefile" ;; "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; "hkl.pc") CONFIG_FILES="$CONFIG_FILES hkl.pc" ;; "Documentation/Makefile") CONFIG_FILES="$CONFIG_FILES Documentation/Makefile" ;; "Documentation/api/Makefile") CONFIG_FILES="$CONFIG_FILES Documentation/api/Makefile" ;; "gui/Makefile") CONFIG_FILES="$CONFIG_FILES gui/Makefile" ;; *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= trap 'exit_status=$? { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5 # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ || as_fn_error "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/ s/:*\${srcdir}:*/:/ s/:*@srcdir@:*/:/ s/^\([^=]*=[ ]*\):*/\1/ s/:*$// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_t=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_t"; then break elif $ac_last_try; then as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$tmp/stdin" \ || as_fn_error "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ || as_fn_error "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&2;} rm -f "$tmp/stdin" case $ac_file in -) cat "$tmp/out" && rm -f "$tmp/out";; *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; esac \ || as_fn_error "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" } >"$tmp/config.h" \ || as_fn_error "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$tmp/config.h" "$ac_file" \ || as_fn_error "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "libtool":C) # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # The names of the tagged configurations supported by this script. available_tags="CXX " # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == "file_magic". file_magic_cmd=$lt_file_magic_cmd # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # The name of the directory that contains temporary libtool files. objdir=$objdir # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that does not interpret backslashes. ECHO=$lt_ECHO # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # If ld is used when linking, flag to hardcode \$libdir into a binary # during linking. This must work even if \$libdir does not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects postdep_objects=$lt_postdep_objects predeps=$lt_predeps postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain="$ac_aux_dir/ltmain.sh" # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) case $xsi_shell in yes) cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac } # func_basename file func_basename () { func_basename_result="${1##*/}" } # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}" } # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). func_stripname () { # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"} } # func_opt_split func_opt_split () { func_opt_split_opt=${1%%=*} func_opt_split_arg=${1#*=} } # func_lo2o object func_lo2o () { case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac } # func_xform libobj-or-source func_xform () { func_xform_result=${1%.*}.lo } # func_arith arithmetic-term... func_arith () { func_arith_result=$(( $* )) } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=${#1} } _LT_EOF ;; *) # Bourne compatible functions. cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_basename file func_basename () { func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` } # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; esac } # sed scripts: my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' my_sed_long_arg='1s/^-[^=]*=//' # func_opt_split func_opt_split () { func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` } # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` } # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` } # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "$@"` } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } _LT_EOF esac case $lt_shell_append in yes) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$1+=\$2" } _LT_EOF ;; *) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$1=\$$1\$2" } _LT_EOF ;; esac sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: CXX # The linker used to build libraries. LD=$lt_LD_CXX # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_CXX # A language specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU compiler? with_gcc=$GCC_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_CXX # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_CXX # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # If ld is used when linking, flag to hardcode \$libdir into a binary # during linking. This must work even if \$libdir does not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_CXX # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic_CXX # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_CXX # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path_CXX # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_CXX # Specify filename containing input files. file_list_spec=$lt_file_list_spec_CXX # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_CXX postdep_objects=$lt_postdep_objects_CXX predeps=$lt_predeps_CXX postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # ### END LIBTOOL TAG CONFIG: CXX _LT_EOF ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit $? fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi hkl-4.0.3/gtk-doc.make0000644000175000017500000001567111375731447011432 00000000000000# -*- mode: makefile -*- #################################### # Everything below here is generic # #################################### if GTK_DOC_USE_LIBTOOL GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) GTKDOC_RUN = $(LIBTOOL) --mode=execute else GTKDOC_CC = $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) GTKDOC_LD = $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) GTKDOC_RUN = endif # We set GPATH here; this gives us semantics for GNU make # which are more like other make's VPATH, when it comes to # whether a source that is a target of one rule is then # searched for in VPATH/GPATH. # GPATH = $(srcdir) TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE) EXTRA_DIST = \ $(content_files) \ $(HTML_IMAGES) \ $(DOC_MAIN_SGML_FILE) \ $(DOC_MODULE)-sections.txt \ $(DOC_MODULE)-overrides.txt DOC_STAMPS=scan-build.stamp tmpl-build.stamp sgml-build.stamp html-build.stamp \ pdf-build.stamp \ $(srcdir)/tmpl.stamp $(srcdir)/sgml.stamp $(srcdir)/html.stamp \ $(srcdir)/pdf.stamp SCANOBJ_FILES = \ $(DOC_MODULE).args \ $(DOC_MODULE).hierarchy \ $(DOC_MODULE).interfaces \ $(DOC_MODULE).prerequisites \ $(DOC_MODULE).signals REPORT_FILES = \ $(DOC_MODULE)-undocumented.txt \ $(DOC_MODULE)-undeclared.txt \ $(DOC_MODULE)-unused.txt CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) if ENABLE_GTK_DOC if GTK_DOC_BUILD_HTML HTML_BUILD_STAMP=html-build.stamp else HTML_BUILD_STAMP= endif if GTK_DOC_BUILD_PDF PDF_BUILD_STAMP=pdf-build.stamp else PDF_BUILD_STAMP= endif all-local: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) else all-local: endif docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) $(REPORT_FILES): sgml-build.stamp #### scan #### scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB) @echo 'gtk-doc: Scanning header files' @-chmod -R u+w $(srcdir) @_source_dir='' ; for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ cd $(srcdir) && \ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) @if grep -l '^..*$$' $(srcdir)/$(DOC_MODULE).types > /dev/null 2>&1 ; then \ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" gtkdoc-scangobj $(SCANGOBJ_OPTIONS) --module=$(DOC_MODULE) --output-dir=$(srcdir) ; \ else \ cd $(srcdir) ; \ for i in $(SCANOBJ_FILES) ; do \ test -f $$i || touch $$i ; \ done \ fi @touch scan-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp @true #### templates #### tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt @echo 'gtk-doc: Rebuilding template files' @-chmod -R u+w $(srcdir) @cd $(srcdir) && gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS) @touch tmpl-build.stamp tmpl.stamp: tmpl-build.stamp @true $(srcdir)/tmpl/*.sgml: @true #### xml #### sgml-build.stamp: tmpl.stamp $(DOC_MODULE)-sections.txt $(srcdir)/tmpl/*.sgml $(expand_content_files) @echo 'gtk-doc: Building XML' @-chmod -R u+w $(srcdir) @_source_dir='' ; for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ cd $(srcdir) && \ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) @touch sgml-build.stamp sgml.stamp: sgml-build.stamp @true #### html #### html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) @echo 'gtk-doc: Building HTML' @-chmod -R u+w $(srcdir) @rm -rf $(srcdir)/html @mkdir $(srcdir)/html @mkhtml_options=""; \ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \ if test "$(?)" = "0"; then \ mkhtml_options=--path="$(srcdir)"; \ fi; \ cd $(srcdir)/html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) @test "x$(HTML_IMAGES)" = "x" || ( cd $(srcdir) && cp $(HTML_IMAGES) html ) @echo 'gtk-doc: Fixing cross-references' @cd $(srcdir) && gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) @touch html-build.stamp #### pdf #### pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) @echo 'gtk-doc: Building PDF' @-chmod -R u+w $(srcdir) @rm -rf $(srcdir)/$(DOC_MODULE).pdf @mkpdf_imgdirs=""; \ if test "x$(HTML_IMAGES)" != "x"; then \ for img in $(HTML_IMAGES); do \ part=`dirname $$img`; \ echo $$mkpdf_imgdirs | grep >/dev/null "\-\-imgdir=$$part "; \ if test $$? != 0; then \ mkpdf_imgdirs="$$mkpdf_imgdirs --imgdir=$$part"; \ fi; \ done; \ fi; \ cd $(srcdir) && gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_imgdirs $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS) @touch pdf-build.stamp ############## clean-local: rm -f *~ *.bak rm -rf .libs distclean-local: cd $(srcdir) && \ rm -rf xml $(REPORT_FILES) $(DOC_MODULE).pdf \ $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt maintainer-clean-local: clean cd $(srcdir) && rm -rf xml html install-data-local: @installfiles=`echo $(srcdir)/html/*`; \ if test "$$installfiles" = '$(srcdir)/html/*'; \ then echo '-- Nothing to install' ; \ else \ if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ $(mkinstalldirs) $${installdir} ; \ for i in $$installfiles; do \ echo '-- Installing '$$i ; \ $(INSTALL_DATA) $$i $${installdir}; \ done; \ if test -n "$(DOC_MODULE_VERSION)"; then \ mv -f $${installdir}/$(DOC_MODULE).devhelp2 \ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \ mv -f $${installdir}/$(DOC_MODULE).devhelp \ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp; \ fi; \ $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \ fi uninstall-local: @if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ rm -rf $${installdir} # # Require gtk-doc when making dist # if ENABLE_GTK_DOC dist-check-gtkdoc: else dist-check-gtkdoc: @echo "*** gtk-doc must be installed and enabled in order to make dist" @false endif dist-hook: dist-check-gtkdoc dist-hook-local mkdir $(distdir)/tmpl mkdir $(distdir)/html -cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl cp $(srcdir)/html/* $(distdir)/html -cp $(srcdir)/$(DOC_MODULE).pdf $(distdir)/ -cp $(srcdir)/$(DOC_MODULE).types $(distdir)/ -cp $(srcdir)/$(DOC_MODULE)-sections.txt $(distdir)/ cd $(distdir) && rm -f $(DISTCLEANFILES) $(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html .PHONY : dist-hook-local docs hkl-4.0.3/gui/0000755000175000017500000000000011402652637010067 500000000000000hkl-4.0.3/gui/Makefile.am0000644000175000017500000000120311402652607012034 00000000000000bin_PROGRAMS = ghkl AM_CXXFLAGS = \ -I$(top_srcdir) \ -I$(top_srcdir)/hkl \ -DPKGDATA=\""$(pkgdatadir)"\" \ $(GSL_CFLAGS) \ $(GTKMM_CFLAGS) AM_LDFLAGS = \ $(top_builddir)/hkl/libhkl.la \ $(GSL_LIBS) \ $(GTKMM_LIBS) ghkl_SOURCES = \ ghkl.h \ ghkl.cpp \ ghkl-callbacks.cpp \ pseudoaxesframe.h \ pseudoaxesframe.cpp \ modelcolumns.h \ main.cpp dist_pkgdata_DATA = ghkl.ui pseudo.ui appldir = ${datadir}/applications dist_appl_DATA = ghkl.desktop # Support for GNU Flymake, in Emacs. check-syntax: AM_CXXFLAGS += -fsyntax-only -pipe check-syntax: test -z "$(CHK_SOURCES)" || $(CXXCOMPILE) $(CHK_SOURCES) .PHONY: check-syntaxhkl-4.0.3/gui/pseudoaxesframe.h0000644000175000017500000000530711366756371013371 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __PSEUDO_AXES_FRAME_H__ #define __PSEUDO_AXES_FRAME_H__ #include #include "hkl.h" class ModeModelColumns : public Gtk::TreeModel::ColumnRecord { public: Gtk::TreeModelColumn name; ModeModelColumns() { this->add(name); } }; class PseudoAxisModelColumns : public Gtk::TreeModel::ColumnRecord { public: Gtk::TreeModelColumn name; Gtk::TreeModelColumn value; Gtk::TreeModelColumn pseudo; PseudoAxisModelColumns() { this->add(name); this->add(value); this->add(pseudo); } }; class PseudoAxesFrame { public: PseudoAxesFrame(HklPseudoAxisEngine *engine); Gtk::Frame &frame(void) {return *_frame1;} virtual ~PseudoAxesFrame(void); void update(void); // signals emitted typedef sigc::signal type_signal_changed; type_signal_changed signal_changed(void); // callback protected: void on_combobox1_changed(void); virtual void on_cell_TreeView_pseudoAxis_value_edited(Glib::ustring const &, Glib::ustring const &); void on_button1_clicked(void); void on_button2_clicked(void); // non callback protected: void updateMode(void); void updatePseudoAxis(void); void updateModeParameters(void); type_signal_changed _signal_changed; // members protected: HklPseudoAxisEngine *_engine; // widget Glib::RefPtr _refGlade; Gtk::Frame *_frame1; Gtk::Label *_label2; Gtk::ComboBox *_combobox1; Gtk::Expander *_expander1; Gtk::TreeView *_treeview1; Gtk::Button *_button1; Gtk::Button *_button2; // objects Glib::RefPtr _mode_ListStore; Glib::RefPtr _pseudoAxis_ListStore; Glib::RefPtr _mode_parameter_ListStore; ModeModelColumns _mode_columns; PseudoAxisModelColumns _pseudoAxis_columns; }; #endif // __PSEUDO_AXES_FRAME_H__ hkl-4.0.3/gui/modelcolumns.h0000644000175000017500000000741211402652607012662 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef GTKMM_MODEL_COLUMNS_H #define GTKMM_MODEL_COLUMNS_H #include #include "hkl/hkl-geometry.h" class ReflectionModelColumns : public Gtk::TreeModel::ColumnRecord { public: Gtk::TreeModelColumn index; Gtk::TreeModelColumn h; Gtk::TreeModelColumn k; Gtk::TreeModelColumn l; Gtk::TreeModelColumn flag; ReflectionModelColumns() { this->add(index); this->add(h); this->add(k); this->add(l); this->add(flag); } }; class CrystalModelColumns : public Gtk::TreeModel::ColumnRecord { public: Gtk::TreeModelColumn name; Gtk::TreeModelColumn a; Gtk::TreeModelColumn b; Gtk::TreeModelColumn c; Gtk::TreeModelColumn alpha; Gtk::TreeModelColumn beta; Gtk::TreeModelColumn gamma; CrystalModelColumns() { this->add(name); this->add(a); this->add(b); this->add(c); this->add(alpha); this->add(beta); this->add(gamma); } }; class AxeModelColumns : public Gtk::TreeModel::ColumnRecord { public: Gtk::TreeModelColumn axis; Gtk::TreeModelColumn name; Gtk::TreeModelColumn read; Gtk::TreeModelColumn write; Gtk::TreeModelColumn min; Gtk::TreeModelColumn max; AxeModelColumns() { add(axis); add(name); add(read); add(write); add(min); add(max); } }; class PseudoAxeModelColumns : public Gtk::TreeModel::ColumnRecord { public: Gtk::TreeModelColumn pseudoAxis; Gtk::TreeModelColumn name; Gtk::TreeModelColumn read; Gtk::TreeModelColumn write; Gtk::TreeModelColumn min; Gtk::TreeModelColumn max; Gtk::TreeModelColumn is_initialized; PseudoAxeModelColumns() { this->add(pseudoAxis); this->add(name); this->add(read); this->add(write); this->add(min); this->add(max); this->add(is_initialized); } }; class ParameterModelColumns : public Gtk::TreeModel::ColumnRecord { public: Gtk::TreeModelColumn parameter; Gtk::TreeModelColumn name; Gtk::TreeModelColumn value; ParameterModelColumns() { this->add(parameter); this->add(name); this->add(value); } }; class SolutionModelColumns : public Gtk::TreeModel::ColumnRecord { public: Gtk::TreeModelColumn index; std::vector > axes; SolutionModelColumns(HklGeometry *geometry) { size_t i; this->add(this->index); for(i=0; iaxes); ++i){ this->axes.push_back(Gtk::TreeModelColumn()); this->add(this->axes[i]); } } }; class DiffractometerModelColumns : public Gtk::TreeModel::ColumnRecord { public: Gtk::TreeModelColumn name; Gtk::TreeModelColumn type; DiffractometerModelColumns(void) { this->add(name); this->add(type); } }; #endif // GTKMM_MODEL_COLUMNS_H hkl-4.0.3/gui/ghkl.cpp0000644000175000017500000010203711402652607011440 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include "ghkl.h" HKLWindow::HKLWindow(void) { LOG; size_t i; HklSample *sample; _geometry = NULL; _engines = NULL; _detector = hkl_detector_factory_new(HKL_DETECTOR_TYPE_0D); _detector->idx = 1; _samples = hkl_sample_list_new(); // add a default crystal sample = hkl_sample_new("test", HKL_SAMPLE_TYPE_MONOCRYSTAL); hkl_sample_list_append(_samples, sample); hkl_sample_list_select_current(_samples, "test"); // create the reciprocal lattice _reciprocal = hkl_lattice_new_default(); // Sets the border width of the window. this->set_border_width(10); this->get_widgets_and_objects_from_ui(); _diffractometerModelColumns = NULL; this->set_up_diffractometer_model(); this->set_up_TreeView_reflections(); this->set_up_TreeView_crystals(); //update the widgets this->updateTreeViewCrystals(); this->updateSource(); this->updateLattice(); this->updateLatticeParameters(); this->updateReciprocalLattice(); this->updateUxUyUz(); this->updateUB(); this->connect_all_signals(); this->show_all_children(); } HKLWindow::~HKLWindow() { LOG; hkl_geometry_free(_geometry); hkl_detector_free(_detector); hkl_pseudo_axis_engine_list_free(_engines); hkl_sample_list_free(_samples); hkl_lattice_free(_reciprocal); if(_diffractometerModelColumns) delete _diffractometerModelColumns; if(_solutionModelColumns) delete _solutionModelColumns; } void HKLWindow::get_widgets_and_objects_from_ui(void) { LOG; //Get Glade UI: _refGlade = Gtk::Builder::create(); try{ _refGlade->add_from_file("ghkl.ui"); }catch(...){ std::string filename = Glib::build_filename(PKGDATA, "ghkl.ui"); if(!_refGlade->add_from_file(filename)) exit(1); } // objects _diffractometerModel = Glib::RefPtr::cast_dynamic( _refGlade->get_object("liststore1")); // window1 _refGlade->get_widget("label_UB11", _label_UB11); _refGlade->get_widget("label_UB12", _label_UB12); _refGlade->get_widget("label_UB13", _label_UB13); _refGlade->get_widget("label_UB21", _label_UB21); _refGlade->get_widget("label_UB22", _label_UB22); _refGlade->get_widget("label_UB23", _label_UB23); _refGlade->get_widget("label_UB31", _label_UB31); _refGlade->get_widget("label_UB32", _label_UB32); _refGlade->get_widget("label_UB33", _label_UB33); _refGlade->get_widget("button2", _button2); _refGlade->get_widget("spinbutton_a_star", _spinbutton_a_star); _refGlade->get_widget("spinbutton_b_star", _spinbutton_b_star); _refGlade->get_widget("spinbutton_c_star", _spinbutton_c_star); _refGlade->get_widget("spinbutton_alpha_star", _spinbutton_alpha_star); _refGlade->get_widget("spinbutton_beta_star", _spinbutton_beta_star); _refGlade->get_widget("spinbutton_gamma_star", _spinbutton_gamma_star); _refGlade->get_widget("spinbutton_a", _spinbutton_a); _refGlade->get_widget("spinbutton_b", _spinbutton_b); _refGlade->get_widget("spinbutton_c", _spinbutton_c); _refGlade->get_widget("spinbutton_alpha", _spinbutton_alpha); _refGlade->get_widget("spinbutton_beta", _spinbutton_beta); _refGlade->get_widget("spinbutton_gamma", _spinbutton_gamma); _refGlade->get_widget("spinbutton_a_min", _spinbutton_a_min); _refGlade->get_widget("spinbutton_b_min", _spinbutton_b_min); _refGlade->get_widget("spinbutton_c_min", _spinbutton_c_min); _refGlade->get_widget("spinbutton_alpha_min", _spinbutton_alpha_min); _refGlade->get_widget("spinbutton_beta_min", _spinbutton_beta_min); _refGlade->get_widget("spinbutton_gamma_min", _spinbutton_gamma_min); _refGlade->get_widget("spinbutton_a_max", _spinbutton_a_max); _refGlade->get_widget("spinbutton_b_max", _spinbutton_b_max); _refGlade->get_widget("spinbutton_c_max", _spinbutton_c_max); _refGlade->get_widget("spinbutton_alpha_max", _spinbutton_alpha_max); _refGlade->get_widget("spinbutton_beta_max", _spinbutton_beta_max); _refGlade->get_widget("spinbutton_gamma_max", _spinbutton_gamma_max); _refGlade->get_widget("spinbutton_lambda", _spinbutton_lambda); _refGlade->get_widget("spinbutton_ux", _spinbutton_ux); _refGlade->get_widget("spinbutton_uy", _spinbutton_uy); _refGlade->get_widget("spinbutton_uz", _spinbutton_uz); _refGlade->get_widget("spinbutton_U11", _spinbutton_U11); _refGlade->get_widget("spinbutton_U12", _spinbutton_U12); _refGlade->get_widget("spinbutton_U13", _spinbutton_U13); _refGlade->get_widget("spinbutton_U21", _spinbutton_U21); _refGlade->get_widget("spinbutton_U22", _spinbutton_U22); _refGlade->get_widget("spinbutton_U23", _spinbutton_U23); _refGlade->get_widget("spinbutton_U31", _spinbutton_U31); _refGlade->get_widget("spinbutton_U32", _spinbutton_U32); _refGlade->get_widget("spinbutton_U33", _spinbutton_U33); _refGlade->get_widget("checkbutton_a", _checkbutton_a); _refGlade->get_widget("checkbutton_b", _checkbutton_b); _refGlade->get_widget("checkbutton_c", _checkbutton_c); _refGlade->get_widget("checkbutton_alpha", _checkbutton_alpha); _refGlade->get_widget("checkbutton_beta", _checkbutton_beta); _refGlade->get_widget("checkbutton_gamma", _checkbutton_gamma); _refGlade->get_widget("checkbutton_Ux", _checkbutton_Ux); _refGlade->get_widget("checkbutton_Uy", _checkbutton_Uy); _refGlade->get_widget("checkbutton_Uz", _checkbutton_Uz); _refGlade->get_widget("treeview_reflections", _treeViewReflections); _refGlade->get_widget("treeview_crystals", _treeViewCrystals); _refGlade->get_widget("treeview_axes", _TreeView_axes); _refGlade->get_widget("treeview_pseudoAxes", _TreeView_pseudoAxes); _refGlade->get_widget("treeview_pseudoAxes_parameters", _TreeView_pseudoAxes_parameters); _refGlade->get_widget("treeview1", _treeview1); _refGlade->get_widget("toolbutton_add_reflection", _toolbutton_add_reflection); _refGlade->get_widget("toolbutton_goto_reflection", _toolbutton_goto_reflection); _refGlade->get_widget("toolbutton_del_reflection", _toolbutton_del_reflection); _refGlade->get_widget("toolbutton_setUB", _toolbutton_setUB); _refGlade->get_widget("toolbutton_computeUB", _toolbutton_computeUB); _refGlade->get_widget("toolbutton_add_crystal", _toolbutton_add_crystal); _refGlade->get_widget("toolbutton_copy_crystal", _toolbutton_copy_crystal); _refGlade->get_widget("toolbutton_del_crystal", _toolbutton_del_crystal); _refGlade->get_widget("toolbutton_affiner", _toolbutton_affiner); _refGlade->get_widget("statusbar", _statusBar); _refGlade->get_widget("menuitem5", _menuitem5); _refGlade->get_widget("imagemenuitem5", _imagemenuitem5); // dialog1 _refGlade->get_widget("dialog1", _dialog1); _refGlade->get_widget("button1", _button1); _refGlade->get_widget("combobox1", _combobox1); } void HKLWindow::connect_all_signals(void) { LOG; _spinbutton_a->signal_value_changed().connect( mem_fun(*this, &HKLWindow::on_spinbutton_a_value_changed)); _spinbutton_b->signal_value_changed().connect( mem_fun(*this, &HKLWindow::on_spinbutton_b_value_changed)); _spinbutton_c->signal_value_changed().connect( mem_fun(*this, &HKLWindow::on_spinbutton_c_value_changed)); _spinbutton_alpha->signal_value_changed().connect( mem_fun(*this, &HKLWindow::on_spinbutton_alpha_value_changed)); _spinbutton_beta->signal_value_changed().connect( mem_fun(*this, &HKLWindow::on_spinbutton_beta_value_changed)); _spinbutton_gamma->signal_value_changed().connect( mem_fun(*this, &HKLWindow::on_spinbutton_gamma_value_changed)); _spinbutton_a_min->signal_value_changed().connect( mem_fun(*this, &HKLWindow::on_spinbutton_a_min_value_changed)); _spinbutton_b_min->signal_value_changed().connect( mem_fun(*this, &HKLWindow::on_spinbutton_b_min_value_changed)); _spinbutton_c_min->signal_value_changed().connect( mem_fun(*this, &HKLWindow::on_spinbutton_c_min_value_changed)); _spinbutton_alpha_min->signal_value_changed().connect( mem_fun(*this, &HKLWindow::on_spinbutton_alpha_min_value_changed)); _spinbutton_beta_min->signal_value_changed().connect( mem_fun(*this, &HKLWindow::on_spinbutton_beta_min_value_changed)); _spinbutton_gamma_min->signal_value_changed().connect( mem_fun(*this, &HKLWindow::on_spinbutton_gamma_min_value_changed)); _spinbutton_a_max->signal_value_changed().connect( mem_fun(*this, &HKLWindow::on_spinbutton_a_max_value_changed)); _spinbutton_b_max->signal_value_changed().connect( mem_fun(*this, &HKLWindow::on_spinbutton_b_max_value_changed)); _spinbutton_c_max->signal_value_changed().connect( mem_fun(*this, &HKLWindow::on_spinbutton_c_max_value_changed)); _spinbutton_alpha_max->signal_value_changed().connect( mem_fun(*this, &HKLWindow::on_spinbutton_alpha_max_value_changed)); _spinbutton_beta_max->signal_value_changed().connect( mem_fun(*this, &HKLWindow::on_spinbutton_beta_max_value_changed)); _spinbutton_gamma_max->signal_value_changed().connect( mem_fun(*this, &HKLWindow::on_spinbutton_gamma_max_value_changed)); _spinbutton_lambda->signal_value_changed().connect( mem_fun(*this, &HKLWindow::on_spinbutton_lambda_value_changed)); _spinbutton_ux->signal_value_changed().connect( mem_fun(*this, &HKLWindow::on_spinbutton_uxuyuz_value_changed)); _spinbutton_uy->signal_value_changed().connect( mem_fun(*this, &HKLWindow::on_spinbutton_uxuyuz_value_changed)); _spinbutton_uz->signal_value_changed().connect( mem_fun(*this, &HKLWindow::on_spinbutton_uxuyuz_value_changed)); _button2->signal_clicked().connect( mem_fun(*this, &HKLWindow::on_button2_clicked)); _checkbutton_a->signal_toggled().connect( mem_fun(*this, &HKLWindow::on_checkbutton_a_toggled)); _checkbutton_b->signal_toggled().connect( mem_fun(*this, &HKLWindow::on_checkbutton_b_toggled)); _checkbutton_c->signal_toggled().connect( mem_fun(*this, &HKLWindow::on_checkbutton_c_toggled)); _checkbutton_alpha->signal_toggled().connect( mem_fun(*this, &HKLWindow::on_checkbutton_alpha_toggled)); _checkbutton_beta->signal_toggled().connect( mem_fun(*this, &HKLWindow::on_checkbutton_beta_toggled)); _checkbutton_gamma->signal_toggled().connect( mem_fun(*this, &HKLWindow::on_checkbutton_gamma_toggled)); _checkbutton_Ux->signal_toggled().connect( mem_fun(*this, &HKLWindow::on_checkbutton_Ux_toggled)); _checkbutton_Uy->signal_toggled().connect( mem_fun(*this, &HKLWindow::on_checkbutton_Uy_toggled)); _checkbutton_Uz->signal_toggled().connect( mem_fun(*this, &HKLWindow::on_checkbutton_Uz_toggled)); _treeViewReflections->signal_key_press_event().connect( mem_fun(*this, &HKLWindow::on_treeViewReflections_key_press_event)); _TreeView_pseudoAxes->signal_cursor_changed().connect( mem_fun(*this, &HKLWindow::on_treeView_pseudoAxes_cursor_changed)); _treeViewCrystals->signal_cursor_changed().connect( mem_fun(*this, &HKLWindow::on_treeViewCrystals_cursor_changed)); _treeViewCrystals->signal_key_press_event().connect( mem_fun(*this, &HKLWindow::on_treeViewCrystals_key_press_event)); _toolbutton_add_reflection->signal_clicked().connect( mem_fun(*this, &HKLWindow::on_toolbutton_add_reflection_clicked)); _toolbutton_goto_reflection->signal_clicked().connect( mem_fun(*this, &HKLWindow::on_toolbutton_goto_reflection_clicked)); _toolbutton_del_reflection->signal_clicked().connect( mem_fun(*this, &HKLWindow::on_toolbutton_del_reflection_clicked)); _toolbutton_setUB->signal_clicked().connect( mem_fun(*this, &HKLWindow::on_toolbutton_setUB_clicked)); _toolbutton_computeUB->signal_clicked().connect( mem_fun(*this, &HKLWindow::on_toolbutton_computeUB_clicked)); _toolbutton_add_crystal->signal_clicked().connect( mem_fun(*this, &HKLWindow::on_toolbutton_add_crystal_clicked)); _toolbutton_copy_crystal->signal_clicked().connect( mem_fun(*this, &HKLWindow::on_toolbutton_copy_crystal_clicked)); _toolbutton_del_crystal->signal_clicked().connect( mem_fun(*this, &HKLWindow::on_toolbutton_del_crystal_clicked)); _toolbutton_affiner->signal_clicked().connect( mem_fun(*this, &HKLWindow::on_toolbutton_affiner_clicked)); _menuitem5->signal_activate().connect( mem_fun(*this, &HKLWindow::on_menuitem5_activate)); _imagemenuitem5->signal_activate().connect(>k_main_quit); // dialog1 _button1->signal_clicked().connect( mem_fun(*this, &HKLWindow::on_button1_clicked)); _combobox1->signal_changed().connect( mem_fun(*this, &HKLWindow::on_combobox1_changed)); } void HKLWindow::set_up_pseudo_axes_frames(void) { LOG; size_t i; Gtk::VBox *vbox2 = NULL; _refGlade->get_widget("vbox2", vbox2); // first clear the previous frames for(i=0; i<_pseudoAxesFrames.size(); ++i){ vbox2->remove(_pseudoAxesFrames[i]->frame()); delete _pseudoAxesFrames[i]; } _pseudoAxesFrames.clear(); for(i=0; iengines); ++i){ PseudoAxesFrame *pseudo; pseudo = new PseudoAxesFrame (_engines->engines[i]); _pseudoAxesFrames.push_back (pseudo); vbox2->add (pseudo->frame()); pseudo->signal_changed ().connect ( sigc::mem_fun (*this, &HKLWindow::on_pseudoAxesFrame_changed) ); } vbox2->show_all(); } void HKLWindow::set_up_diffractometer_model(void) { size_t i; if(_diffractometerModelColumns) delete _diffractometerModelColumns; _diffractometerModelColumns = new DiffractometerModelColumns(); i = 0; while(hkl_geometry_factory_configs[i].name){ Gtk::ListStore::Row row; row = *(_diffractometerModel->append()); row[_diffractometerModelColumns->name] = hkl_geometry_factory_configs[i++].name; } } void HKLWindow::set_up_TreeView_axes(void) { LOG; size_t i; int index; Gtk::CellRenderer * renderer; //Create the Model _axeModel = Gtk::ListStore::create(_axeModelColumns); // add the columns _TreeView_axes->remove_all_columns(); index = _TreeView_axes->append_column("name", _axeModelColumns.name); index = _TreeView_axes->append_column_numeric_editable("read", _axeModelColumns.read, "%lf"); renderer = _TreeView_axes->get_column_cell_renderer(index-1); dynamic_cast(renderer)->signal_edited().connect( sigc::mem_fun(*this, &HKLWindow::on_cell_TreeView_axes_read_edited)); index = _TreeView_axes->append_column_numeric_editable("write", _axeModelColumns.write, "%lf"); renderer = _TreeView_axes->get_column_cell_renderer(index-1); dynamic_cast(renderer)->signal_edited().connect( sigc::mem_fun(*this, &HKLWindow::on_cell_TreeView_axes_write_edited)); index = _TreeView_axes->append_column_numeric_editable("min", _axeModelColumns.min, "%lf"); renderer = _TreeView_axes->get_column_cell_renderer(index-1); dynamic_cast(renderer)->signal_edited().connect( sigc::mem_fun(*this, &HKLWindow::on_cell_TreeView_axes_min_edited)); index = _TreeView_axes->append_column_numeric_editable("max", _axeModelColumns.max, "%lf"); renderer = _TreeView_axes->get_column_cell_renderer(index-1); dynamic_cast(renderer)->signal_edited().connect( sigc::mem_fun(*this, &HKLWindow::on_cell_TreeView_axes_max_edited)); //Fill the models from the diffractometerAxes for(i=0; iaxes); ++i){ HklAxis *axis = &_geometry->axes[i]; Gtk::ListStore::Row row = *(_axeModel->append()); row[_axeModelColumns.axis] = axis; row[_axeModelColumns.name] = ((HklParameter *)axis)->name; } //Set the model for the TreeView _TreeView_axes->set_model(_axeModel); this->updateAxes(); } void HKLWindow::set_up_TreeView_pseudoAxes(void) { LOG; size_t i; size_t j; size_t k; int index; Gtk::CellRenderer * renderer; /* add the columns */ _TreeView_pseudoAxes->remove_all_columns(); _TreeView_pseudoAxes->append_column("name", _pseudoAxeModelColumns.name); _TreeView_pseudoAxes->append_column_numeric("read", _pseudoAxeModelColumns.read, "%lf"); index = _TreeView_pseudoAxes->append_column_numeric_editable("write", _pseudoAxeModelColumns.write, "%lf"); renderer = _TreeView_pseudoAxes->get_column_cell_renderer(index-1); dynamic_cast(renderer)->signal_edited().connect( sigc::mem_fun(*this, &HKLWindow::on_cell_TreeView_pseudoAxes_write_edited)); _TreeView_pseudoAxes->append_column_numeric("min", _pseudoAxeModelColumns.min, "%lf"); _TreeView_pseudoAxes->append_column_numeric("max", _pseudoAxeModelColumns.max, "%lf"); index = _TreeView_pseudoAxes->append_column_editable( "initialized", _pseudoAxeModelColumns.is_initialized); renderer = _TreeView_pseudoAxes->get_column_cell_renderer(index-1); dynamic_cast(renderer)->signal_toggled().connect( sigc::mem_fun(*this, &HKLWindow::on_cell_TreeView_pseudoAxes_is_initialized_toggled)); //Create the Model _pseudoAxeModel = Gtk::ListStore::create(_pseudoAxeModelColumns); //Fill the models from the diffractometer pseudoAxes for(i=0; iengines); ++i){ HklPseudoAxisEngine *engine = _engines->engines[i]; for(j=0; jpseudoAxes); ++j){ HklPseudoAxis *pseudoAxis = engine->pseudoAxes[j]; Gtk::ListStore::Row row = *(_pseudoAxeModel->append()); row[_pseudoAxeModelColumns.pseudoAxis] = pseudoAxis; row[_pseudoAxeModelColumns.name] = ((HklParameter *)pseudoAxis)->name; if(HKL_LIST_LEN(engine->mode->parameters)){ Glib::RefPtr model = Gtk::ListStore::create(_parameterModelColumns); for(k=0; kmode->parameters); ++k){ HklParameter *parameter = &engine->mode->parameters[k]; Glib::RefPtr model = Gtk::ListStore::create(_parameterModelColumns); row = *(model->append()); row[_parameterModelColumns.parameter] = parameter; row[_parameterModelColumns.name] = parameter->name; row[_parameterModelColumns.value] = hkl_parameter_get_value_unit(parameter); } _mapPseudoAxeParameterModel.insert(std::pair >(pseudoAxis, model)); } } } //Set the model for the TreeView _TreeView_pseudoAxes->set_model(_pseudoAxeModel); this->updatePseudoAxes(); } void HKLWindow::set_up_TreeView_pseudoAxes_parameters(void) { LOG; int index; Gtk::CellRenderer * renderer; // add the columns _TreeView_pseudoAxes_parameters->remove_all_columns(); _TreeView_pseudoAxes_parameters->append_column( "name", _parameterModelColumns.name); index = _TreeView_pseudoAxes_parameters->append_column_numeric_editable( "value", _parameterModelColumns.value, "%lf"); renderer = _TreeView_pseudoAxes_parameters->get_column_cell_renderer(index-1); // connect the signal_edited dynamic_cast(renderer)->signal_edited().connect( sigc::mem_fun(*this, &HKLWindow::on_cell_TreeView_pseudoAxes_parameters_value_edited)); } void HKLWindow::set_up_TreeView_treeview1(void) { LOG; size_t i; size_t j; size_t k; int index; Gtk::CellRenderer * renderer; //Create the Columns if(_solutionModelColumns) delete _solutionModelColumns; _solutionModelColumns = new SolutionModelColumns(_geometry); /* add the columns */ _treeview1->remove_all_columns(); for(i=0; iaxes); ++i) _treeview1->append_column_numeric(((HklParameter *)&_geometry->axes[i])->name, _solutionModelColumns->axes[i], "%lf"); //Create the model from the columns _solutionModel = Gtk::ListStore::create(*_solutionModelColumns); _treeview1->set_model(_solutionModel); _treeview1->signal_cursor_changed().connect(mem_fun(*this, &HKLWindow::on_treeview1_cursor_changed)); this->updateSolutions(); } void HKLWindow::set_up_TreeView_reflections(void) { LOG; int index; Gtk::CellRenderer *renderer; //Set up the treeViewReflections _treeViewReflections->remove_all_columns(); _treeViewReflections->append_column("index", _reflectionModelColumns.index); index = _treeViewReflections->append_column_numeric_editable("h", _reflectionModelColumns.h, "%lf"); renderer = _treeViewReflections->get_column_cell_renderer(index-1); dynamic_cast(renderer)->signal_edited().connect( sigc::mem_fun(*this, &HKLWindow::on_cell_TreeView_reflections_h_edited)); index = _treeViewReflections->append_column_numeric_editable("k", _reflectionModelColumns.k, "%lf"); renderer = _treeViewReflections->get_column_cell_renderer(index-1); dynamic_cast(renderer)->signal_edited().connect( sigc::mem_fun(*this, &HKLWindow::on_cell_TreeView_reflections_k_edited)); index = _treeViewReflections->append_column_numeric_editable("l", _reflectionModelColumns.l, "%lf"); renderer = _treeViewReflections->get_column_cell_renderer(index-1); dynamic_cast(renderer)->signal_edited().connect( sigc::mem_fun(*this, &HKLWindow::on_cell_TreeView_reflections_l_edited)); index = _treeViewReflections->append_column_editable("flag", _reflectionModelColumns.flag); renderer = _treeViewReflections->get_column_cell_renderer(index-1); dynamic_cast(renderer)->signal_toggled().connect( sigc::mem_fun(*this, &HKLWindow::on_cell_TreeView_reflections_flag_toggled)); _treeViewReflections->get_selection()->set_mode(Gtk::SELECTION_MULTIPLE); } void HKLWindow::set_up_TreeView_crystals(void) { LOG; int index; Gtk::CellRenderer *renderer; //Set up the treeViewCrystals _treeViewCrystals->remove_all_columns(); index = _treeViewCrystals->append_column_editable("name", _crystalModelColumns.name); renderer = _treeViewCrystals->get_column_cell_renderer(index-1); dynamic_cast(renderer)->signal_edited().connect( sigc::mem_fun(*this, &HKLWindow::on_cell_TreeView_crystals_name_edited)); _treeViewCrystals->append_column_numeric("a", _crystalModelColumns.a, "%lf"); _treeViewCrystals->append_column_numeric("b", _crystalModelColumns.b, "%lf"); _treeViewCrystals->append_column_numeric("c", _crystalModelColumns.c, "%lf"); _treeViewCrystals->append_column_numeric("alpha", _crystalModelColumns.alpha, "%lf"); _treeViewCrystals->append_column_numeric("beta", _crystalModelColumns.beta, "%lf"); _treeViewCrystals->append_column_numeric("gamma", _crystalModelColumns.gamma, "%lf"); _treeViewCrystals->get_selection()->set_mode(Gtk::SELECTION_MULTIPLE); } void HKLWindow::updateSource(void) { LOG; if(_geometry){ double lambda = hkl_source_get_wavelength(&_geometry->source); _spinbutton_lambda->set_value(lambda); } } void HKLWindow::updateAxes(void) { LOG; // update the model Gtk::TreeModel::Children rows = _axeModel->children(); Gtk::TreeModel::Children::iterator iter = rows.begin(); Gtk::TreeModel::Children::iterator end = rows.end(); while(iter != end){ double min; double max; HklAxis * axis; Gtk::TreeRow row = *iter; axis = row[_axeModelColumns.axis]; row[_axeModelColumns.read] = hkl_axis_get_value_unit(axis); row[_axeModelColumns.write] = hkl_axis_get_value_unit(axis); hkl_parameter_get_range_unit((HklParameter *)axis, &min, &max); row[_axeModelColumns.min] = min; row[_axeModelColumns.max] = max; ++iter; } } void HKLWindow::updatePseudoAxes(void) { LOG; // first compute all the pseudoAxes values hkl_pseudo_axis_engine_list_get(_engines); // update the model Gtk::TreeModel::Children rows = _pseudoAxeModel->children(); Gtk::TreeModel::Children::iterator iter = rows.begin(); Gtk::TreeModel::Children::iterator end = rows.end(); while(iter != end){ double min; double max; HklParameter *parameter; HklPseudoAxis *pseudoAxis; Gtk::TreeRow row = *iter; pseudoAxis = row[_pseudoAxeModelColumns.pseudoAxis]; parameter = (HklParameter *)pseudoAxis; row[_pseudoAxeModelColumns.read] = hkl_parameter_get_value_unit(parameter); row[_pseudoAxeModelColumns.write] = hkl_parameter_get_value_unit(parameter); hkl_parameter_get_range_unit(parameter, &min, &max); row[_pseudoAxeModelColumns.min] = min; row[_pseudoAxeModelColumns.max] = max; row[_pseudoAxeModelColumns.is_initialized] = true; ++iter; } } void HKLWindow::update_pseudoAxes_parameters(void) { LOG; std::map >::iterator iter = _mapPseudoAxeParameterModel.begin(); std::map >::iterator end = _mapPseudoAxeParameterModel.end(); while(iter != end){ Gtk::TreeModel::Children rows = iter->second->children(); Gtk::TreeModel::Children::iterator iter_row = rows.begin(); Gtk::TreeModel::Children::iterator end_row = rows.end(); while(iter_row != end_row){ Gtk::TreeRow row = *iter_row; HklParameter *parameter = row[_parameterModelColumns.parameter]; row[_parameterModelColumns.name] = parameter->name; row[_parameterModelColumns.value] = hkl_parameter_get_value_unit(parameter); ++iter_row; } ++iter; } } void HKLWindow::updateLattice(void) { LOG; HklSample *sample = _samples->current; if(sample){ double a = hkl_parameter_get_value_unit(sample->lattice->a); double b = hkl_parameter_get_value_unit(sample->lattice->b); double c = hkl_parameter_get_value_unit(sample->lattice->c); double alpha = hkl_parameter_get_value_unit(sample->lattice->alpha); double beta = hkl_parameter_get_value_unit(sample->lattice->beta); double gamma = hkl_parameter_get_value_unit(sample->lattice->gamma); _spinbutton_a->set_value(a); _spinbutton_b->set_value(b); _spinbutton_c->set_value(c); _spinbutton_alpha->set_value(alpha); _spinbutton_beta->set_value(beta); _spinbutton_gamma->set_value(gamma); } } void HKLWindow::updateLatticeParameters(void) { LOG; HklSample *sample = _samples->current; if(sample){ double min; double max; bool to_fit; HklParameter *parameter; parameter = sample->lattice->a; hkl_parameter_get_range_unit(parameter, &min, &max); _spinbutton_a_min->set_value(min); _spinbutton_a_max->set_value(max); _checkbutton_a->set_active(parameter->fit); parameter = sample->lattice->b; hkl_parameter_get_range_unit(parameter, &min, &max); _spinbutton_b_min->set_value(min); _spinbutton_b_max->set_value(max); _checkbutton_b->set_active(parameter->fit); parameter = sample->lattice->c; hkl_parameter_get_range_unit(parameter, &min, &max); _spinbutton_c_min->set_value(min); _spinbutton_c_max->set_value(max); _checkbutton_c->set_active(parameter->fit); parameter = sample->lattice->alpha; hkl_parameter_get_range_unit(parameter, &min, &max); _spinbutton_alpha_min->set_value(min); _spinbutton_alpha_max->set_value(max); _checkbutton_alpha->set_active(parameter->fit); parameter = sample->lattice->beta; hkl_parameter_get_range_unit(parameter, &min, &max); _spinbutton_beta_min->set_value(min); _spinbutton_beta_max->set_value(max); _checkbutton_beta->set_active(parameter->fit); parameter = sample->lattice->gamma; hkl_parameter_get_range_unit(parameter, &min, &max); _spinbutton_gamma_min->set_value(min); _spinbutton_gamma_max->set_value(max); _checkbutton_gamma->set_active(parameter->fit); } } void HKLWindow::updateReciprocalLattice(void) { LOG; HklSample *sample = _samples->current; if(sample){ hkl_lattice_reciprocal(sample->lattice, _reciprocal); _spinbutton_a_star->set_value(hkl_parameter_get_value_unit(_reciprocal->a)); _spinbutton_b_star->set_value(hkl_parameter_get_value_unit(_reciprocal->b)); _spinbutton_c_star->set_value(hkl_parameter_get_value_unit(_reciprocal->c)); _spinbutton_alpha_star->set_value(hkl_parameter_get_value_unit(_reciprocal->alpha)); _spinbutton_beta_star->set_value(hkl_parameter_get_value_unit(_reciprocal->beta)); _spinbutton_gamma_star->set_value(hkl_parameter_get_value_unit(_reciprocal->gamma)); } } void HKLWindow::updateUB(void) { LOG; HklSample *sample = _samples->current; if(sample){ static const char *format = "%f"; char tmp[100]; HklMatrix UB; hkl_sample_get_UB(sample, &UB); sprintf(tmp, format, UB.data[0][0]); _label_UB11->set_text(tmp); sprintf(tmp, format, UB.data[0][1]); _label_UB12->set_text(tmp); sprintf(tmp, format, UB.data[0][2]); _label_UB13->set_text(tmp); sprintf(tmp, format, UB.data[1][0]); _label_UB21->set_text(tmp); sprintf(tmp, format, UB.data[1][1]); _label_UB22->set_text(tmp); sprintf(tmp, format, UB.data[1][2]); _label_UB23->set_text(tmp); sprintf(tmp, format, UB.data[2][0]); _label_UB31->set_text(tmp); sprintf(tmp, format, UB.data[2][1]); _label_UB32->set_text(tmp); sprintf(tmp, format, UB.data[2][2]); _label_UB33->set_text(tmp); } } void HKLWindow::updateUxUyUz(void) { LOG; HklSample *sample = _samples->current; if(sample){ _spinbutton_ux->set_value(hkl_parameter_get_value_unit(sample->ux)); _spinbutton_uy->set_value(hkl_parameter_get_value_unit(sample->uy)); _spinbutton_uz->set_value(hkl_parameter_get_value_unit(sample->uz)); _checkbutton_Ux->set_active(sample->ux->fit); _checkbutton_Uy->set_active(sample->uy->fit); _checkbutton_Uz->set_active(sample->uz->fit); } } void HKLWindow::updateTreeViewCrystals(void) { LOG; size_t i; HklSample *sample; Gtk::ListStore::Row row; Gtk::TreeModel::Children::iterator iter_row; Gtk::TreeModel::Children::iterator iter_current; Glib::ustring current_crystal_name; bool is_current_crystal_set = false; //clear all data in the models _crystalModel = Gtk::ListStore::create(_crystalModelColumns); // erase all reflections. _mapReflectionModel.clear(); if(_samples->current){ is_current_crystal_set = true; current_crystal_name = _samples->current->name; } //Fill the models from the crystalList for(i=0; isamples); ++i){ HklLattice *lattice; sample = _samples->samples[i]; lattice = sample->lattice; iter_row = *(_crystalModel->append()); if (is_current_crystal_set && current_crystal_name == sample->name) iter_current = iter_row; row = *(iter_row); row[_crystalModelColumns.name] = sample->name; row[_crystalModelColumns.a] = hkl_parameter_get_value_unit(lattice->a); row[_crystalModelColumns.b] = hkl_parameter_get_value_unit(lattice->b); row[_crystalModelColumns.c] = hkl_parameter_get_value_unit(lattice->c); row[_crystalModelColumns.alpha] = hkl_parameter_get_value_unit(lattice->alpha); row[_crystalModelColumns.beta] = hkl_parameter_get_value_unit(lattice->beta); row[_crystalModelColumns.gamma] = hkl_parameter_get_value_unit(lattice->gamma); Glib::RefPtr listStore = Gtk::ListStore::create(_reflectionModelColumns); _mapReflectionModel[sample->name] = listStore; this->updateReflections(sample, listStore); } //Set the model for the TreeView _treeViewCrystals->set_model(_crystalModel); if (is_current_crystal_set) { Gtk::TreeModel::Path path = _crystalModel->get_path(iter_current); _treeViewCrystals->set_cursor(path); _treeViewReflections->set_model(_mapReflectionModel[current_crystal_name]); } } void HKLWindow::updateReflections(const HklSample *sample, Glib::RefPtr & listStore) { LOG; size_t i; listStore->clear(); Gtk::ListStore::Row row; for(i=0; ireflections); ++i){ HklSampleReflection *reflection = sample->reflections[i]; row = *(listStore->append()); row[_reflectionModelColumns.index] = i; row[_reflectionModelColumns.h] = reflection->hkl.data[0]; row[_reflectionModelColumns.k] = reflection->hkl.data[1]; row[_reflectionModelColumns.l] = reflection->hkl.data[2]; row[_reflectionModelColumns.flag] = reflection->flag; } } void HKLWindow::updateStatusBar(const HklError *error) { LOG; _statusBar->push(error->message); } void HKLWindow::updateCrystalModel(HklSample * sample) { LOG; Gtk::TreeModel::Children children = _crystalModel->children(); Gtk::TreeModel::Children::iterator iter = children.begin(); Gtk::TreeModel::Children::iterator end = children.end(); while (iter != end){ Gtk::TreeModel::Row const & row = *iter; if (row[_crystalModelColumns.name] == sample->name){ HklLattice *lattice = sample->lattice; row[_crystalModelColumns.a] = hkl_parameter_get_value_unit(lattice->a); row[_crystalModelColumns.b] = hkl_parameter_get_value_unit(lattice->b); row[_crystalModelColumns.c] = hkl_parameter_get_value_unit(lattice->c); row[_crystalModelColumns.alpha] = hkl_parameter_get_value_unit(lattice->alpha); row[_crystalModelColumns.beta] = hkl_parameter_get_value_unit(lattice->beta); row[_crystalModelColumns.gamma] = hkl_parameter_get_value_unit(lattice->gamma); iter = end; } else ++iter; } } void HKLWindow::updatePseudoAxesFrames(void) { LOG; size_t i; for(i=0; i<_pseudoAxesFrames.size(); ++i) _pseudoAxesFrames[i]->update(); } void HKLWindow::updateSolutions(void) { LOG; size_t i; _solutionModel->clear(); Gtk::ListStore::Row row; for(i=0; igeometries); ++i){ size_t j; HklGeometry *geometry; geometry = _engines->geometries->items[i]->geometry; row = *(_solutionModel->append()); row[_solutionModelColumns->index] = i; for(j=0; jaxes); ++j) row[_solutionModelColumns->axes[j]] = hkl_parameter_get_value_unit((HklParameter *)&geometry->axes[j]); } } hkl-4.0.3/gui/ghkl-callbacks.cpp0000644000175000017500000006043111402652607013356 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include "ghkl.h" void HKLWindow::on_treeView_pseudoAxes_cursor_changed(void) { LOG; Gtk::TreeModel::Path path; Gtk::TreeViewColumn * column; _TreeView_pseudoAxes->get_cursor(path, column); Gtk::ListStore::Row row = *(_pseudoAxeModel->get_iter(path)); HklPseudoAxis *pseudoAxis = row[_pseudoAxeModelColumns.pseudoAxis]; _TreeView_pseudoAxes_parameters->set_model(_mapPseudoAxeParameterModel[pseudoAxis]); } void HKLWindow::on_treeViewCrystals_cursor_changed(void) { LOG; Gtk::TreeModel::Path path; Gtk::TreeViewColumn * column; _treeViewCrystals->get_cursor(path, column); Gtk::TreeModel::iterator iter = _crystalModel->get_iter(path); Gtk::ListStore::Row row = *(iter); Glib::ustring name = row[_crystalModelColumns.name]; hkl_sample_list_select_current(_samples, name.c_str()); hkl_pseudo_axis_engine_list_init(_engines, _geometry, _detector, _samples->current); _treeViewReflections->set_model(_mapReflectionModel[name]); this->updateLattice(); this->updateLatticeParameters(); this->updateReciprocalLattice(); this->updateUxUyUz(); this->updateUB(); this->updatePseudoAxes(); this->updatePseudoAxesFrames(); } void HKLWindow::on_spinbutton_a_value_changed(void) { LOG; // TODO change the cell background color if not synchro } void HKLWindow::on_spinbutton_b_value_changed(void) { LOG; // TODO change the cell background color if not synchro } void HKLWindow::on_spinbutton_c_value_changed(void) { LOG; // TODO change the cell background color if not synchro } void HKLWindow::on_spinbutton_alpha_value_changed(void) { LOG; // TODO change the cell background color if not synchro } void HKLWindow::on_spinbutton_beta_value_changed(void) { LOG; // TODO change the cell background color if not synchro } void HKLWindow::on_spinbutton_gamma_value_changed(void) { LOG; // TODO change the cell background color if not synchro } void HKLWindow::on_spinbutton_a_min_value_changed(void) { LOG; // TODO change the cell background color if not synchro } void HKLWindow::on_spinbutton_b_min_value_changed(void) { LOG; // TODO change the cell background color if not synchro } void HKLWindow::on_spinbutton_c_min_value_changed(void) { LOG; // TODO change the cell background color if not synchro } void HKLWindow::on_spinbutton_alpha_min_value_changed(void) { LOG; // TODO change the cell background color if not synchro } void HKLWindow::on_spinbutton_beta_min_value_changed(void) { LOG; // TODO change the cell background color if not synchro } void HKLWindow::on_spinbutton_gamma_min_value_changed(void) { LOG; // TODO change the cell background color if not synchro } void HKLWindow::on_spinbutton_a_max_value_changed(void) { LOG; // TODO change the cell background color if not synchro } void HKLWindow::on_spinbutton_b_max_value_changed(void) { LOG; // TODO change the cell background color if not synchro } void HKLWindow::on_spinbutton_c_max_value_changed(void) { LOG; // TODO change the cell background color if not synchro } void HKLWindow::on_spinbutton_alpha_max_value_changed(void) { LOG; // TODO change the cell background color if not synchro } void HKLWindow::on_spinbutton_beta_max_value_changed(void) { LOG; // TODO change the cell background color if not synchro } void HKLWindow::on_spinbutton_gamma_max_value_changed(void) { LOG; // TODO change the cell background color if not synchro } void HKLWindow::on_spinbutton_lambda_value_changed(void) { LOG; if(_geometry){ _geometry->source.wave_length = _spinbutton_lambda->get_value(); this->updatePseudoAxes(); this->updatePseudoAxesFrames(); } } void HKLWindow::on_spinbutton_uxuyuz_value_changed(void) { LOG; // TODO change the cell background color if not synchro } void HKLWindow::on_button2_clicked(void) { LOG; HklSample *sample; sample = _samples->current; if(sample){ hkl_sample_set_lattice(sample, _spinbutton_a->get_value(), _spinbutton_b->get_value(), _spinbutton_c->get_value(), _spinbutton_alpha->get_value() * HKL_DEGTORAD, _spinbutton_beta->get_value() * HKL_DEGTORAD, _spinbutton_gamma->get_value() * HKL_DEGTORAD); hkl_sample_set_U_from_euler(sample, _spinbutton_ux->get_value() * HKL_DEGTORAD, _spinbutton_uy->get_value() * HKL_DEGTORAD, _spinbutton_uz->get_value() * HKL_DEGTORAD); // set min/max hkl_parameter_set_range_unit(sample->lattice->a, _spinbutton_a_min->get_value(), _spinbutton_a_max->get_value()); hkl_parameter_set_range_unit(sample->lattice->b, _spinbutton_b_min->get_value(), _spinbutton_b_max->get_value()); hkl_parameter_set_range_unit(sample->lattice->c, _spinbutton_c_min->get_value(), _spinbutton_c_max->get_value()); hkl_parameter_set_range_unit(sample->lattice->alpha, _spinbutton_alpha_min->get_value(), _spinbutton_alpha_max->get_value()); hkl_parameter_set_range_unit(sample->lattice->beta, _spinbutton_beta_min->get_value(), _spinbutton_beta_max->get_value()); hkl_parameter_set_range_unit(sample->lattice->gamma, _spinbutton_gamma_min->get_value(), _spinbutton_gamma_max->get_value()); this->updateCrystalModel(sample); this->updateReciprocalLattice(); this->updateUB(); this->updatePseudoAxes(); this->updatePseudoAxesFrames(); } } void HKLWindow::on_checkbutton_a_toggled(void) { LOG; HklSample *sample = _samples->current; if(sample) sample->lattice->a->fit = _checkbutton_a->get_active(); } void HKLWindow::on_checkbutton_b_toggled(void) { LOG; HklSample *sample = _samples->current; if(sample) sample->lattice->b->fit = _checkbutton_b->get_active(); } void HKLWindow::on_checkbutton_c_toggled(void) { LOG; HklSample *sample = _samples->current; if(sample) sample->lattice->c->fit = _checkbutton_c->get_active(); } void HKLWindow::on_checkbutton_alpha_toggled(void) { LOG; HklSample *sample = _samples->current; if(sample) sample->lattice->alpha->fit = _checkbutton_alpha->get_active(); } void HKLWindow::on_checkbutton_beta_toggled(void) { LOG; HklSample *sample = _samples->current; if(sample) sample->lattice->beta->fit = _checkbutton_beta->get_active(); } void HKLWindow::on_checkbutton_gamma_toggled(void) { LOG; HklSample *sample = _samples->current; if(sample) sample->lattice->gamma->fit = _checkbutton_gamma->get_active(); } void HKLWindow::on_checkbutton_Ux_toggled(void) { LOG; HklSample *sample = _samples->current; if(sample) sample->ux->fit = _checkbutton_Ux->get_active(); } void HKLWindow::on_checkbutton_Uy_toggled(void) { LOG; HklSample *sample = _samples->current; if(sample) sample->uy->fit = _checkbutton_Uy->get_active(); } void HKLWindow::on_checkbutton_Uz_toggled(void) { LOG; HklSample *sample = _samples->current; if(sample) sample->uz->fit = _checkbutton_Uz->get_active(); } void HKLWindow::on_cell_TreeView_axes_read_edited(Glib::ustring const & spath, Glib::ustring const & newText) { LOG; Gtk::TreePath path(spath); Glib::RefPtr listStore = _TreeView_axes->get_model(); Gtk::TreeModel::iterator iter = listStore->get_iter(path); Gtk::ListStore::Row row = *(iter); Glib::ustring name = row[_axeModelColumns.name]; double value; sscanf(newText.c_str(), "%lf", &value); HklAxis *axis = hkl_geometry_get_axis_by_name(_geometry, name.c_str()); hkl_axis_set_value_unit(axis, value); hkl_geometry_update(_geometry); row[_axeModelColumns.read] = value; this->updatePseudoAxes(); this->updatePseudoAxesFrames(); } void HKLWindow::on_cell_TreeView_axes_write_edited(Glib::ustring const & spath, Glib::ustring const & newText) { LOG; Gtk::TreePath path(spath); Glib::RefPtr listStore = _TreeView_axes->get_model(); Gtk::TreeModel::iterator iter = listStore->get_iter(path); Gtk::ListStore::Row row = *(iter); Glib::ustring name = row[_axeModelColumns.name]; double value; sscanf(newText.c_str(), "%lf", &value); HklAxis *axis = hkl_geometry_get_axis_by_name(_geometry, name.c_str()); hkl_axis_set_value_unit(axis, value); hkl_geometry_update(_geometry); row[_axeModelColumns.write] = value; this->updatePseudoAxes(); this->updatePseudoAxesFrames(); } void HKLWindow::on_cell_TreeView_axes_min_edited(Glib::ustring const & spath, Glib::ustring const & newText) { LOG; Gtk::TreePath path(spath); Glib::RefPtr listStore = _TreeView_axes->get_model(); Gtk::TreeModel::iterator iter = listStore->get_iter(path); Gtk::ListStore::Row row = *(iter); double shit; double max; double value; HklAxis *axis; Glib::ustring name = row[_axeModelColumns.name]; sscanf(newText.c_str(), "%lf", &value); axis = hkl_geometry_get_axis_by_name(_geometry, name.c_str()); hkl_parameter_get_range_unit((HklParameter *)axis, &shit, &max); hkl_parameter_set_range_unit((HklParameter *)axis, value, max); row[_axeModelColumns.min] = value; this->updatePseudoAxes(); } void HKLWindow::on_cell_TreeView_axes_max_edited(Glib::ustring const & spath, Glib::ustring const & newText) { LOG; Gtk::TreePath path(spath); Glib::RefPtr listStore = _TreeView_axes->get_model(); Gtk::TreeModel::iterator iter = listStore->get_iter(path); Gtk::ListStore::Row row = *(iter); double min, shit; double value; HklAxis *axis; Glib::ustring name = row[_axeModelColumns.name]; sscanf(newText.c_str(), "%lf", &value); axis = hkl_geometry_get_axis_by_name(_geometry, name.c_str()); hkl_parameter_get_range_unit((HklParameter *)axis, &min, &shit); hkl_parameter_set_range_unit((HklParameter *)axis, min, value); row[_axeModelColumns.max] = value; this->updatePseudoAxes(); } // PseudoAxes void HKLWindow::on_cell_TreeView_pseudoAxes_write_edited(Glib::ustring const & spath, Glib::ustring const & newText) { LOG; double value; HklPseudoAxis *pseudoAxis; HklError *error; int res; Gtk::TreePath path(spath); Glib::RefPtr listStore = _TreeView_pseudoAxes->get_model(); Gtk::TreeModel::iterator iter = listStore->get_iter(path); Gtk::ListStore::Row row = *(iter); pseudoAxis = row[_pseudoAxeModelColumns.pseudoAxis]; Glib::ustring name = row[_pseudoAxeModelColumns.name]; sscanf(newText.c_str(), "%lf", &value); hkl_parameter_set_value_unit((HklParameter *)pseudoAxis, value); error = NULL; if(hkl_pseudo_axis_engine_set(pseudoAxis->engine, &error) == HKL_SUCCESS){ hkl_geometry_init_geometry(_geometry, _engines->geometries->items[0]->geometry); hkl_pseudo_axis_engine_list_get(_engines); row[_pseudoAxeModelColumns.write] = value; this->updateAxes(); this->updatePseudoAxes(); this->updatePseudoAxesFrames(); this->updateSolutions(); } } void HKLWindow::on_cell_TreeView_pseudoAxes_is_initialized_toggled(Glib::ustring const & spath) { LOG; Gtk::TreePath path(spath); Gtk::TreeModel::iterator iter = _pseudoAxeModel->get_iter(path); Gtk::ListStore::Row row = *(iter); HklPseudoAxis *pseudoAxis = row[_pseudoAxeModelColumns.pseudoAxis]; bool old_flag = row[_pseudoAxeModelColumns.is_initialized]; if (!old_flag){ int res; res = hkl_pseudo_axis_engine_initialize(pseudoAxis->engine, NULL); if(res == HKL_SUCCESS) this->updatePseudoAxes(); } } //PseuodAxes Parameters void HKLWindow::on_cell_TreeView_pseudoAxes_parameters_value_edited(Glib::ustring const & spath, Glib::ustring const & newText) { LOG; double value; HklParameter *parameter; Gtk::TreePath path(spath); Glib::RefPtr listStore = _TreeView_pseudoAxes_parameters->get_model(); Gtk::ListStore::Row row = *(listStore->get_iter(path)); sscanf(newText.c_str(), "%lf", &value); parameter = row[_parameterModelColumns.parameter]; hkl_parameter_set_value_unit(parameter, value); row[_parameterModelColumns.value] = value; this->updatePseudoAxes(); this->update_pseudoAxes_parameters(); } void HKLWindow::on_cell_TreeView_crystals_name_edited(Glib::ustring const & spath, Glib::ustring const & newText) { LOG; HklSample *sample; Gtk::TreePath path(spath); Glib::RefPtr listStore = _treeViewCrystals->get_model(); Gtk::TreeModel::iterator iter = listStore->get_iter(path); Gtk::ListStore::Row row = *(iter); Glib::ustring name = row[_crystalModelColumns.name]; sample = hkl_sample_list_get_by_name(_samples, name.c_str()); if(sample){ hkl_sample_set_name(sample, newText.c_str()); this-> updateTreeViewCrystals(); } } void HKLWindow::on_cell_TreeView_reflections_h_edited(Glib::ustring const & spath, Glib::ustring const & newText) { LOG; HklSample *sample; Gtk::TreePath path(spath); Glib::RefPtr listStore = _treeViewReflections->get_model(); Gtk::TreeModel::iterator iter = listStore->get_iter(path); Gtk::ListStore::Row row = *(iter); sample = _samples->current; if(sample){ int index; double h; double k; double l; HklSampleReflection *reflection; index = row[_reflectionModelColumns.index]; reflection = sample->reflections[index]; sscanf(newText.c_str(), "%lf", &h); k = reflection->hkl.data[1]; l = reflection->hkl.data[2]; hkl_sample_reflection_set_hkl(reflection, h, k, l); row[_reflectionModelColumns.h] = h; row[_reflectionModelColumns.flag] = reflection->flag; this->updateCrystalModel(sample); } } void HKLWindow::on_cell_TreeView_reflections_k_edited(Glib::ustring const & spath, Glib::ustring const & newText) { LOG; HklSample *sample; Gtk::TreePath path(spath); Glib::RefPtr listStore = _treeViewReflections->get_model(); Gtk::TreeModel::iterator iter = listStore->get_iter(path); Gtk::ListStore::Row row = *(iter); sample = _samples->current; if(sample){ int index; double h; double k; double l; HklSampleReflection *reflection; index = row[_reflectionModelColumns.index]; reflection = sample->reflections[index]; h = reflection->hkl.data[0]; sscanf(newText.c_str(), "%lf", &k); l = reflection->hkl.data[2]; hkl_sample_reflection_set_hkl(reflection, h, k, l); row[_reflectionModelColumns.k] = k; row[_reflectionModelColumns.flag] = reflection->flag; this->updateCrystalModel(sample); } } void HKLWindow::on_cell_TreeView_reflections_l_edited(Glib::ustring const & spath, Glib::ustring const & newText) { LOG; HklSample *sample; Gtk::TreePath path(spath); Glib::RefPtr listStore = _treeViewReflections->get_model(); Gtk::TreeModel::iterator iter = listStore->get_iter(path); Gtk::ListStore::Row row = *(iter); sample = _samples->current; if(sample){ int index; double h; double k; double l; HklSampleReflection *reflection; index = row[_reflectionModelColumns.index]; reflection = sample->reflections[index]; h = reflection->hkl.data[0]; k = reflection->hkl.data[1]; sscanf(newText.c_str(), "%lf", &l); hkl_sample_reflection_set_hkl(reflection, h, k, l); row[_reflectionModelColumns.l] = l; row[_reflectionModelColumns.flag] = reflection->flag; this->updateCrystalModel(sample); } } void HKLWindow::on_cell_TreeView_reflections_flag_toggled(Glib::ustring const & spath) { LOG; HklSample *sample; Gtk::TreePath path(spath); Glib::RefPtr listStore = _treeViewReflections->get_model(); Gtk::TreeModel::iterator iter = listStore->get_iter(path); Gtk::ListStore::Row row = *(iter); sample = _samples->current; if(sample){ int index; int flag; HklSampleReflection *reflection; index = row[_reflectionModelColumns.index]; reflection = sample->reflections[index]; flag = !reflection->flag; hkl_sample_reflection_set_flag(reflection, flag); row[_reflectionModelColumns.flag] = flag; } } void HKLWindow::on_toolbutton_add_reflection_clicked(void) { LOG; HklSample *sample; sample=_samples->current; if(sample){ double h; double k; double l; hkl_sample_add_reflection(sample, _geometry, _detector, h, k, l); this->updateReflections(sample, _mapReflectionModel[sample->name]); } } void HKLWindow::on_toolbutton_goto_reflection_clicked(void) { LOG; HklSample *sample; sample = _samples->current; if(sample){ Glib::RefPtr selection = _treeViewReflections->get_selection(); unsigned int nb_rows = selection->count_selected_rows(); if (nb_rows == 1){ Gtk::TreeSelection::ListHandle_Path list_path = selection->get_selected_rows(); Gtk::TreePath path = *(list_path.begin()); Glib::RefPtr liststore = _mapReflectionModel[sample->name]; Gtk::ListStore::Row row = *(liststore->get_iter(path)); unsigned int index = row[_reflectionModelColumns.index]; hkl_geometry_init_geometry(_geometry, sample->reflections[index]->geometry); this->updateSource(); this->updateAxes(); this->updatePseudoAxes(); }else{ if (nb_rows) _statusBar->push("Please select only one reflection."); else _statusBar->push("Please select one reflection."); } } } void HKLWindow::on_toolbutton_del_reflection_clicked(void) { LOG; HklSample * sample; sample = _samples->current; if(sample){ Glib::RefPtr selection = _treeViewReflections->get_selection(); unsigned int nb_rows = selection->count_selected_rows(); if (nb_rows){ Gtk::TreeSelection::ListHandle_Path list = selection->get_selected_rows(); Gtk::TreeSelection::ListHandle_Path::iterator iter = list.begin(); Gtk::TreeSelection::ListHandle_Path::iterator last = list.end(); Glib::RefPtr liststore = _mapReflectionModel[sample->name]; // fill indexes with the reflections index std::vector indexes; while(iter != last){ Gtk::ListStore::Row row = *(liststore->get_iter(*iter)); indexes.push_back(row[_reflectionModelColumns.index]); ++iter; } std::ostringstream os; os << "Are you sure you want to delete reflections :"; for(unsigned int i=0; i< indexes.size();i++) os << " " << indexes[i]; _message = new Gtk::MessageDialog("", false, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_YES_NO); _message->set_message(os.str()); _message->show(); int respons = _message->run(); switch (respons){ case Gtk::RESPONSE_YES: for(unsigned int i=0;iupdateReflections(sample, liststore); break; } delete _message; }else _statusBar->push("Please select at least one reflection."); } } void HKLWindow::on_toolbutton_setUB_clicked(void) { LOG; HklSample *sample = _samples->current; if(sample){ HklMatrix UB; UB.data[0][0] = _spinbutton_U11->get_value(); UB.data[0][1] = _spinbutton_U12->get_value(); UB.data[0][2] = _spinbutton_U13->get_value(); UB.data[1][0] = _spinbutton_U21->get_value(); UB.data[1][1] = _spinbutton_U22->get_value(); UB.data[1][2] = _spinbutton_U23->get_value(); UB.data[2][0] = _spinbutton_U31->get_value(); UB.data[2][1] = _spinbutton_U32->get_value(); UB.data[2][2] = _spinbutton_U33->get_value(); hkl_sample_set_UB(sample, &UB); hkl_sample_fprintf(stdout, sample); this->updateLattice(); this->updateLatticeParameters(); this->updateReciprocalLattice(); this->updateCrystalModel(_samples->current); this->updateUB(); this->updateUxUyUz(); this->updatePseudoAxes(); this->updatePseudoAxesFrames(); } } void HKLWindow::on_toolbutton_computeUB_clicked(void) { LOG; HklSample *sample = _samples->current; if(sample){ hkl_sample_compute_UB_busing_levy(sample, 0, 1); this->updateUB(); this->updateUxUyUz(); this->updatePseudoAxes(); this->updatePseudoAxesFrames(); } } void HKLWindow::on_toolbutton_add_crystal_clicked(void) { LOG; HklSample *sample = hkl_sample_new("new_sample", HKL_SAMPLE_TYPE_MONOCRYSTAL); if(sample){ hkl_sample_list_append(_samples, sample); hkl_sample_list_select_current(_samples, "new_sample"); this->updateTreeViewCrystals(); // activate for edition the name of the new crystal Gtk::TreeModel::Path path; Gtk::TreeView::Column * column; _treeViewCrystals->get_cursor(path, column); column = _treeViewCrystals->get_column(0); _treeViewCrystals->set_cursor(path, *column, true); } } void HKLWindow::on_toolbutton_copy_crystal_clicked(void) { LOG; Glib::ustring name; Glib::ustring newname; HklSample *old_sample = _samples->current; HklSample *sample; if(!old_sample){ _statusBar->push("Please select a crystal to copy."); return; } sample = hkl_sample_new_copy(_samples->current); hkl_sample_set_name(sample, "copy"); hkl_sample_list_append(_samples, sample); hkl_sample_list_select_current(_samples, "copy"); this->updateTreeViewCrystals(); // activate for edition the name of the new crystal Gtk::TreeModel::Path path; Gtk::TreeView::Column * column; _treeViewCrystals->get_cursor(path, column); column = _treeViewCrystals->get_column(0); _treeViewCrystals->set_cursor(path, *column, true); } void HKLWindow::on_toolbutton_del_crystal_clicked(void) { LOG; if(_samples->current){ hkl_sample_list_del(_samples, _samples->current); this->updateTreeViewCrystals(); } } void HKLWindow::on_toolbutton_affiner_clicked(void) { LOG; Glib::ustring name; Glib::ustring method; HklSample *sample = _samples->current; if(sample) hkl_sample_affine(sample); this->updateCrystalModel(_samples->current); this->updateLattice(); this->updateReciprocalLattice(); this->updateUB(); this->updateUxUyUz(); } bool HKLWindow::on_treeViewReflections_key_press_event(GdkEventKey * event) { LOG; switch (event->keyval) { case GDK_Insert: case GDK_KP_Insert: on_toolbutton_add_reflection_clicked(); break; case GDK_Delete: case GDK_KP_Delete: on_toolbutton_del_reflection_clicked(); break; } return true; } bool HKLWindow::on_treeViewCrystals_key_press_event(GdkEventKey * event) { LOG; switch (event->keyval) { case GDK_Insert: case GDK_KP_Insert: on_toolbutton_add_crystal_clicked(); break; case GDK_Delete: case GDK_KP_Delete: on_toolbutton_del_crystal_clicked(); break; } return true; } void HKLWindow::on_treeview1_cursor_changed(void) { LOG; size_t index; Gtk::TreeModel::Path path; Gtk::TreeViewColumn * column; _treeview1->get_cursor(path, column); Gtk::TreeModel::iterator iter = _solutionModel->get_iter(path); Gtk::ListStore::Row row = *(iter); index = row[_solutionModelColumns->index]; hkl_geometry_init_geometry(_geometry, _engines->geometries->items[index]->geometry); hkl_pseudo_axis_engine_list_get(_engines); /* this->updateLattice(); this->updateLatticeParameters(); this->updateReciprocalLattice(); this->updateUB(); */ this->updateAxes(); this->updatePseudoAxes(); this->updatePseudoAxesFrames(); } void HKLWindow::on_pseudoAxesFrame_changed(void) { LOG; this->updateAxes(); this->updatePseudoAxes(); this->updatePseudoAxesFrames(); this->updateSolutions(); } void HKLWindow::on_menuitem5_activate(void) { LOG; _dialog1->show(); } void HKLWindow::on_button1_clicked(void) { LOG; _dialog1->hide(); } void HKLWindow::on_combobox1_changed(void) { LOG; const HklGeometryConfig *config; size_t idx = _combobox1->get_active_row_number(); config = &hkl_geometry_factory_configs[idx]; if(_geometry) hkl_geometry_free(_geometry); _geometry = hkl_geometry_factory_new(config, 50 * HKL_DEGTORAD); if(_engines) hkl_pseudo_axis_engine_list_free(_engines); _engines = hkl_pseudo_axis_engine_list_factory(config); hkl_pseudo_axis_engine_list_init(_engines, _geometry, _detector, _samples->current); this->set_up_pseudo_axes_frames(); this->set_up_TreeView_axes(); this->set_up_TreeView_pseudoAxes_parameters(); this->set_up_TreeView_pseudoAxes(); _solutionModelColumns = 0; this->set_up_TreeView_treeview1(); } hkl-4.0.3/gui/ghkl.desktop0000644000175000017500000000034211402452647012325 00000000000000[Desktop Entry] Version=1.0 Type=Application Name=ghkl GenericName=Diffractometer Calculation Comment=hkl library graphical interface. TryExec=ghkl Exec=ghkl MimeType=application/x-foo; Categories=Education;Science;Physics;GTKhkl-4.0.3/gui/main.cpp0000644000175000017500000000210711402652607011434 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include #include "ghkl.h" int main(int argc, char *argv[]) { Gtk::Main kit(argc, argv); HKLWindow window; kit.run(); return 0; } hkl-4.0.3/gui/ghkl.ui0000644000175000017500000040254211402652607011277 00000000000000 1 -100 100 1 10 1 -180 180 1 10 1 -180 180 1 10 1 -180 180 1 10 1 -180 180 1 10 1 -180 180 1 10 1 -180 180 1 10 1 -180 180 1 10 1 -180 180 1 10 1 -180 180 1 10 1 -180 180 1 10 1 -100 100 1 10 1 -180 180 1 10 1 -180 180 1 10 1 -180 180 1 10 1 -180 180 1 10 1 100 1 10 1 100 1 10 1 100 1 10 1 100 1 10 1 100 1 10 1 100 1 10 -3 -100 100 1 10 1 100 1 10 1 10000 1 10 6 -180 180 1 10 1 -180 180 1 10 1 -180 180 1 10 1 -180 180 1 10 True gHKL True vertical True True _Fichier True True gtk-new True True True gtk-open True True True gtk-save True True True gtk-save-as True True True True gtk-quit True True True True É_dition True True gtk-cut True True True gtk-copy True True True gtk-paste True True True gtk-delete True True True gtk-preferences True True True True _Affichage True True Aid_e True True gtk-about True True True False 0 True True True vertical True 6 0 none True 6 6 12 True True True True <b>Axes</b> True False False 0 True True 6 0 none True 6 6 12 True vertical True True True 0 True True True 1 True <b>PseudoAxes</b> True False False 1 True 6 0 True 12 True True True <b>Solutions</b> True 3 False False True True True 6 vertical 6 True both True gtk-add False True True gtk-copy False True True gtk-delete False True True False True set UB True gtk-preferences False True True Compute UB True gtk-execute False True True Affiner True gtk-execute False True False False 0 True True never in True True 1 True True True vertical 3 True both True gtk-add False True True gtk-jump-to False True True gtk-delete False True True False False False 0 True True never in True True True 1 True reflections False True True True vertical True 4 4 3 3 True 0 label37 3 4 2 3 GTK_FILL True 0 label34 3 4 1 2 GTK_FILL True z 3 4 True x 1 2 True 0 label40 3 4 3 4 GTK_FILL True 0 label39 2 3 3 4 GTK_FILL True 0 label38 1 2 3 4 GTK_FILL True y 2 3 True 0 label36 2 3 2 3 GTK_FILL True 0 label35 1 2 2 3 GTK_FILL True 0 label33 2 3 1 2 GTK_FILL True 0 label32 1 2 1 2 GTK_FILL True a* 1 2 True b* 2 3 True c* 3 4 0 True 3 3 True True adjustment35 4 True True adjustment36 4 1 2 True True adjustment37 4 2 3 True True adjustment38 4 1 2 True True adjustment39 4 1 2 1 2 True True adjustment40 4 2 3 1 2 True True adjustment41 4 2 3 True True adjustment42 4 1 2 2 3 True True adjustment43 4 2 3 2 3 1 1 False True UB 1 False True vertical True 10 4 True True adjustment6 1 3 True if-valid 1 2 1 2 True True adjustment7 1 3 True if-valid 1 2 2 3 True True adjustment8 1 3 True if-valid 1 2 3 4 True True adjustment9 1 3 True if-valid 1 2 4 5 True True adjustment10 1 3 True if-valid 1 2 5 6 True True adjustment11 1 3 True if-valid 1 2 6 7 True 0 Values center 1 2 True 0 Minimum center 2 3 True 0 Maximum center 3 4 True True adjustment12 1 3 True if-valid 2 3 1 2 True True adjustment13 1 3 True if-valid 2 3 2 3 True True adjustment14 1 3 True if-valid 2 3 3 4 True True adjustment15 1 3 True if-valid 2 3 4 5 True True adjustment16 1 3 True if-valid 2 3 5 6 True True adjustment17 1 3 True if-valid 2 3 6 7 True True adjustment18 1 3 True if-valid 3 4 1 2 True True adjustment19 1 3 True if-valid 3 4 2 3 True True adjustment20 1 3 True if-valid 3 4 3 4 True True adjustment21 1 3 True if-valid 3 4 4 5 True True adjustment22 1 3 True if-valid 3 4 5 6 True True adjustment23 1 3 True if-valid 3 4 6 7 a True True False True True 1 2 GTK_FILL b True True False True True 2 3 GTK_FILL c True True False True True 3 4 GTK_FILL alpha True True False True True 4 5 GTK_FILL beta True True False True True 5 6 GTK_FILL gamma True True False True True 6 7 GTK_FILL True True adjustment32 3 True 1 2 7 8 True True adjustment33 3 True 1 2 8 9 True True adjustment34 3 True 1 2 9 10 Ux True True False True True 7 8 GTK_FILL Uy True True False True True 8 9 GTK_FILL Uz True True False True True 9 10 GTK_FILL 0 True gtk-apply True True True True False False 0 1 2 False True fit parameters 2 False True 4 3 3 3 True 0 a* GTK_FILL True 0 b* 1 2 GTK_FILL True 0 c* 2 3 GTK_FILL True 0 alpha* 2 3 GTK_FILL True 0 beta* 1 2 2 3 GTK_FILL True 0 gamma* 2 3 2 3 GTK_FILL True False True adjustment24 1 3 True 1 2 True False True adjustment25 1 3 True 2 3 1 2 True False True adjustment26 1 3 True 3 4 True False True adjustment27 1 3 True 1 2 3 4 True False True adjustment28 1 3 True 2 3 3 4 True False True adjustment29 1 3 True 1 2 1 2 3 True extra 3 False 2 1 True crystals False True vertical 1 True pseudo axes 1 False True True 6 0 none True 12 True 6 True Lambda : False False 0 True True adjustment4 1 3 False False 1 True <b>Source</b> True 2 False True source 2 False True True 1 True False False 2 100 1 10 100 1 10 -180 180 1 10 -180 180 1 10 -180 180 1 10 True 5 Preferences False normal True vertical 2 True True Diffractometer type : False False 0 True liststore1 0 False False 1 False False 1 True end gtk-close True True True True False False 0 False False end 0 button1 -100 100 1 10 -100 100 1 10 -100 100 1 10 -100 100 1 10 -100 100 1 10 -100 100 1 10 -100 100 1 10 -100 100 1 10 -100 100 1 10 hkl-4.0.3/gui/pseudoaxesframe.cpp0000644000175000017500000001363411402652607013712 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #include "pseudoaxesframe.h" PseudoAxesFrame::PseudoAxesFrame(HklPseudoAxisEngine *engine) { Gtk::CellRenderer * renderer; _engine = engine; //Get Glade UI: _refGlade = Gtk::Builder::create(); try{ _refGlade->add_from_file("pseudo.ui"); }catch(...){ std::string filename = Glib::build_filename(PKGDATA, "pseudo.ui"); if(!_refGlade->add_from_file(filename)) exit(1); } // widgets _refGlade->get_widget("frame1", _frame1); _refGlade->get_widget("label2", _label2); _refGlade->get_widget("combobox1", _combobox1); _refGlade->get_widget("expander1", _expander1); _refGlade->get_widget("treeview1", _treeview1); _refGlade->get_widget("button1", _button1); _refGlade->get_widget("button2", _button2); // objects _mode_ListStore = Glib::RefPtr::cast_dynamic( _refGlade->get_object("liststore1")); _pseudoAxis_ListStore = Glib::RefPtr::cast_dynamic( _refGlade->get_object("liststore2")); _mode_parameter_ListStore = Glib::RefPtr::cast_dynamic( _refGlade->get_object("liststore3")); // title _label2->set_label(_engine->name); // update all the liststore this->updatePseudoAxis(); this->updateMode(); this->updateModeParameters(); // connect signals _combobox1->signal_changed().connect( sigc::mem_fun(*this, &PseudoAxesFrame::on_combobox1_changed) ); renderer = _treeview1->get_column_cell_renderer(1); // 1 is the index of the value column dynamic_cast(renderer)->signal_edited().connect( sigc::mem_fun(*this, &PseudoAxesFrame::on_cell_TreeView_pseudoAxis_value_edited)); _button1->signal_clicked ().connect ( sigc::mem_fun (*this, &PseudoAxesFrame::on_button1_clicked) ); _button2->signal_clicked ().connect ( sigc::mem_fun (*this, &PseudoAxesFrame::on_button2_clicked) ); } PseudoAxesFrame::~PseudoAxesFrame(void) { } void PseudoAxesFrame::update(void) { Gtk::CellRenderer *renderer; this->updatePseudoAxis(); renderer = _treeview1->get_column_cell_renderer(1); // 1 is the index of the value column renderer->property_cell_background().set_value("white"); } /************/ /* Callback */ /************/ void PseudoAxesFrame::on_combobox1_changed(void) { size_t idx = _combobox1->get_active_row_number(); if(idx < HKL_LIST_LEN(_engine->modes)){ hkl_pseudo_axis_engine_select_mode(_engine, idx); this->updateModeParameters(); } } void PseudoAxesFrame::on_cell_TreeView_pseudoAxis_value_edited(Glib::ustring const & spath, Glib::ustring const & newText) { double value; HklPseudoAxis *pseudo; Gtk::TreePath path(spath); Gtk::TreeModel::iterator iter = _pseudoAxis_ListStore->get_iter(path); Gtk::ListStore::Row row = *(iter); sscanf(newText.c_str(), "%lf", &value); pseudo = row[_pseudoAxis_columns.pseudo]; if(pseudo){ Gtk::CellRenderer *renderer; renderer = _treeview1->get_column_cell_renderer(1); // 1 is the index of the value column renderer->property_cell_background().set_value("red"); hkl_parameter_set_value_unit((HklParameter *)pseudo, value); row[_pseudoAxis_columns.value] = value; } } void PseudoAxesFrame::on_button1_clicked(void) { if(hkl_pseudo_axis_engine_set(_engine, NULL) == HKL_SUCCESS){ hkl_geometry_init_geometry(_engine->engines->geometry, _engine->engines->geometries->items[0]->geometry); this->_signal_changed(); } } void PseudoAxesFrame::on_button2_clicked(void) { fprintf(stdout, "coucou\n"); if(hkl_pseudo_axis_engine_initialize(_engine, NULL) == HKL_SUCCESS){ this->updateModeParameters(); //some initialize function modify the parameters hkl_pseudo_axis_engine_fprintf(stdout, _engine); } } /****************/ /* Non-Callback */ /****************/ void PseudoAxesFrame::updatePseudoAxis(void) { size_t i; _pseudoAxis_ListStore->clear(); for(i=0; ipseudoAxes); ++i){ Gtk::TreeRow row = *(_pseudoAxis_ListStore->append()); row[_pseudoAxis_columns.name] = ((HklParameter *)_engine->pseudoAxes[i])->name; row[_pseudoAxis_columns.value] = hkl_parameter_get_value_unit((HklParameter *)_engine->pseudoAxes[i]); row[_pseudoAxis_columns.pseudo] = _engine->pseudoAxes[i]; } } void PseudoAxesFrame::updateMode(void) { size_t i; _mode_ListStore->clear(); for(i=0; imodes); ++i){ Gtk::TreeRow row = *(_mode_ListStore->append()); row[_mode_columns.name] = _engine->modes[i]->name; } } void PseudoAxesFrame::updateModeParameters(void) { size_t i; if(_engine->mode){ size_t len = HKL_LIST_LEN(_engine->mode->parameters); if(len){ _mode_parameter_ListStore->clear(); for(i=0; iappend()); row[_pseudoAxis_columns.name] = _engine->mode->parameters[i].name; row[_pseudoAxis_columns.value] = hkl_parameter_get_value_unit(&_engine->mode->parameters[i]); } _expander1->set_expanded(1); _expander1->show(); }else _expander1->hide(); }else _expander1->hide(); } /***********/ /* signals */ /***********/ PseudoAxesFrame::type_signal_changed PseudoAxesFrame::signal_changed(void) { return _signal_changed; } hkl-4.0.3/gui/pseudo.ui0000644000175000017500000002122111366756371011654 00000000000000 True 0 none True 12 True vertical True True liststore2 False 0 both True pseudo axis 0 value True 1 0 True 3 True mode False False 0 True liststore1 True 0 1 gtk-jump-to True True True True False False 2 Initializer True True True False False 3 False False 1 True True True True liststore3 False False True 0 parameter 0 value True 1 True parameters 2 True frame1 hkl-4.0.3/gui/ghkl.h0000644000175000017500000002402211402652607011102 00000000000000/* This file is part of the hkl library. * * The hkl library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The hkl library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the hkl library. If not, see . * * Copyright (C) 2003-2010 Synchrotron SOLEIL * L'Orme des Merisiers Saint-Aubin * BP 48 91192 GIF-sur-YVETTE CEDEX * * Authors: Picca Frédéric-Emmanuel */ #ifndef __GHKL_H__ #define __GHKL_H__ #include #include #include #include "pseudoaxesframe.h" #include "modelcolumns.h" #define LOG std::cout << __func__ << std::endl; class HKLWindow : public Gtk::Window { public: HKLWindow(void); virtual ~HKLWindow(void); protected: //Signal handlers virtual void on_button2_clicked(void); virtual void on_spinbutton_a_value_changed(void); virtual void on_spinbutton_b_value_changed(void); virtual void on_spinbutton_c_value_changed(void); virtual void on_spinbutton_alpha_value_changed(void); virtual void on_spinbutton_beta_value_changed(void); virtual void on_spinbutton_gamma_value_changed(void); virtual void on_spinbutton_a_min_value_changed(void); virtual void on_spinbutton_b_min_value_changed(void); virtual void on_spinbutton_c_min_value_changed(void); virtual void on_spinbutton_alpha_min_value_changed(void); virtual void on_spinbutton_beta_min_value_changed(void); virtual void on_spinbutton_gamma_min_value_changed(void); virtual void on_spinbutton_a_max_value_changed(void); virtual void on_spinbutton_b_max_value_changed(void); virtual void on_spinbutton_c_max_value_changed(void); virtual void on_spinbutton_alpha_max_value_changed(void); virtual void on_spinbutton_beta_max_value_changed(void); virtual void on_spinbutton_gamma_max_value_changed(void); virtual void on_spinbutton_lambda_value_changed(void); virtual void on_spinbutton_uxuyuz_value_changed(void); virtual void on_checkbutton_a_toggled(void); virtual void on_checkbutton_b_toggled(void); virtual void on_checkbutton_c_toggled(void); virtual void on_checkbutton_alpha_toggled(void); virtual void on_checkbutton_beta_toggled(void); virtual void on_checkbutton_gamma_toggled(void); virtual void on_checkbutton_Ux_toggled(void); virtual void on_checkbutton_Uy_toggled(void); virtual void on_checkbutton_Uz_toggled(void); virtual void on_cell_TreeView_axes_read_edited(Glib::ustring const &, Glib::ustring const &); virtual void on_cell_TreeView_axes_write_edited(Glib::ustring const &, Glib::ustring const &); virtual void on_cell_TreeView_axes_min_edited(Glib::ustring const &, Glib::ustring const &); virtual void on_cell_TreeView_axes_max_edited(Glib::ustring const &, Glib::ustring const &); virtual void on_cell_TreeView_pseudoAxes_write_edited(Glib::ustring const &, Glib::ustring const &); virtual void on_cell_TreeView_pseudoAxes_is_initialized_toggled(Glib::ustring const &); virtual void on_cell_TreeView_pseudoAxes_parameters_value_edited(Glib::ustring const &, Glib::ustring const &); virtual void on_cell_TreeView_crystals_name_edited(Glib::ustring const &, Glib::ustring const &); virtual void on_cell_TreeView_reflections_h_edited(Glib::ustring const &, Glib::ustring const &); virtual void on_cell_TreeView_reflections_k_edited(Glib::ustring const &, Glib::ustring const &); virtual void on_cell_TreeView_reflections_l_edited(Glib::ustring const &, Glib::ustring const &); virtual void on_cell_TreeView_reflections_flag_toggled(Glib::ustring const &); virtual void on_toolbutton_add_reflection_clicked(void); virtual void on_toolbutton_goto_reflection_clicked(void); virtual void on_toolbutton_del_reflection_clicked(void); virtual void on_toolbutton_setUB_clicked(void); virtual void on_toolbutton_computeUB_clicked(void); virtual void on_toolbutton_add_crystal_clicked(void); virtual void on_toolbutton_copy_crystal_clicked(void); virtual void on_toolbutton_del_crystal_clicked(void); virtual void on_toolbutton_affiner_clicked(void); virtual bool on_treeViewReflections_key_press_event(GdkEventKey *); virtual void on_treeViewCrystals_cursor_changed(void); virtual void on_treeView_pseudoAxes_cursor_changed(void); virtual bool on_treeViewCrystals_key_press_event(GdkEventKey *); virtual void on_treeview1_cursor_changed(void); virtual void on_pseudoAxesFrame_changed(void); virtual void on_menuitem5_activate(void); // dialog1 virtual void on_button1_clicked(void); virtual void on_combobox1_changed(void); protected: //Non-Signal handlers void set_up_TreeView_axes(void); void set_up_TreeView_pseudoAxes(void); void set_up_TreeView_pseudoAxes_parameters(void); void set_up_TreeView_treeview1(void); void set_up_TreeView_reflections(void); void set_up_TreeView_crystals(void); void updateSource(void); void updateAxes(void); void updatePseudoAxes(void); void update_pseudoAxes_parameters(void); void updateLattice(void); void updateLatticeParameters(void); void updateReciprocalLattice(void); void updateTreeViewCrystals(void); void updateUB(void); void updateUxUyUz(void); void updateReflections(const HklSample *sample, Glib::RefPtr &); void updateStatusBar(const HklError *error); void updateCrystalModel(HklSample *sample); void updatePseudoAxesFrames(void); void updateSolutions(void); void get_widgets_and_objects_from_ui(void); void connect_all_signals(void); void set_up_pseudo_axes_frames(void); void set_up_diffractometer_model(void); private: //variables Glib::RefPtr _refGlade; // pointers on usefull widgets. Gtk::Label *_label_UB11; Gtk::Label *_label_UB12; Gtk::Label *_label_UB13; Gtk::Label *_label_UB21; Gtk::Label *_label_UB22; Gtk::Label *_label_UB23; Gtk::Label *_label_UB31; Gtk::Label *_label_UB32; Gtk::Label *_label_UB33; Gtk::Button *_button2; Gtk::SpinButton *_spinbutton_a; Gtk::SpinButton *_spinbutton_b; Gtk::SpinButton *_spinbutton_c; Gtk::SpinButton *_spinbutton_alpha; Gtk::SpinButton *_spinbutton_beta; Gtk::SpinButton *_spinbutton_gamma; Gtk::SpinButton *_spinbutton_a_min; Gtk::SpinButton *_spinbutton_b_min; Gtk::SpinButton *_spinbutton_c_min; Gtk::SpinButton *_spinbutton_alpha_min; Gtk::SpinButton *_spinbutton_beta_min; Gtk::SpinButton *_spinbutton_gamma_min; Gtk::SpinButton *_spinbutton_a_max; Gtk::SpinButton *_spinbutton_b_max; Gtk::SpinButton *_spinbutton_c_max; Gtk::SpinButton *_spinbutton_alpha_max; Gtk::SpinButton *_spinbutton_beta_max; Gtk::SpinButton *_spinbutton_gamma_max; Gtk::SpinButton *_spinbutton_lambda; Gtk::SpinButton *_spinbutton_a_star; Gtk::SpinButton *_spinbutton_b_star; Gtk::SpinButton *_spinbutton_c_star; Gtk::SpinButton *_spinbutton_alpha_star; Gtk::SpinButton *_spinbutton_beta_star; Gtk::SpinButton *_spinbutton_gamma_star; Gtk::SpinButton *_spinbutton_ux; Gtk::SpinButton *_spinbutton_uy; Gtk::SpinButton *_spinbutton_uz; Gtk::SpinButton *_spinbutton_U11; Gtk::SpinButton *_spinbutton_U12; Gtk::SpinButton *_spinbutton_U13; Gtk::SpinButton *_spinbutton_U21; Gtk::SpinButton *_spinbutton_U22; Gtk::SpinButton *_spinbutton_U23; Gtk::SpinButton *_spinbutton_U31; Gtk::SpinButton *_spinbutton_U32; Gtk::SpinButton *_spinbutton_U33; Gtk::CheckButton *_checkbutton_a; Gtk::CheckButton *_checkbutton_b; Gtk::CheckButton *_checkbutton_c; Gtk::CheckButton *_checkbutton_alpha; Gtk::CheckButton *_checkbutton_beta; Gtk::CheckButton *_checkbutton_gamma; Gtk::CheckButton *_checkbutton_Ux; Gtk::CheckButton *_checkbutton_Uy; Gtk::CheckButton *_checkbutton_Uz; Gtk::TreeView *_treeViewReflections; Gtk::TreeView *_treeViewCrystals; Gtk::TreeView *_TreeView_axes; Gtk::TreeView *_TreeView_pseudoAxes; Gtk::TreeView *_TreeView_pseudoAxes_parameters; Gtk::TreeView *_treeview1; // attached to the _solutionModel Gtk::ToolButton *_toolbutton_add_reflection; Gtk::ToolButton *_toolbutton_goto_reflection; Gtk::ToolButton *_toolbutton_del_reflection; Gtk::ToolButton *_toolbutton_setUB; Gtk::ToolButton *_toolbutton_computeUB; Gtk::ToolButton *_toolbutton_add_crystal; Gtk::ToolButton *_toolbutton_copy_crystal; Gtk::ToolButton *_toolbutton_del_crystal; Gtk::ToolButton *_toolbutton_affiner; Gtk::Statusbar *_statusBar; Gtk::ImageMenuItem *_menuitem5; // menu preferences Gtk::ImageMenuItem *_imagemenuitem5; //quit // dialog1 preferences Gtk::Dialog *_dialog1; Gtk::Button *_button1; // close Gtk::ComboBox *_combobox1; // select diffractometer type HklGeometry *_geometry; HklDetector *_detector; HklSampleList *_samples; HklLattice *_reciprocal; HklPseudoAxisEngineList *_engines; unsigned int _nb_axes; unsigned int _nb_sampleAxes; unsigned int _nb_detectorAxes; std::vector _sampleAxesNames; std::vector _detectorAxesNames; unsigned int _nb_pseudoAxes; std::vector _pseudoAxesNames; ReflectionModelColumns _reflectionModelColumns; std::map > _mapReflectionModel; CrystalModelColumns _crystalModelColumns; Glib::RefPtr _crystalModel; AxeModelColumns _axeModelColumns; Glib::RefPtr _axeModel; PseudoAxeModelColumns _pseudoAxeModelColumns; Glib::RefPtr _pseudoAxeModel; ParameterModelColumns _parameterModelColumns; std::map > _mapPseudoAxeParameterModel; SolutionModelColumns *_solutionModelColumns; Glib::RefPtr _solutionModel; DiffractometerModelColumns *_diffractometerModelColumns; Glib::RefPtr _diffractometerModel; Gtk::MessageDialog *_message; std::vector _pseudoAxesFrames; }; #endif // __GHKL_H__ hkl-4.0.3/gui/Makefile.in0000644000175000017500000005013011402652623012046 00000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = ghkl$(EXEEXT) subdir = gui DIST_COMMON = $(dist_appl_DATA) $(dist_pkgdata_DATA) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(appldir)" \ "$(DESTDIR)$(pkgdatadir)" PROGRAMS = $(bin_PROGRAMS) am_ghkl_OBJECTS = ghkl.$(OBJEXT) ghkl-callbacks.$(OBJEXT) \ pseudoaxesframe.$(OBJEXT) main.$(OBJEXT) ghkl_OBJECTS = $(am_ghkl_OBJECTS) ghkl_LDADD = $(LDADD) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(ghkl_SOURCES) DIST_SOURCES = $(ghkl_SOURCES) am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' DATA = $(dist_appl_DATA) $(dist_pkgdata_DATA) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ GSL_CFLAGS = @GSL_CFLAGS@ GSL_CONFIG = @GSL_CONFIG@ GSL_LIBS = @GSL_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTKMM_CFLAGS = @GTKMM_CFLAGS@ GTKMM_LIBS = @GTKMM_LIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AM_CXXFLAGS = \ -I$(top_srcdir) \ -I$(top_srcdir)/hkl \ -DPKGDATA=\""$(pkgdatadir)"\" \ $(GSL_CFLAGS) \ $(GTKMM_CFLAGS) AM_LDFLAGS = \ $(top_builddir)/hkl/libhkl.la \ $(GSL_LIBS) \ $(GTKMM_LIBS) ghkl_SOURCES = \ ghkl.h \ ghkl.cpp \ ghkl-callbacks.cpp \ pseudoaxesframe.h \ pseudoaxesframe.cpp \ modelcolumns.h \ main.cpp dist_pkgdata_DATA = ghkl.ui pseudo.ui appldir = ${datadir}/applications dist_appl_DATA = ghkl.desktop all: all-am .SUFFIXES: .SUFFIXES: .cpp .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gui/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu gui/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list ghkl$(EXEEXT): $(ghkl_OBJECTS) $(ghkl_DEPENDENCIES) @rm -f ghkl$(EXEEXT) $(CXXLINK) $(ghkl_OBJECTS) $(ghkl_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ghkl-callbacks.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ghkl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pseudoaxesframe.Po@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: @am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_applDATA: $(dist_appl_DATA) @$(NORMAL_INSTALL) test -z "$(appldir)" || $(MKDIR_P) "$(DESTDIR)$(appldir)" @list='$(dist_appl_DATA)'; test -n "$(appldir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(appldir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(appldir)" || exit $$?; \ done uninstall-dist_applDATA: @$(NORMAL_UNINSTALL) @list='$(dist_appl_DATA)'; test -n "$(appldir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(appldir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(appldir)" && rm -f $$files install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(DATA) installdirs: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(appldir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_applDATA install-dist_pkgdataDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-dist_applDATA \ uninstall-dist_pkgdataDATA .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ clean-generic clean-libtool ctags distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-binPROGRAMS install-data install-data-am \ install-dist_applDATA install-dist_pkgdataDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-binPROGRAMS uninstall-dist_applDATA \ uninstall-dist_pkgdataDATA # Support for GNU Flymake, in Emacs. check-syntax: AM_CXXFLAGS += -fsyntax-only -pipe check-syntax: test -z "$(CHK_SOURCES)" || $(CXXCOMPILE) $(CHK_SOURCES) .PHONY: check-syntax # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: hkl-4.0.3/COPYING0000644000175000017500000010451411361253063010255 00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . hkl-4.0.3/Documentation/0000755000175000017500000000000011402652637012114 500000000000000hkl-4.0.3/Documentation/hkl.info0000644000175000017500000005611311402651055013466 00000000000000This is hkl.info, produced by makeinfo version 4.13 from hkl.texi. This manual is for hkl Library (version 4.0.3, 1 May 2010). Copyright (C) 2003-2010 Synchrotron SOLEIL L'Orme des Merisiers Saint-Aubin BP 48 91192 GIF-sur-YVETTE CEDEX The hkl library is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. The hkl library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with the hkl library. If not, see . INFO-DIR-SECTION Software libraries START-INFO-DIR-ENTRY * hkl: (hkl). Library for hkl diffraction computation. END-INFO-DIR-ENTRY  File: hkl.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir) hkl Diffraction Library *********************** This manual is for Hkl Diffraction Library (version 4.0.3, 1 May 2010). * Menu: * Introduction:: * Diffractometer:: * Developpement:: * Index:: --- The Detailed Node Listing --- Diffractometer * Eulerian 4 circles vertical:: * Eulerian 6 circles:: * Kappa 4 circles vertical:: * Kappa 6 circles:: * Z-axis::  File: hkl.info, Node: Introduction, Next: Diffractometer, Prev: Top, Up: Top 1 Introduction ************** The purpose of the library is to factories diffraction angles computation for different kind of diffractometers geometries. It is used at the SOLEIL, Desy and Alba synchrotron with the Tango control system to pilot diffractometers. 1.1 Features ============ * mode computation (aka PseudoAxis) * for different diffractometer geometries. * UB matrix computation. * busing & Levy with 2 reflections * simplex computation with more than 2 reflections using the GSL library. * Eulerians angles to pre-orientate your sample. * Crystal lattice affinement * with more than 2 reflections you can select which parameter must be fitted. * Pseudoaxes * psi, eulerians, q, ... 1.2 Conventions. ================ In all this document the next convention will be used to describe the diffractometers geometries. * right handed convention for all the angles. * direct space orthogonal base. * description of the diffractometer geometries is done with all axes values set to zero.  File: hkl.info, Node: Diffractometer, Next: Developpement, Prev: Introduction, Up: Top 2 Diffractometer **************** * Menu: * Eulerian 4 circles vertical:: * Eulerian 6 circles:: * Kappa 4 circles vertical:: * Kappa 6 circles:: * Z-axis::  File: hkl.info, Node: Eulerian 4 circles vertical, Next: Eulerian 6 circles, Prev: Diffractometer, Up: Diffractometer 2.1 Eulerian 4 circles vertical =============================== 2.1.1 Geometry -------------- * xrays source fix allong the \vecx direction (1, 0, 0) * 3 axes for the sample * `omega' : rotating around the -\vecy direction (0, -1, 0) * `chi' : rotating around the \vecx direction (1, 0, 0) * `phi' : rotating around the -\vecy direction (0, -1, 0) * 1 axis for the detector * `tth' : rotation around the -\vecy direction (0, -1, 0) 2.1.2 Pseudo axis `hkl' ----------------------- PseudoAxes provided : `h', `k' and `l' 2.1.2.1 mode `bissector' ........................ * Axes : `omega', `chi', `phi', `tth' * Parameters : No parameter This mode add the bissector constrain `tth = 2 * omega'. In this mode the `chi' circle containt the vector of diffusion \vecQ. So it is easy to know the orientation of the hkl plan. 2.1.2.2 mode `constant_omega' ............................. * Axes : `chi', `phi', `tth' * Parameters : No parameter This mode do not move the current `omega' axis. 2.1.2.3 mode `constant_chi' ........................... * Axes : `omega', `phi', `tth' * Parameters : No parameter This mode do not move the current `chi' axis. 2.1.2.4 mode `constant_phi' ........................... * Axes related : `omega', `chi', `tth' * Parameters : No parameter This mode do not move the current `phi' axis. 2.1.2.5 mode `double_diffraction' ................................. * Axes : `omega', `chi', `phi', `tth' * Parameters : `h2', `k2', `l2' This mode put a second hkl vector (`h2', `k2', `l2') in Bragg condition. This is usefull sometimes when you want to explore two bragg peaks without moving your sample. 2.1.2.6 mode `psi_constant' ........................... * Axes : `omega', `chi', `phi', `tth' * Parameters : `h2', `k2', `l2', `psi' This mode allow to fix the value of the pseudo axis `psi' at a constant value when you move around an `h', `k' ,`l' position. The (`h2', `k2', `l2') vector is used as a reference for the computation of the `psi' pseudo axis value. You can retrive and "freeze" the current value of the `psi' pseudo axis value into the `psi' parameter when you initialize the mode. But you can also write directly the value of the desired `psi' parameter. 2.1.3 PseudoAxis `psi' ---------------------- PseudoAxis provided : `psi' 2.1.3.1 mode `psi' .................. * Axes : `omega', `chi', `phi', `tth' * Parameters : `h1', `k1',`l1'  File: hkl.info, Node: Eulerian 6 circles, Next: Kappa 4 circles vertical, Prev: Eulerian 4 circles vertical, Up: Diffractometer 2.2 Eulerian 6 circles ====================== 2.2.1 Geometry -------------- * xrays source fix allong the \vecx direction (1, 0, 0) * 4 axes for the sample * `mu' : rotating around the \vecz direction (0, 0, 1) * `omega' : rotating around the -\vecy direction (0, -1, 0) * `chi' : rotating around the \vecx direction (1, 0, 0) * `phi' : rotating around the -\vecy direction (0, -1, 0) * 2 axes for the detector * `gamma' : rotation around the \vecz direction (0, 0, 1) * `delta' : rotation around the -\vecy direction (0, -1, 0) 2.2.2 PseudoAxes ----------------  File: hkl.info, Node: Kappa 4 circles vertical, Next: Kappa 6 circles, Prev: Eulerian 6 circles, Up: Diffractometer 2.3 Kappa 4 circles vertical ============================ 2.3.1 Geometry -------------- For this geometry there is a special parameters called \alpha which is the angle between the kappa rotation axis and the \vecy direction. * xrays source fix allong the \vecx direction (1, 0, 0) * 3 axes for the sample * `komega' : rotating around the -\vecy direction (0, -1, 0) * `kappa' : rotating around the \vecx direction (0, -\cos\alpha, -\sin\alpha) * `kphi' : rotating around the -\vecy direction (0, -1, 0) * 1 axis for the detector * `tth' : rotation around the -\vecy direction (0, -1, 0) 2.3.2 PseudoAxes ----------------  File: hkl.info, Node: Kappa 6 circles, Next: Z-axis, Prev: Kappa 4 circles vertical, Up: Diffractometer 2.4 Kappa 6 circles =================== 2.4.1 Geometry -------------- For this geometry there is a special parameters called \alpha which is the angle between the kappa rotation axis and the \vecy direction. * xrays source fix allong the \vecx direction (1, 0, 0) * 4 axes for the sample * `mu' : rotating around the \vecz direction (0, 0, 1) * `komega' : rotating around the -\vecy direction (0, -1, 0) * `kappa' : rotating around the \vecx direction (0, -\cos\alpha, -\sin\alpha) * `kphi' : rotating around the -\vecy direction (0, -1, 0) * 2 axes for the detector * `gamma' : rotation around the \vecz direction (0, 0, 1) * `delta' : rotation around the -\vecy direction (0, -1, 0) 2.4.2 PseudoAxes ----------------  File: hkl.info, Node: Z-axis, Prev: Kappa 6 circles, Up: Diffractometer 2.5 Z-Axis ========== 2.5.1 Geometry -------------- For this geometry the `mu' axis is common to the sample and the detector. * xrays source fix allong the \vecx direction (1, 0, 0) * 2 axes for the sample * `mu' : rotation around the \vecz direction (0, 0, 1) * `omega' : rotating around the -\vecy direction (0, -1, 0) * 3 axis for the detector * `mu' : rotation around the \vecz direction (0, 0, 1) * `delta' : rotation around the -\vecy direction (0, -1, 0) * `gamma' : rotation around the \vecz direction (0, 0, 1) 2.5.2 PseudoAxes ----------------  File: hkl.info, Node: Developpement, Next: Index, Prev: Diffractometer, Up: Top 3 Developpement *************** 3.1 Getting hkl =============== To get hkl, you can download the last stable version from sourceforge or if you want the latest development version use git (http://git.or.cz/) or msysgit (http://code.google.com/p/msysgit/downloads/list) on windows system and do $ git clone git://repo.or.cz/hkl.git or $ git clone http://repo.or.cz/r/hkl.git (slower) then checkout the next branch like this. $ cd hkl $ git checkout -b next origin/next 3.2 Building hkl ================ To build hkl you need Python 2.3+ (http://www.python.org) and the GNU Scientific Library 1.12+ (http://www.gnu.org/software/gsl/) $ ./waf configure $ ./waf $ ./waf install (as root) This command compile the library and the test suit if everythings goes fine you must have a `libhkl.so.4.0.3' or `libhkl.lib' depending on your platform in the `build/default/src' directory. If your platform is not supported yet please contact the . 3.3 Hacking hkl =============== you can send your patch to the using git The developpement process is like this. suppose you wan to add a new feature to hkl create first a new branch from the next one $ git checkout -b my-next next then work... $ git commit -a more work... $ git commit -a now that your great feature is ready for publication, you can send by mail your patches process like this: $ git format-patch origin/next and send files `0001_xxx' and `0002_xxx' created to the author. 3.3.1 Howto add a diffractometer -------------------------------- In this section we will describe all steps needed to add a diffractometer. We will use the kappa 4 circles exemple. 3.3.2 Adding Geometry --------------------- The first thing to do is to add the Geometry of this diffractometer. you need to edit the `hkl/hkl-geometry-factory.h' file add a new `HKL_GEOMETRY_KAPPA4C_VERTICAL' const to the `_HklGeometryType' enum _HklGeometryType { ... HKL_GEOMETRY_KAPPA4C_VERTICAL } Now you must describe the diffractometer axes and the way they are connected all togethers. This diffractometer have one sample holder and one detecter holder and four axes ("komega", "kappa", "kphi" and "tth") So you need to add a new init method for this diffractometer. static void hkl_geometry_init_kappa4C_vertical(HklGeometry *self, double alpha) { HklHolder *h; self->name = "K4CV"; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation_axis(h, "komega", 0, -1, 0); hkl_holder_add_rotation_axis(h, "kappa", 0, -cos(alpha), -sin(alpha)); hkl_holder_add_rotation_axis(h, "kphi", 0, -1, 0); h = hkl_geometry_add_holder(self); hkl_holder_add_rotation_axis(h, "tth", 0, -1, 0); } first we set the diffractometer name by self->name = "K4CV"; This name is used in the Tango diffractometer device to refer this diffractometer. Then you can create the first holder with it's three axes. The order of the axis is from the farest to the closest of the sample. In this case, komega -> kappa -> kphi. h = hkl_geometry_add_holder(self); hkl_holder_add_rotation_axis(h, "komega", 0, -1, 0); hkl_holder_add_rotation_axis(h, "kappa", 0, -cos(alpha), -sin(alpha)); hkl_holder_add_rotation_axis(h, "kphi", 0, -1, 0); Same thing for the other holder holding the detector. h = hkl_geometry_add_holder(self); hkl_holder_add_rotation_axis(h, "tth", 0, -1, 0); now it is almost finish for the geometry part. you just need to add it in the factory Hklgeometry *hkl_geometry_factory_new(HklGeometryType type, ...) { ... switch(type){ ... case HKL_GEOMETRY_KAPPA4C_VERTICAL: va_start(ap, type); alpha = va_arg(ap, double); va_end(ap); hkl_geometry_init_kappa4C_vertical(geom, alpha); break; } ... } in this exemple the geometry take one parameter. The fatory can have a variable number of parameters you just need to take care of this with the va_arg methods. 3.3.3 Adding PseudoAxis mode ---------------------------- Suppose you want to add a new mode to the hkl pseudo axes. lets call it "psi constant vertical" to the eulerian 6 circle geometry. The starting point is to look in the `src/hkl-pseudoaxis-factory.c' for HklPseudoAxisEngineList *hkl_pseudo_axis_engine_list_factory(HklGeometryType type) in that method you can see this in the eulerian 6 circle part case HKL_GEOMETRY_EULERIAN6C: hkl_pseudo_axis_engine_list_add(self, hkl_pseudo_axis_engine_e6c_hkl_new()); hkl_pseudo_axis_engine_list_add(self, hkl_pseudo_axis_engine_e6c_psi_new()); hkl_pseudo_axis_engine_list_add(self, hkl_pseudo_axis_engine_q2_new()); break; so as you can see there is three pseudo axis engine for this geometry. Your mode if for the hkl pseudo axis. so let look in the `hkl_pseudo_axis_engine_e6c_hkl_new()' method. You can find it in the `include/hkl/hkl-pseudoaxis-e6c.h' which contain this: #ifndef __HKL_PSEUDOAXIS_E6C_H__ #define __HKL_PSEUDOAXIS_E6C_H__ #include HKL_BEGIN_DECLS extern HklPseudoAxisEngine *hkl_pseudo_axis_engine_e6c_hkl_new(void); extern HklPseudoAxisEngine *hkl_pseudo_axis_engine_e6c_psi_new(void); HKL_END_DECLS #endif /* __HKL_PSEUDOAXIS_E6C_H__ */ strange only 2 methods nothing about `hkl_pseudo_axis_engine_q2_new()'. This is because the implementation of this method is common to more than one geometry. So you can find it in `hkl/hkl-pseudoaxis-common-q.h' now you need to change the code of `hkl_pseudo_axis_engine_e6c_hkl_new(void)'. Lets look about it in `src/hkl-pseudoaxis-e6c-hkl.c' HklPseudoAxisEngine *hkl_pseudo_axis_engine_e6c_hkl_new(void) { HklPseudoAxisEngine *self; HklPseudoAxisEngineMode *mode; self = hkl_pseudo_axis_engine_hkl_new(); /* bissector_vertical */ mode = hkl_pseudo_axis_engine_mode_new( "bissector_vertical", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_setter_func_bissector_vertical, 0, 4, "omega", "chi", "phi", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* constant_omega_vertical */ mode = hkl_pseudo_axis_engine_mode_new( "constant_omega_vertical", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_hkl_real, 0, 3, "chi", "phi", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* constant_chi_vertical */ mode = hkl_pseudo_axis_engine_mode_new( "constant_chi_vertical", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_hkl_real, 0, 3, "omega", "phi", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* constant_phi_vertical */ mode = hkl_pseudo_axis_engine_mode_new( "constant_phi_vertical", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_hkl_real, 0, 3, "omega", "chi", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* lifting_detector_phi */ mode = hkl_pseudo_axis_engine_mode_new( "lifting_detector_phi", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_hkl_real, 0, 3, "phi", "gamma", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* lifting_detector_omega */ mode = hkl_pseudo_axis_engine_mode_new( "lifting_detector_omega", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_hkl_real, 0, 3, "omega", "gamma", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* lifting_detector_mu */ mode = hkl_pseudo_axis_engine_mode_new( "lifting_detector_mu", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_hkl_real, 0, 3, "mu", "gamma", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* double_diffraction vertical*/ HklParameter h2; HklParameter k2; HklParameter l2; hkl_parameter_init(&h2, "h2", -1, 1, 1, HKL_TRUE, HKL_TRUE, NULL, NULL); hkl_parameter_init(&k2, "k2", -1, 1, 1, HKL_TRUE, HKL_TRUE, NULL, NULL); hkl_parameter_init(&l2, "l2", -1, 1, 1, HKL_TRUE, HKL_TRUE, NULL, NULL); mode = hkl_pseudo_axis_engine_mode_new( "double_diffraction_vertical", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_double_diffraction_real, 3, &h2, &k2, &l2, 4, "omega", "chi", "phi", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* bissector_horizontal */ mode = hkl_pseudo_axis_engine_mode_new( "bissector_horizontal", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_setter_func_bissector_horizontal, 0, 5, "mu", "omega", "chi", "phi", "gamma"); hkl_pseudo_axis_engine_add_mode(self, mode); /* double_diffraction_horizontal */ mode = hkl_pseudo_axis_engine_mode_new( "double_diffraction_horizontal", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_double_diffraction_real, 3, &h2, &k2, &l2, 4, "mu", "chi", "phi", "gamma"); hkl_pseudo_axis_engine_add_mode(self, mode); hkl_pseudo_axis_engine_select_mode(self, 0); return self; } so you "just" need to add a new mode like this /* double_diffraction_horizontal */ mode = hkl_pseudo_axis_engine_mode_new( "psi_constant_vertical", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_psi_constant_vertical, 3, &h2, &k2, &l2, 4, "omega", "chi", "phi", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); So the first parameter of the hkl_pseudo_axis_engine_mode_new method * name is the name of the mode * then the init functions (usually you need to store the current state of the geometry to be able to use the pseudo axis). Here no need for this init method so we put `NULL'. * then the get method which compute for a given geometry the pseudo axis value. the hkl get method `hkl_pseudo_axis_engine_mode_get_hkl_real' is completely generic and do not depend of the geometry. No need to write it. * then the set method which compute a geometry for the given pseudo axis values. Now you need to work a little bit and write the set method. * the parameters of your mode * * first the number of parameters : 3 * * then each parameters (pointer on the right parameters) for this mode we have 3 parameters h2, k2, l2 which are the coordinates of a sample reference direction use to compute the psi value. * the name of axes used by the set method. * * first the number of axes used by the set method : 4 * * then all axes names. In fact the "set" method know nothing about the axes names. so you can use a set method with different kind of geometries. the association is only done during the mode creation. At the end you need to add this mode to the pseudo axis engine with `hkl_pseudo_axis_engine_add_mode(self, mode)'; that's all. Now let see how this "set" method could be written. In our case we want to compute the geometry angles for a given h, k, l pseudo axis values keeping the angle between the reference reciprocal space vector (h2, k2, l2) and the diffraction plane defined by the incomming beam and the outgoing beam. static int hkl_pseudo_axis_engine_mode_set_psi_constant_vertical(HklPseudoAxisEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample) { hkl_pseudo_axis_engine_prepare_internal(engine, geometry, detector, sample); return hkl_pseudo_axis_engine_solve_function(engine, psi_constant_vertical); } the prepare internal part is about initializing the solver with the given geometry, detector and sample. Then comes the hkl_pseudo_axis_engine_solve_function which need the psi_constant_vertical function to work. This method use the GSL library to find the given function roots (where f(x) = 0). Lets see how it works for the "bissector_horizontal" mode. static int bissector_horizontal(const gsl_vector *x, void *params, gsl_vector *f) { double mu, omega, gamma; double const *x_data = gsl_vector_const_ptr(x, 0); double *f_data = gsl_vector_ptr(f, 0); RUBh_minus_Q(x_data, params, f_data); mu = x_data[0]; omega = x_data[1]; gamma = x_data[4]; f_data[3] = omega; f_data[4] = gamma - 2 * fmod(mu, M_PI); return GSL_SUCCESS; } The bissector_horizotal method is used by the setter method of the mode to compute the right set of axes angles corresponding to the pseudo axes values you want to reach. This method compute the difference between these pseudo axes values and the ones computed from the axes angles. It can be decompose in three parts: The first three of these equations are given for the function `RUBH_minus_Q': they are the diference between the h,k,l values that want to be set and the h,k,l values computed for a possible combination of angles: f_data[0] = h-h(x) f_data[1] = k-k(x) f_data[2] = l-l(x) As the bissector_horizontal mode use 5 axes you need to find 2 other equations to be able to solve your mode. The first one is omega = 0 for an horizontal mode: f_data[3] = omega and the last one is for the bissector parameter gamma = 2 * mu. f_data[4] = gamma - 2 * fmod(mu, M_PI) One question could be why this complicate `f4 = gamma - 2 * fmod(mu, M_PI)' equation instead of a simpler `f4 = gamma - 2 * mu' ? this is because the bissector_horizontal method is also called by a solution multiplicator to gives the user plenty of equivalent solutions. This multiplicator do some operations like `omega = pi - omega' or `omega = - omega' on the axes. Then it check that the new angles combination gives also f(x) = 0. This is the explaination of this more complicate equation. So in our case we need to build something like static int psi_constant_vertical(const gsl_vector *x, void *params, gsl_vector *f) { double mu, omega, gamma; double const *x_data = gsl_vector_const_ptr(x, 0); double *f_data = gsl_vector_ptr(f, 0); RUBh_minus_Q(x_data, params, f_data); f_data[3] = ???; return GSL_SUCCESS; } The missing part is about the psi computation. f3 = psi (target) - psi(x). Calculation psi is done in the psi pseudo axis common part. static int psi(const gsl_vector *x, void *params, gsl_vector *f) This psi method is the equivalent of psi_constant_vertical. So you need to factorize the psi calculation in between psi_constant_vertical and psi.  File: hkl.info, Node: Index, Prev: Developpement, Up: Top Index ***** [index] * Menu:  Tag Table: Node: Top1084 Node: Introduction1525 Node: Diffractometer2710 Node: Eulerian 4 circles vertical2964 Node: Eulerian 6 circles5602 Node: Kappa 4 circles vertical6368 Node: Kappa 6 circles7175 Node: Z-axis8085 Node: Developpement8777 Node: Index23242  End Tag Table hkl-4.0.3/Documentation/Makefile.am0000644000175000017500000000007511402452647014071 00000000000000SUBDIRS=api info_TEXINFOS = hkl.texi dist_man_MANS = ghkl.1hkl-4.0.3/Documentation/stamp-vti0000644000175000017500000000013211402652636013676 00000000000000@set UPDATED 1 May 2010 @set UPDATED-MONTH May 2010 @set EDITION 4.0.3 @set VERSION 4.0.3 hkl-4.0.3/Documentation/version.texi0000644000175000017500000000013211402651054014400 00000000000000@set UPDATED 1 May 2010 @set UPDATED-MONTH May 2010 @set EDITION 4.0.3 @set VERSION 4.0.3 hkl-4.0.3/Documentation/hkl.texi0000644000175000017500000006202311366756371013521 00000000000000\input texinfo @c -*-texinfo-*- @comment %**start of header @setfilename hkl.info @include version.texi @settitle Hkl Diffraction Library @value{VERSION} @syncodeindex pg cp @comment %**end of header @copying This manual is for hkl Library (version @value{VERSION}, @value{UPDATED}). Copyright @copyright{} 2003-2010 Synchrotron SOLEIL L'Orme des Merisiers Saint-Aubin BP 48 91192 GIF-sur-YVETTE CEDEX @quotation The hkl library is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. The hkl library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with the hkl library. If not, see . @end quotation @end copying @dircategory Software libraries @direntry * hkl: (hkl). Library for hkl diffraction computation. @end direntry @titlepage @title hkl Library @subtitle for version @value{VERSION}, @value{UPDATED} @author F-E. Picca (@email{picca@@synchrotorn-soleil.fr}) @page @vskip 0pt plus 1filll @insertcopying @end titlepage @contents @ifnottex @node Top, Introduction, (dir), (dir) @top hkl Diffraction Library This manual is for Hkl Diffraction Library (version @value{VERSION}, @value{UPDATED}). @end ifnottex @menu * Introduction:: * Diffractometer:: * Developpement:: * Index:: @detailmenu --- The Detailed Node Listing --- Diffractometer * Eulerian 4 circles vertical:: * Eulerian 6 circles:: * Kappa 4 circles vertical:: * Kappa 6 circles:: * Z-axis:: @end detailmenu @end menu @node Introduction, Diffractometer, Top, Top @chapter Introduction The purpose of the library is to factories diffraction angles computation for different kind of diffractometers geometries. It is used at the SOLEIL, Desy and Alba synchrotron with the Tango control system to pilot diffractometers. @section Features @itemize @item mode computation (aka PseudoAxis) @itemize @item for different diffractometer geometries. @end itemize @item UB matrix computation. @itemize @item busing & Levy with 2 reflections @item simplex computation with more than 2 reflections using the GSL library. @item Eulerians angles to pre-orientate your sample. @end itemize @item Crystal lattice affinement @itemize @item with more than 2 reflections you can select which parameter must be fitted. @end itemize @item Pseudoaxes @itemize @item psi, eulerians, q, ... @end itemize @end itemize @section Conventions. In all this document the next convention will be used to describe the diffractometers geometries. @itemize @item right handed convention for all the angles. @item direct space orthogonal base. @item description of the diffractometer geometries is done with all axes values set to zero. @end itemize @node Diffractometer, Developpement, Introduction, Top @chapter Diffractometer @menu * Eulerian 4 circles vertical:: * Eulerian 6 circles:: * Kappa 4 circles vertical:: * Kappa 6 circles:: * Z-axis:: @end menu @node Eulerian 4 circles vertical, Eulerian 6 circles, Diffractometer, Diffractometer @section Eulerian 4 circles vertical @subsection Geometry @itemize @item xrays source fix allong the @math{\vec{x}} direction (1, 0, 0) @item 3 axes for the sample @itemize @item @samp{omega} : rotating around the @math{-\vec{y}} direction (0, -1, 0) @item @samp{chi} : rotating around the @math{\vec{x}} direction (1, 0, 0) @item @samp{phi} : rotating around the @math{-\vec{y}} direction (0, -1, 0) @end itemize @item 1 axis for the detector @itemize @item @samp{tth} : rotation around the @math{-\vec{y}} direction (0, -1, 0) @end itemize @end itemize @subsection Pseudo axis @samp{hkl} PseudoAxes provided : @samp{h}, @samp{k} and @samp{l} @subsubsection mode @samp{bissector} @itemize @item Axes : @samp{omega}, @samp{chi}, @samp{phi}, @samp{tth} @item Parameters : No parameter @end itemize This mode add the bissector constrain @code{tth = 2 * omega}. In this mode the @samp{chi} circle containt the vector of diffusion @math{\vec{Q}}. So it is easy to know the orientation of the hkl plan. @subsubsection mode @samp{constant_omega} @itemize @item Axes : @samp{chi}, @samp{phi}, @samp{tth} @item Parameters : No parameter @end itemize This mode do not move the current @samp{omega} axis. @subsubsection mode @samp{constant_chi} @itemize @item Axes : @samp{omega}, @samp{phi}, @samp{tth} @item Parameters : No parameter @end itemize This mode do not move the current @samp{chi} axis. @subsubsection mode @samp{constant_phi} @itemize @item Axes related : @samp{omega}, @samp{chi}, @samp{tth} @item Parameters : No parameter @end itemize This mode do not move the current @samp{phi} axis. @subsubsection mode @samp{double_diffraction} @itemize @item Axes : @samp{omega}, @samp{chi}, @samp{phi}, @samp{tth} @item Parameters : @samp{h2}, @samp{k2}, @samp{l2} @end itemize This mode put a second hkl vector (@samp{h2}, @samp{k2}, @samp{l2}) in Bragg condition. This is usefull sometimes when you want to explore two bragg peaks without moving your sample. @subsubsection mode @samp{psi_constant} @itemize @item Axes : @samp{omega}, @samp{chi}, @samp{phi}, @samp{tth} @item Parameters : @samp{h2}, @samp{k2}, @samp{l2}, @samp{psi} @end itemize This mode allow to fix the value of the pseudo axis @samp{psi} at a constant value when you move around an @samp{h}, @samp{k} ,@samp{l} position. The (@samp{h2}, @samp{k2}, @samp{l2}) vector is used as a reference for the computation of the @samp{psi} pseudo axis value. You can retrive and ``freeze'' the current value of the @samp{psi} pseudo axis value into the @samp{psi} parameter when you initialize the mode. But you can also write directly the value of the desired @samp{psi} parameter. @subsection PseudoAxis @samp{psi} PseudoAxis provided : @samp{psi} @subsubsection mode @samp{psi} @itemize @item Axes : @samp{omega}, @samp{chi}, @samp{phi}, @samp{tth} @item Parameters : @samp{h1}, @samp{k1},@samp{l1} @end itemize @node Eulerian 6 circles, Kappa 4 circles vertical, Eulerian 4 circles vertical, Diffractometer @section Eulerian 6 circles @subsection Geometry @itemize @item xrays source fix allong the @math{\vec{x}} direction (1, 0, 0) @item 4 axes for the sample @itemize @item @samp{mu} : rotating around the @math{\vec{z}} direction (0, 0, 1) @item @samp{omega} : rotating around the @math{-\vec{y}} direction (0, -1, 0) @item @samp{chi} : rotating around the @math{\vec{x}} direction (1, 0, 0) @item @samp{phi} : rotating around the @math{-\vec{y}} direction (0, -1, 0) @end itemize @item 2 axes for the detector @itemize @item @samp{gamma} : rotation around the @math{\vec{z}} direction (0, 0, 1) @item @samp{delta} : rotation around the @math{-\vec{y}} direction (0, -1, 0) @end itemize @end itemize @subsection PseudoAxes @node Kappa 4 circles vertical, Kappa 6 circles, Eulerian 6 circles, Diffractometer @section Kappa 4 circles vertical @subsection Geometry For this geometry there is a special parameters called @math{\alpha} which is the angle between the kappa rotation axis and the @math{\vec{y}} direction. @itemize @item xrays source fix allong the @math{\vec{x}} direction (1, 0, 0) @item 3 axes for the sample @itemize @item @samp{komega} : rotating around the @math{-\vec{y}} direction (0, -1, 0) @item @samp{kappa} : rotating around the @math{\vec{x}} direction (0, @math{-\cos\alpha}, @math{-\sin\alpha}) @item @samp{kphi} : rotating around the @math{-\vec{y}} direction (0, -1, 0) @end itemize @item 1 axis for the detector @itemize @item @samp{tth} : rotation around the @math{-\vec{y}} direction (0, -1, 0) @end itemize @end itemize @subsection PseudoAxes @node Kappa 6 circles, Z-axis, Kappa 4 circles vertical, Diffractometer @section Kappa 6 circles @subsection Geometry For this geometry there is a special parameters called @math{\alpha} which is the angle between the kappa rotation axis and the @math{\vec{y}} direction. @itemize @item xrays source fix allong the @math{\vec{x}} direction (1, 0, 0) @item 4 axes for the sample @itemize @item @samp{mu} : rotating around the @math{\vec{z}} direction (0, 0, 1) @item @samp{komega} : rotating around the @math{-\vec{y}} direction (0, -1, 0) @item @samp{kappa} : rotating around the @math{\vec{x}} direction (0, @math{-\cos\alpha}, @math{-\sin\alpha}) @item @samp{kphi} : rotating around the @math{-\vec{y}} direction (0, -1, 0) @end itemize @item 2 axes for the detector @itemize @item @samp{gamma} : rotation around the @math{\vec{z}} direction (0, 0, 1) @item @samp{delta} : rotation around the @math{-\vec{y}} direction (0, -1, 0) @end itemize @end itemize @subsection PseudoAxes @node Z-axis, , Kappa 6 circles, Diffractometer @section Z-Axis @subsection Geometry For this geometry the @samp{mu} axis is common to the sample and the detector. @itemize @item xrays source fix allong the @math{\vec{x}} direction (1, 0, 0) @item 2 axes for the sample @itemize @item @samp{mu} : rotation around the @math{\vec{z}} direction (0, 0, 1) @item @samp{omega} : rotating around the @math{-\vec{y}} direction (0, -1, 0) @end itemize @item 3 axis for the detector @itemize @item @samp{mu} : rotation around the @math{\vec{z}} direction (0, 0, 1) @item @samp{delta} : rotation around the @math{-\vec{y}} direction (0, -1, 0) @item @samp{gamma} : rotation around the @math{\vec{z}} direction (0, 0, 1) @end itemize @end itemize @subsection PseudoAxes @node Developpement, Index, Diffractometer, Top @chapter Developpement @section Getting hkl To get hkl, you can download the last stable version from sourceforge or if you want the latest development version use @uref{http://git.or.cz/, git} or @uref{http://code.google.com/p/msysgit/downloads/list, msysgit} on windows system and do @example $ git clone git://repo.or.cz/hkl.git @end example or @example $ git clone http://repo.or.cz/r/hkl.git (slower) @end example then checkout the next branch like this. @example $ cd hkl $ git checkout -b next origin/next @end example @section Building hkl To build hkl you need @uref{http://www.python.org, Python 2.3+} and the @uref{http://www.gnu.org/software/gsl/, GNU Scientific Library 1.12+} @example $ ./waf configure $ ./waf $ ./waf install (as root) @end example This command compile the library and the test suit if everythings goes fine you must have a @file{libhkl.so.@value{VERSION}} or @file{libhkl.lib} depending on your platform in the @file{build/default/src} directory. If your platform is not supported yet please contact the @email{picca@@synchrotron-soleil.fr}. @section Hacking hkl you can send your patch to the @email{picca@@synchrotron-soleil.fr} using git The developpement process is like this. suppose you wan to add a new feature to hkl create first a new branch from the next one @example $ git checkout -b my-next next @end example then work... @example $ git commit -a @end example more work... @example $ git commit -a @end example now that your great feature is ready for publication, you can send by mail your patches process like this: @example $ git format-patch origin/next @end example and send files @file{0001_xxx} and @file{0002_xxx} created to the author. @subsection Howto add a diffractometer In this section we will describe all steps needed to add a diffractometer. We will use the kappa 4 circles exemple. @subsection Adding Geometry The first thing to do is to add the Geometry of this diffractometer. you need to edit the @file{hkl/hkl-geometry-factory.h} file add a new @code{HKL_GEOMETRY_KAPPA4C_VERTICAL} const to the @code{_HklGeometryType} @verbatim enum _HklGeometryType { ... HKL_GEOMETRY_KAPPA4C_VERTICAL } @end verbatim Now you must describe the diffractometer axes and the way they are connected all togethers. This diffractometer have one sample holder and one detecter holder and four axes ("komega", "kappa", "kphi" and "tth") So you need to add a new init method for this diffractometer. @verbatim static void hkl_geometry_init_kappa4C_vertical(HklGeometry *self, double alpha) { HklHolder *h; self->name = "K4CV"; h = hkl_geometry_add_holder(self); hkl_holder_add_rotation_axis(h, "komega", 0, -1, 0); hkl_holder_add_rotation_axis(h, "kappa", 0, -cos(alpha), -sin(alpha)); hkl_holder_add_rotation_axis(h, "kphi", 0, -1, 0); h = hkl_geometry_add_holder(self); hkl_holder_add_rotation_axis(h, "tth", 0, -1, 0); } @end verbatim first we set the diffractometer name by @verbatim self->name = "K4CV"; @end verbatim This name is used in the Tango diffractometer device to refer this diffractometer. Then you can create the first holder with it's three axes. The order of the axis is from the farest to the closest of the sample. In this case, komega -> kappa -> kphi. @verbatim h = hkl_geometry_add_holder(self); hkl_holder_add_rotation_axis(h, "komega", 0, -1, 0); hkl_holder_add_rotation_axis(h, "kappa", 0, -cos(alpha), -sin(alpha)); hkl_holder_add_rotation_axis(h, "kphi", 0, -1, 0); @end verbatim Same thing for the other holder holding the detector. @verbatim h = hkl_geometry_add_holder(self); hkl_holder_add_rotation_axis(h, "tth", 0, -1, 0); @end verbatim now it is almost finish for the geometry part. you just need to add it in the factory @verbatim Hklgeometry *hkl_geometry_factory_new(HklGeometryType type, ...) { ... switch(type){ ... case HKL_GEOMETRY_KAPPA4C_VERTICAL: va_start(ap, type); alpha = va_arg(ap, double); va_end(ap); hkl_geometry_init_kappa4C_vertical(geom, alpha); break; } ... } @end verbatim in this exemple the geometry take one parameter. The fatory can have a variable number of parameters you just need to take care of this with the va_arg methods. @subsection Adding PseudoAxis mode Suppose you want to add a new mode to the hkl pseudo axes. lets call it "psi constant vertical" to the eulerian 6 circle geometry. The starting point is to look in the @file{src/hkl-pseudoaxis-factory.c} for @verbatim HklPseudoAxisEngineList *hkl_pseudo_axis_engine_list_factory(HklGeometryType type) @end verbatim in that method you can see this in the eulerian 6 circle part @verbatim case HKL_GEOMETRY_EULERIAN6C: hkl_pseudo_axis_engine_list_add(self, hkl_pseudo_axis_engine_e6c_hkl_new()); hkl_pseudo_axis_engine_list_add(self, hkl_pseudo_axis_engine_e6c_psi_new()); hkl_pseudo_axis_engine_list_add(self, hkl_pseudo_axis_engine_q2_new()); break; @end verbatim so as you can see there is three pseudo axis engine for this geometry. Your mode if for the hkl pseudo axis. so let look in the @code{hkl_pseudo_axis_engine_e6c_hkl_new()} method. You can find it in the @file{include/hkl/hkl-pseudoaxis-e6c.h} which contain this: @verbatim #ifndef __HKL_PSEUDOAXIS_E6C_H__ #define __HKL_PSEUDOAXIS_E6C_H__ #include HKL_BEGIN_DECLS extern HklPseudoAxisEngine *hkl_pseudo_axis_engine_e6c_hkl_new(void); extern HklPseudoAxisEngine *hkl_pseudo_axis_engine_e6c_psi_new(void); HKL_END_DECLS #endif /* __HKL_PSEUDOAXIS_E6C_H__ */ @end verbatim strange only 2 methods nothing about @code{hkl_pseudo_axis_engine_q2_new()}. This is because the implementation of this method is common to more than one geometry. So you can find it in @file{hkl/hkl-pseudoaxis-common-q.h} now you need to change the code of @code{hkl_pseudo_axis_engine_e6c_hkl_new(void)}. Lets look about it in @file{src/hkl-pseudoaxis-e6c-hkl.c} @verbatim HklPseudoAxisEngine *hkl_pseudo_axis_engine_e6c_hkl_new(void) { HklPseudoAxisEngine *self; HklPseudoAxisEngineMode *mode; self = hkl_pseudo_axis_engine_hkl_new(); /* bissector_vertical */ mode = hkl_pseudo_axis_engine_mode_new( "bissector_vertical", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_setter_func_bissector_vertical, 0, 4, "omega", "chi", "phi", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* constant_omega_vertical */ mode = hkl_pseudo_axis_engine_mode_new( "constant_omega_vertical", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_hkl_real, 0, 3, "chi", "phi", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* constant_chi_vertical */ mode = hkl_pseudo_axis_engine_mode_new( "constant_chi_vertical", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_hkl_real, 0, 3, "omega", "phi", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* constant_phi_vertical */ mode = hkl_pseudo_axis_engine_mode_new( "constant_phi_vertical", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_hkl_real, 0, 3, "omega", "chi", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* lifting_detector_phi */ mode = hkl_pseudo_axis_engine_mode_new( "lifting_detector_phi", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_hkl_real, 0, 3, "phi", "gamma", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* lifting_detector_omega */ mode = hkl_pseudo_axis_engine_mode_new( "lifting_detector_omega", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_hkl_real, 0, 3, "omega", "gamma", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* lifting_detector_mu */ mode = hkl_pseudo_axis_engine_mode_new( "lifting_detector_mu", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_hkl_real, 0, 3, "mu", "gamma", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* double_diffraction vertical*/ HklParameter h2; HklParameter k2; HklParameter l2; hkl_parameter_init(&h2, "h2", -1, 1, 1, HKL_TRUE, HKL_TRUE, NULL, NULL); hkl_parameter_init(&k2, "k2", -1, 1, 1, HKL_TRUE, HKL_TRUE, NULL, NULL); hkl_parameter_init(&l2, "l2", -1, 1, 1, HKL_TRUE, HKL_TRUE, NULL, NULL); mode = hkl_pseudo_axis_engine_mode_new( "double_diffraction_vertical", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_double_diffraction_real, 3, &h2, &k2, &l2, 4, "omega", "chi", "phi", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); /* bissector_horizontal */ mode = hkl_pseudo_axis_engine_mode_new( "bissector_horizontal", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_setter_func_bissector_horizontal, 0, 5, "mu", "omega", "chi", "phi", "gamma"); hkl_pseudo_axis_engine_add_mode(self, mode); /* double_diffraction_horizontal */ mode = hkl_pseudo_axis_engine_mode_new( "double_diffraction_horizontal", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_double_diffraction_real, 3, &h2, &k2, &l2, 4, "mu", "chi", "phi", "gamma"); hkl_pseudo_axis_engine_add_mode(self, mode); hkl_pseudo_axis_engine_select_mode(self, 0); return self; } @end verbatim so you "just" need to add a new mode like this @verbatim /* double_diffraction_horizontal */ mode = hkl_pseudo_axis_engine_mode_new( "psi_constant_vertical", NULL, hkl_pseudo_axis_engine_mode_get_hkl_real, hkl_pseudo_axis_engine_mode_set_psi_constant_vertical, 3, &h2, &k2, &l2, 4, "omega", "chi", "phi", "delta"); hkl_pseudo_axis_engine_add_mode(self, mode); @end verbatim So the first parameter of the hkl_pseudo_axis_engine_mode_new method @itemize @item name is the name of the mode @item then the init functions (usually you need to store the current state of the geometry to be able to use the pseudo axis). Here no need for this init method so we put @code{NULL}. @item then the get method which compute for a given geometry the pseudo axis value. the hkl get method @code{hkl_pseudo_axis_engine_mode_get_hkl_real} is completely generic and do not depend of the geometry. No need to write it. @item then the set method which compute a geometry for the given pseudo axis values. Now you need to work a little bit and write the set method. @item the parameters of your mode @item * first the number of parameters : 3 @item * then each parameters (pointer on the right parameters) for this mode we have 3 parameters h2, k2, l2 which are the coordinates of a sample reference direction use to compute the psi value. @item the name of axes used by the set method. @item * first the number of axes used by the set method : 4 @item * then all axes names. @end itemize In fact the "set" method know nothing about the axes names. so you can use a set method with different kind of geometries. the association is only done during the mode creation. At the end you need to add this mode to the pseudo axis engine with @code{hkl_pseudo_axis_engine_add_mode(self, mode)}; that's all. Now let see how this "set" method could be written. In our case we want to compute the geometry angles for a given h, k, l pseudo axis values keeping the angle between the reference reciprocal space vector (h2, k2, l2) and the diffraction plane defined by the incomming beam and the outgoing beam. @verbatim static int hkl_pseudo_axis_engine_mode_set_psi_constant_vertical(HklPseudoAxisEngine *engine, HklGeometry *geometry, HklDetector *detector, HklSample *sample) { hkl_pseudo_axis_engine_prepare_internal(engine, geometry, detector, sample); return hkl_pseudo_axis_engine_solve_function(engine, psi_constant_vertical); } @end verbatim the prepare internal part is about initializing the solver with the given geometry, detector and sample. Then comes the hkl_pseudo_axis_engine_solve_function which need the psi_constant_vertical function to work. This method use the GSL library to find the given function roots (where f(x) = 0). Lets see how it works for the "bissector_horizontal" mode. @verbatim static int bissector_horizontal(const gsl_vector *x, void *params, gsl_vector *f) { double mu, omega, gamma; double const *x_data = gsl_vector_const_ptr(x, 0); double *f_data = gsl_vector_ptr(f, 0); RUBh_minus_Q(x_data, params, f_data); mu = x_data[0]; omega = x_data[1]; gamma = x_data[4]; f_data[3] = omega; f_data[4] = gamma - 2 * fmod(mu, M_PI); return GSL_SUCCESS; } @end verbatim The bissector_horizotal method is used by the setter method of the mode to compute the right set of axes angles corresponding to the pseudo axes values you want to reach. This method compute the difference between these pseudo axes values and the ones computed from the axes angles. It can be decompose in three parts: The first three of these equations are given for the function @code{RUBH_minus_Q}: they are the diference between the h,k,l values that want to be set and the h,k,l values computed for a possible combination of angles: @example f_data[0] = h-h(x) f_data[1] = k-k(x) f_data[2] = l-l(x) @end example As the bissector_horizontal mode use 5 axes you need to find 2 other equations to be able to solve your mode. The first one is @math{omega = 0} for an horizontal mode: @example f_data[3] = omega @end example and the last one is for the bissector parameter @math{gamma = 2 * mu}. @example f_data[4] = gamma - 2 * fmod(mu, M_PI) @end example One question could be why this complicate @code{f4 = gamma - 2 * fmod(mu, M_PI)} equation instead of a simpler @code{f4 = gamma - 2 * mu} ? this is because the bissector_horizontal method is also called by a solution multiplicator to gives the user plenty of equivalent solutions. This multiplicator do some operations like @code{omega = pi - omega} or @code{omega = - omega} on the axes. Then it check that the new angles combination gives also @math{f(x) = 0}. This is the explaination of this more complicate equation. So in our case we need to build something like @verbatim static int psi_constant_vertical(const gsl_vector *x, void *params, gsl_vector *f) { double mu, omega, gamma; double const *x_data = gsl_vector_const_ptr(x, 0); double *f_data = gsl_vector_ptr(f, 0); RUBh_minus_Q(x_data, params, f_data); f_data[3] = ???; return GSL_SUCCESS; } @end verbatim The missing part is about the psi computation. f3 = psi (target) - psi(x). Calculation psi is done in the psi pseudo axis common part. @example static int psi(const gsl_vector *x, void *params, gsl_vector *f) @end example This psi method is the equivalent of psi_constant_vertical. So you need to factorize the psi calculation in between psi_constant_vertical and psi. @node Index, , Developpement, Top @unnumbered Index @printindex cp @bye hkl-4.0.3/Documentation/ghkl.10000644000175000017500000000335411402452647013047 00000000000000.\" Hey, EMACS: -*- nroff -*- .\" First parameter, NAME, should be all caps .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" other parameters are allowed: see man(7), man(1) .TH GHKL 1 "June 1, 2010" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: .\" .nh disable hyphenation .\" .hy enable hyphenation .\" .ad l left justify .\" .ad b justify to both left and right margins .\" .nf disable filling .\" .fi enable filling .\" .br insert line break .\" .sp insert n+1 empty lines .\" for manpage-specific macros, see man(7) .SH NAME ghkl \- program to do diffractometer computation .SH SYNOPSIS .B ghkl .RI [ options ] .SH DESCRIPTION This manual page documents briefly the .B ghkl commands. .PP .\" TeX users may be more comfortable with the \fB\fP and .\" \fI\fP escape sequences to invode bold face and italics, .\" respectively. \fBghkl\fP is a program that gives you access to all the hkl library functionalities. .SH OPTIONS These programs follow the usual GNU command line syntax, with long options starting with two dashes (`-'). A summary of options is included below. For a complete description, see the Info files. .TP .B \-h, \-\-help Show summary of options. .TP .B \-v, \-\-version Show version of program. .SH SEE ALSO .BR ghkl (1), .br The programs are documented fully by .IR "The hkl library Documentation" , available via the Info system. .SH AUTHOR ghkl was written by Picca Frédéric-Emmanuel .PP This manual page was written by Picca Frédéric-Emmanuel , for the Debian project (and may be used by others). hkl-4.0.3/Documentation/api/0000755000175000017500000000000011402652636012664 500000000000000hkl-4.0.3/Documentation/api/hkl-overrides.txt0000644000175000017500000000000011402647565016116 00000000000000hkl-4.0.3/Documentation/api/hkl-docs.sgml0000644000175000017500000000467211402647566015213 00000000000000 ]> hkl Reference Manual for hkl [VERSION]. The latest version of this documentation can be found on-line at http://[SERVER]/hkl/. [Insert title here] Object Hierarchy API Index hkl-4.0.3/Documentation/api/html/0000755000175000017500000000000011402652637013631 500000000000000hkl-4.0.3/Documentation/api/html/hkl-hkl-geometry-factory.html0000644000175000017500000001277011402652636021275 00000000000000 hkl-geometry-factory

hkl-geometry-factory

hkl-geometry-factory

Description

Details

hkl_geometry_factory_get_config_from_type ()

const HklGeometryConfig * hkl_geometry_factory_get_config_from_type
                                                        (HklGeometryType type);

type :

Returns :


hkl_geometry_factory_new ()

HklGeometry *       hkl_geometry_factory_new            (const HklGeometryConfig *config,
                                                         ...);

config :

... :

Returns :

hkl-4.0.3/Documentation/api/html/hkl-hkl-macros.html0000644000175000017500000002767211402652636017270 00000000000000 hkl-macros

hkl-macros

hkl-macros

Synopsis

#define             HKL_BEGIN_DECLS
#define             HKL_END_DECLS
#define             INFINITY
#define             M_PI
#define             M_PI_2
#define             HKL_MAJOR
#define             HKL_MINOR
#define             HKL_PATCH
#define             HKL_VERSION
#define             HKL_TRUE
#define             HKL_FALSE
#define             HKL_SUCCESS
#define             HKL_FAIL
#define             HKL_TINY
#define             HKL_EPSILON
#define             HKL_DEGTORAD
#define             HKL_RADTODEG
#define             HKL_TAU
#define             HKL_EULERIAN_KAPPA_SOLUTION
#define             hkl_assert                          (x)
#define             G_GNUC_PRINTF                       (format_idx,
                                                         arg_idx)
#define             alloc_nr                            (x)
#define             ALLOC_GROW                          (x,
                                                         nr,
                                                         alloc)
#define             NORETURN
void                hkl_printbt                         (void);
#define             HKL_MALLOC                          (type)

Description

Details

HKL_BEGIN_DECLS

#define             HKL_BEGIN_DECLS


HKL_END_DECLS

#define             HKL_END_DECLS


INFINITY

# define INFINITY DBL_MAX


M_PI

# define M_PI     3.14159265358979323846264338328


M_PI_2

# define M_PI_2   1.57079632679489661923132169164


HKL_MAJOR

#define HKL_MAJOR 2


HKL_MINOR

#define HKL_MINOR 3


HKL_PATCH

#define HKL_PATCH 0


HKL_VERSION

#define HKL_VERSION (HKL_MAJOR * 10000 + HKL_MINOR * 100 + HKL_PATCH)


HKL_TRUE

#define HKL_TRUE 1


HKL_FALSE

#define HKL_FALSE 0


HKL_SUCCESS

#define HKL_SUCCESS 0


HKL_FAIL

#define HKL_FAIL -1


HKL_TINY

#define HKL_TINY 1e-7


HKL_EPSILON

#define HKL_EPSILON 1e-6


HKL_DEGTORAD

#define HKL_DEGTORAD (M_PI/180.)


HKL_RADTODEG

#define HKL_RADTODEG (180./M_PI)


HKL_TAU

#define HKL_TAU (2. * M_PI)


HKL_EULERIAN_KAPPA_SOLUTION

#define HKL_EULERIAN_KAPPA_SOLUTION 1


hkl_assert()

#define             hkl_assert(x)

x :


G_GNUC_PRINTF()

#define             G_GNUC_PRINTF( format_idx, arg_idx )

format_idx :

arg_idx :


alloc_nr()

#define alloc_nr(x) (((x)+16)*3/2)

x :


ALLOC_GROW()

#define             ALLOC_GROW(x, nr, alloc)

x :

nr :

alloc :


NORETURN

#define             NORETURN


hkl_printbt ()

void                hkl_printbt                         (void);


HKL_MALLOC()

#define HKL_MALLOC(type) _hkl_malloc(sizeof(type), "Can not allocate memory for a " #type)

type :

hkl-4.0.3/Documentation/api/html/index.sgml0000644000175000017500000012123011402652636015542 00000000000000 hkl-4.0.3/Documentation/api/html/hkl-hkl-pseudoaxis-e6c.html0000644000175000017500000001155411402652636020633 00000000000000 hkl-pseudoaxis-e6c

hkl-pseudoaxis-e6c

hkl-pseudoaxis-e6c

Description

Details

hkl_pseudo_axis_engine_e6c_hkl_new ()

HklPseudoAxisEngine * hkl_pseudo_axis_engine_e6c_hkl_new
                                                        (void);

Returns :


hkl_pseudo_axis_engine_e6c_psi_new ()

HklPseudoAxisEngine * hkl_pseudo_axis_engine_e6c_psi_new
                                                        (void);

Returns :

hkl-4.0.3/Documentation/api/html/right.png0000644000175000017500000000073011402652636015373 00000000000000PNG  IHDRw=bKGD pHYs  ~tIME2 I%=eIDATx!o@.'**M0$$?1~vIeEuLl&4䝠Bݛ|>$ݶoc hkl-pseudoaxis-common-q

hkl-pseudoaxis-common-q

hkl-pseudoaxis-common-q

Description

Details

hkl_pseudo_axis_engine_q_new ()

HklPseudoAxisEngine * hkl_pseudo_axis_engine_q_new      (void);

Returns :


hkl_pseudo_axis_engine_q2_new ()

HklPseudoAxisEngine * hkl_pseudo_axis_engine_q2_new     (void);

Returns :

hkl-4.0.3/Documentation/api/html/hkl.devhelp0000644000175000017500000010253411402652636015704 00000000000000 hkl-4.0.3/Documentation/api/html/hkl-hkl-pseudoaxis-auto.html0000644000175000017500000001520611402652636021124 00000000000000 hkl-pseudoaxis-auto

hkl-pseudoaxis-auto

hkl-pseudoaxis-auto

Synopsis

int                 hkl_pseudo_axis_engine_mode_set_real
                                                        (HklPseudoAxisEngineMode *self,
                                                         HklPseudoAxisEngine *engine,
                                                         HklGeometry *geometry,
                                                         HklDetector *detector,
                                                         HklSample *sample,
                                                         HklError **error);

Description

Details

hkl_pseudo_axis_engine_mode_set_real ()

int                 hkl_pseudo_axis_engine_mode_set_real
                                                        (HklPseudoAxisEngineMode *self,
                                                         HklPseudoAxisEngine *engine,
                                                         HklGeometry *geometry,
                                                         HklDetector *detector,
                                                         HklSample *sample,
                                                         HklError **error);

self :

engine :

geometry :

detector :

sample :

error :

Returns :

hkl-4.0.3/Documentation/api/html/hkl-hkl-quaternion.html0000644000175000017500000006333711402652636020167 00000000000000 hkl-quaternion

hkl-quaternion

hkl-quaternion

Synopsis

                    HklQuaternion;
void                hkl_quaternion_init                 (HklQuaternion *self,
                                                         double a,
                                                         double b,
                                                         double c,
                                                         double d);
void                hkl_quaternion_init_from_vector     (HklQuaternion *self,
                                                         const HklVector *v);
void                hkl_quaternion_init_from_angle_and_axe
                                                        (HklQuaternion *self,
                                                         double angle,
                                                         const HklVector *v);
void                hkl_quaternion_fprintf              (FILE *file,
                                                         const HklQuaternion *self);
int                 hkl_quaternion_cmp                  (const HklQuaternion *self,
                                                         const HklQuaternion *q);
void                hkl_quaternion_minus_quaternion     (HklQuaternion *self,
                                                         const HklQuaternion *q);
void                hkl_quaternion_times_quaternion     (HklQuaternion *self,
                                                         const HklQuaternion *q);
double              hkl_quaternion_norm2                (const HklQuaternion *self);
void                hkl_quaternion_conjugate            (HklQuaternion *self);
void                hkl_quaternion_to_matrix            (const HklQuaternion *self,
                                                         HklMatrix *m);
void                hkl_quaternion_to_angle_and_axe     (const HklQuaternion *self,
                                                         double *angle,
                                                         HklVector *v);

Description

Details

HklQuaternion

typedef struct {
	double data[4];
} HklQuaternion;


hkl_quaternion_init ()

void                hkl_quaternion_init                 (HklQuaternion *self,
                                                         double a,
                                                         double b,
                                                         double c,
                                                         double d);

initialize the four elements of an HklQuaternion

self :

the HklQuaternion to initialize

a :

the 1st element value

b :

the 2nd element value

c :

the 3rd element value

d :

the 4th element value

hkl_quaternion_init_from_vector ()

void                hkl_quaternion_init_from_vector     (HklQuaternion *self,
                                                         const HklVector *v);

initialize an HklQuaternion from an HklVector

self :

the HklQuaternion to set

v :

the HklVector used to set the self HklQuaternion

hkl_quaternion_init_from_angle_and_axe ()

void                hkl_quaternion_init_from_angle_and_axe
                                                        (HklQuaternion *self,
                                                         double angle,
                                                         const HklVector *v);

initialize an HklQuaternion from a vector and a angle.

self :

the HklQuaternion to set

angle :

the angles of the rotation

v :

the axe of rotation

hkl_quaternion_fprintf ()

void                hkl_quaternion_fprintf              (FILE *file,
                                                         const HklQuaternion *self);

print an HklQuaternion into a FILE stream

file :

the file to send the HklQuaternion into

self :

the HklQuaternion to write into the file stream.

hkl_quaternion_cmp ()

int                 hkl_quaternion_cmp                  (const HklQuaternion *self,
                                                         const HklQuaternion *q);

compare two HklQuaternion.

self :

the first HklQuaternion

q :

the second HklQuaternion

Returns :

HKL_TRUE if both are equal, HKL_FAIL otherwise.

hkl_quaternion_minus_quaternion ()

void                hkl_quaternion_minus_quaternion     (HklQuaternion *self,
                                                         const HklQuaternion *q);

substract two HklQuaternions Todo: test

self :

the HklQuaternion to modify.

q :

the HklQuaternion to substract

hkl_quaternion_times_quaternion ()

void                hkl_quaternion_times_quaternion     (HklQuaternion *self,
                                                         const HklQuaternion *q);

multiply two quaternions

self :

the HklQuaternion to modify

q :

the HklQuaternion to multiply by

hkl_quaternion_norm2 ()

double              hkl_quaternion_norm2                (const HklQuaternion *self);

compute the norm2 of an HklQuaternion

self :

the quaternion use to compute the norm

Returns :

the self hklquaternion norm

hkl_quaternion_conjugate ()

void                hkl_quaternion_conjugate            (HklQuaternion *self);

compute the conjugate of a quaternion

self :

the HklQuaternion to conjugate

hkl_quaternion_to_matrix ()

void                hkl_quaternion_to_matrix            (const HklQuaternion *self,
                                                         HklMatrix *m);

Compute the rotation matrix of a Quaternion.

compute the rotation matrix corresponding to the unitary quaternion. \f$ q = a + b \cdot i + c \cdot j + d \cdot k \f$

\f$ \left( \begin{array}{ccc} a^2+b^2-c^2-d^2 & 2bc-2ad & 2ac+2bd\\ 2ad+2bc & a^2-b^2+c^2-d^2 & 2cd-2ab\\ 2bd-2ac & 2ab+2cd & a^2-b^2-c^2+d^2 \end{array} \right) \f$ Todo: optimize

self :

the HklQuaternion use to compute the HklMatrix

m :

the HklMatrix return.

hkl_quaternion_to_angle_and_axe ()

void                hkl_quaternion_to_angle_and_axe     (const HklQuaternion *self,
                                                         double *angle,
                                                         HklVector *v);

compute the axe and angle of the unitary quaternion angle [-pi, pi] if q is the (1, 0, 0, 0) quaternion return the (0,0,0) axe and a 0 angle

self :

The HklQuaternion use to compute the angle and the roation axis.

angle :

the returned angle of the rotation.

v :

the returned axis of the rotation.
hkl-4.0.3/Documentation/api/html/hkl-hkl-parameter.html0000644000175000017500000006706711402652636017766 00000000000000 hkl-parameter

hkl-parameter

hkl-parameter

Synopsis

                    HklParameter;
HklParameter *      hkl_parameter_new                   (char const *name,
                                                         double min,
                                                         double value,
                                                         double max,
                                                         int fit,
                                                         int changed,
                                                         HklUnit const *unit,
                                                         HklUnit const *punit);
HklParameter *      hkl_parameter_new_copy              (HklParameter const *self);
int                 hkl_parameter_init                  (HklParameter *self,
                                                         char const *name,
                                                         double min,
                                                         double value,
                                                         double max,
                                                         int fit,
                                                         int changed,
                                                         HklUnit const *unit,
                                                         HklUnit const *punit);
void                hkl_parameter_free                  (HklParameter *self);
void                hkl_parameter_set_value             (HklParameter *self,
                                                         double value);
double              hkl_parameter_get_value_unit        (HklParameter const *self);
int                 hkl_parameter_set_value_unit        (HklParameter *self,
                                                         double value);
double              hkl_parameter_get_max               (HklParameter const *self);
void                hkl_parameter_get_range_unit        (HklParameter const *self,
                                                         double *min,
                                                         double *max);
void                hkl_parameter_set_range             (HklParameter *self,
                                                         double min,
                                                         double max);
void                hkl_parameter_set_range_unit        (HklParameter *self,
                                                         double min,
                                                         double max);
void                hkl_parameter_randomize             (HklParameter *self);
int                 hkl_parameter_is_valid              (const HklParameter *self);
void                hkl_parameter_fprintf               (FILE *f,
                                                         HklParameter *self);

Description

Details

HklParameter

typedef struct {
	const char *name;
	HklInterval range;
	double value;
	HklUnit const *unit;
	HklUnit const *punit;
	int fit;
	int changed;
} HklParameter;


hkl_parameter_new ()

HklParameter *      hkl_parameter_new                   (char const *name,
                                                         double min,
                                                         double value,
                                                         double max,
                                                         int fit,
                                                         int changed,
                                                         HklUnit const *unit,
                                                         HklUnit const *punit);

name :

min :

value :

max :

fit :

changed :

unit :

punit :

Returns :


hkl_parameter_new_copy ()

HklParameter *      hkl_parameter_new_copy              (HklParameter const *self);

self :

Returns :


hkl_parameter_init ()

int                 hkl_parameter_init                  (HklParameter *self,
                                                         char const *name,
                                                         double min,
                                                         double value,
                                                         double max,
                                                         int fit,
                                                         int changed,
                                                         HklUnit const *unit,
                                                         HklUnit const *punit);

self :

name :

min :

value :

max :

fit :

changed :

unit :

punit :

Returns :


hkl_parameter_free ()

void                hkl_parameter_free                  (HklParameter *self);

self :


hkl_parameter_set_value ()

void                hkl_parameter_set_value             (HklParameter *self,
                                                         double value);

self :

value :


hkl_parameter_get_value_unit ()

double              hkl_parameter_get_value_unit        (HklParameter const *self);

self :

Returns :


hkl_parameter_set_value_unit ()

int                 hkl_parameter_set_value_unit        (HklParameter *self,
                                                         double value);

self :

value :

Returns :


hkl_parameter_get_max ()

double              hkl_parameter_get_max               (HklParameter const *self);

self :

Returns :


hkl_parameter_get_range_unit ()

void                hkl_parameter_get_range_unit        (HklParameter const *self,
                                                         double *min,
                                                         double *max);

self :

min :

max :


hkl_parameter_set_range ()

void                hkl_parameter_set_range             (HklParameter *self,
                                                         double min,
                                                         double max);

self :

min :

max :


hkl_parameter_set_range_unit ()

void                hkl_parameter_set_range_unit        (HklParameter *self,
                                                         double min,
                                                         double max);

self :

min :

max :


hkl_parameter_randomize ()

void                hkl_parameter_randomize             (HklParameter *self);

self :


hkl_parameter_is_valid ()

int                 hkl_parameter_is_valid              (const HklParameter *self);

self :

Returns :


hkl_parameter_fprintf ()

void                hkl_parameter_fprintf               (FILE *f,
                                                         HklParameter *self);

f :

self :

hkl-4.0.3/Documentation/api/html/hkl-hkl-pseudoaxis-common-psi.html0000644000175000017500000001446111402652636022237 00000000000000 hkl-pseudoaxis-common-psi

hkl-pseudoaxis-common-psi

hkl-pseudoaxis-common-psi

Synopsis

                    HklPseudoAxisEngineModePsi;
HklPseudoAxisEngineModePsi * hkl_pseudo_axis_engine_mode_psi_new
                                                        (char const *name,
                                                         size_t axes_names_len,
                                                         char const *axes_names[]);
HklPseudoAxisEngine * hkl_pseudo_axis_engine_psi_new    (void);

Description

Details

HklPseudoAxisEngineModePsi

typedef struct {
	HklPseudoAxisEngineMode parent;
	HklVector Q0;
	HklVector hkl0;
} HklPseudoAxisEngineModePsi;


hkl_pseudo_axis_engine_mode_psi_new ()

HklPseudoAxisEngineModePsi * hkl_pseudo_axis_engine_mode_psi_new
                                                        (char const *name,
                                                         size_t axes_names_len,
                                                         char const *axes_names[]);

name :

axes_names_len :

axes_names :

Returns :


hkl_pseudo_axis_engine_psi_new ()

HklPseudoAxisEngine * hkl_pseudo_axis_engine_psi_new    (void);

Returns :

hkl-4.0.3/Documentation/api/html/hkl-hkl-pseudoaxis-common-eulerians.html0000644000175000017500000000751011402652636023430 00000000000000 hkl-pseudoaxis-common-eulerians

hkl-pseudoaxis-common-eulerians

hkl-pseudoaxis-common-eulerians

Description

Details

hkl_pseudo_axis_engine_eulerians_new ()

HklPseudoAxisEngine * hkl_pseudo_axis_engine_eulerians_new
                                                        (void);

Returns :

hkl-4.0.3/Documentation/api/html/hkl-hkl-pseudoaxis-k6c.html0000644000175000017500000001144711402652636020642 00000000000000 hkl-pseudoaxis-k6c

hkl-pseudoaxis-k6c

hkl-pseudoaxis-k6c

Description

Details

hkl_pseudo_axis_engine_k6c_hkl_new ()

HklPseudoAxisEngine * hkl_pseudo_axis_engine_k6c_hkl_new
                                                        (void);

Returns :


hkl_pseudo_axis_engine_k6c_psi_new ()

HklPseudoAxisEngine * hkl_pseudo_axis_engine_k6c_psi_new
                                                        (void);

Returns :

hkl-4.0.3/Documentation/api/html/home.png0000644000175000017500000000121611402652636015206 00000000000000PNG  IHDRw=bKGD pHYs  ~tIME1KvIDATxՕkq?rCp ~CnpCAAJ .B-\'G]:ܠC -(8 Ԁ!fDғklbRoyxwpðIJ<of_-@RHf֟t^ښ$Q|pgv;X^^&s(bwwZF9&3඙ ^IRZUE.0Z]]U PYM8HGIekqqҀ! $۬3n e{-/seeeÌXOͷ$8==USQRR'9-s+B^ Cەs+%<7W :2IENDB`hkl-4.0.3/Documentation/api/html/hkl-hkl-lattice.html0000644000175000017500000004723711402652636017430 00000000000000 hkl-lattice

hkl-lattice

hkl-lattice

Synopsis

                    HklLattice;
HklLattice *        hkl_lattice_new                     (double a,
                                                         double b,
                                                         double c,
                                                         double alpha,
                                                         double beta,
                                                         double gamma);
HklLattice *        hkl_lattice_new_copy                (HklLattice const *self);
HklLattice *        hkl_lattice_new_default             (void);
void                hkl_lattice_free                    (HklLattice *self);
int                 hkl_lattice_set                     (HklLattice *self,
                                                         double a,
                                                         double b,
                                                         double c,
                                                         double alpha,
                                                         double beta,
                                                         double gamma);
int                 hkl_lattice_get_B                   (HklLattice const *self,
                                                         HklMatrix *B);
int                 hkl_lattice_get_1_B                 (const HklLattice *self,
                                                         HklMatrix *B);
int                 hkl_lattice_reciprocal              (HklLattice const *self,
                                                         HklLattice *r);
void                hkl_lattice_randomize               (HklLattice *self);
void                hkl_lattice_fprintf                 (FILE *f,
                                                         HklLattice const *self);

Description

Details

HklLattice

typedef struct {
	HklParameter *a;
	HklParameter *b;
	HklParameter *c;
	HklParameter *alpha;
	HklParameter *beta;
	HklParameter *gamma;
} HklLattice;


hkl_lattice_new ()

HklLattice *        hkl_lattice_new                     (double a,
                                                         double b,
                                                         double c,
                                                         double alpha,
                                                         double beta,
                                                         double gamma);

a :

b :

c :

alpha :

beta :

gamma :

Returns :


hkl_lattice_new_copy ()

HklLattice *        hkl_lattice_new_copy                (HklLattice const *self);

self :

Returns :


hkl_lattice_new_default ()

HklLattice *        hkl_lattice_new_default             (void);

Returns :


hkl_lattice_free ()

void                hkl_lattice_free                    (HklLattice *self);

self :


hkl_lattice_set ()

int                 hkl_lattice_set                     (HklLattice *self,
                                                         double a,
                                                         double b,
                                                         double c,
                                                         double alpha,
                                                         double beta,
                                                         double gamma);

self :

a :

b :

c :

alpha :

beta :

gamma :

Returns :


hkl_lattice_get_B ()

int                 hkl_lattice_get_B                   (HklLattice const *self,
                                                         HklMatrix *B);

self :

B :

Returns :


hkl_lattice_get_1_B ()

int                 hkl_lattice_get_1_B                 (const HklLattice *self,
                                                         HklMatrix *B);

Compute the invert of B (needed by the hkl_sample_set_UB method) should be optimized

self :

the HklLattice

B :

the HklMatrix returned

Returns :

HKL_SUCCESS or HKL_FAIL depending of the success of the computation.

hkl_lattice_reciprocal ()

int                 hkl_lattice_reciprocal              (HklLattice const *self,
                                                         HklLattice *r);

self :

r :

Returns :


hkl_lattice_randomize ()

void                hkl_lattice_randomize               (HklLattice *self);

self :


hkl_lattice_fprintf ()

void                hkl_lattice_fprintf                 (FILE *f,
                                                         HklLattice const *self);

f :

self :

hkl-4.0.3/Documentation/api/html/index.html0000644000175000017500000001262511402652636015553 00000000000000 hkl Reference Manual hkl-4.0.3/Documentation/api/html/hkl-hkl-error.html0000644000175000017500000005407511402652636017132 00000000000000 hkl-error

hkl-error

hkl-error

Synopsis

                    HklError;
HklError*           hkl_error_new                       (const char *format,
                                                         ...);
HklError*           hkl_error_new_literal               (const char *message);
HklError*           hkl_error_new_valist                (const char *format,
                                                         va_list args);
void                hkl_error_free                      (HklError *error);
HklError*           hkl_error_new_copy                  (const HklError *error);
void                hkl_error_set                       (HklError **err,
                                                         const char *format,
                                                         ...);
void                hkl_error_set_literal               (HklError **err,
                                                         const char *message);
void                hkl_error_propagate                 (HklError **dest,
                                                         HklError *src);
void                hkl_error_clear                     (HklError **err);
void                hkl_error_prefix                    (HklError **err,
                                                         const char *format,
                                                         ...);
void                hkl_error_propagate_prefixed        (HklError **dest,
                                                         HklError *src,
                                                         const char *format,
                                                         ...);

Description

Details

HklError

typedef struct {
	char *message;
} HklError;


hkl_error_new ()

HklError*           hkl_error_new                       (const char *format,
                                                         ...);

Creates a new HklError with the given, and a message formatted with format.

format :

printf()-style format for error message

... :

parameters for message format

Returns :

a new HklError

hkl_error_new_literal ()

HklError*           hkl_error_new_literal               (const char *message);

Creates a new HklError; unlike hkl_error_new(), message is not a printf()-style format string. Use this function if message contains text you don't have control over, that could include printf() escape sequences.

message :

error message

Returns :

a new HklError

hkl_error_new_valist ()

HklError*           hkl_error_new_valist                (const char *format,
                                                         va_list args);

Creates a new HklError with the given message formatted with format.

format :

printf()-style format for error message

args :

va_list of parameters for the message format

Returns :

a new HklError

Since 2.22


hkl_error_free ()

void                hkl_error_free                      (HklError *error);

Frees a HklError and associated resources.

error :

a HklError

hkl_error_new_copy ()

HklError*           hkl_error_new_copy                  (const HklError *error);

error :

Returns :


hkl_error_set ()

void                hkl_error_set                       (HklError **err,
                                                         const char *format,
                                                         ...);

Does nothing if err is NULL; if err is non-NULL, then *err must be NULL. A new HklError is created and assigned to *err.

err :

a return location for a HklError, or NULL

format :

printf()-style format

... :

args for format

hkl_error_set_literal ()

void                hkl_error_set_literal               (HklError **err,
                                                         const char *message);

Does nothing if err is NULL; if err is non-NULL, then *err must be NULL. A new HklError is created and assigned to *err. Unlike hkl_set_error(), message is not a printf()-style format string. Use this function if message contains text you don't have control over, that could include printf() escape sequences.

err :

a return location for a HklError, or NULL

message :

error message

Since 2.18


hkl_error_propagate ()

void                hkl_error_propagate                 (HklError **dest,
                                                         HklError *src);

dest :

src :


hkl_error_clear ()

void                hkl_error_clear                     (HklError **err);

err :


hkl_error_prefix ()

void                hkl_error_prefix                    (HklError **err,
                                                         const char *format,
                                                         ...);

err :

format :

... :


hkl_error_propagate_prefixed ()

void                hkl_error_propagate_prefixed        (HklError **dest,
                                                         HklError *src,
                                                         const char *format,
                                                         ...);

dest :

src :

format :

... :

hkl-4.0.3/Documentation/api/html/left.png0000644000175000017500000000071311402652636015211 00000000000000PNG  IHDRw=bKGD pHYs  ~tIME1&[(XIDATx!OPE*ID%~ꊯ"p'ŏ`sܖrKf hmiIz}ܯI.p\`x l?l[,Hk<#c%\AUx[S7n6rzEs1j@NL$ݤi0 5/}\EKIo͓$a0jdFbkIAh>WlC'?tk;|/t*INZ^`y4Nr]׮ J<ڐt`X1@p䀸dZ')hK $V?%]+LsgUK"w53OIENDB`hkl-4.0.3/Documentation/api/html/hkl-hkl-detector.html0000644000175000017500000002326111402652636017603 00000000000000 hkl-detector

hkl-detector

hkl-detector

Description

Details

HklDetector

typedef struct {
	size_t idx;
	HklHolder const *holder;
} HklDetector;


hkl_detector_new ()

HklDetector *       hkl_detector_new                    (void);

Returns :


hkl_detector_new_copy ()

HklDetector *       hkl_detector_new_copy               (HklDetector const *src);

src :

Returns :


hkl_detector_free ()

void                hkl_detector_free                   (HklDetector *self);

self :


hkl_detector_attach_to_holder ()

void                hkl_detector_attach_to_holder       (HklDetector *self,
                                                         HklHolder const *holder);

self :

holder :


hkl_detector_compute_kf ()

int                 hkl_detector_compute_kf             (HklDetector const *self,
                                                         HklGeometry *g,
                                                         HklVector *kf);

self :

g :

kf :

Returns :

hkl-4.0.3/Documentation/api/html/hkl-hkl-unit.html0000644000175000017500000001353511402652636016754 00000000000000 hkl-unit

hkl-unit

hkl-unit

Synopsis

                    HklUnit;
int                 hkl_unit_compatible                 (HklUnit const *self,
                                                         HklUnit const *unit);
double              hkl_unit_factor                     (HklUnit const *self,
                                                         HklUnit const *unit);

Description

Details

HklUnit

typedef struct {
	HklUnitType type;
	char const *name;
	char const *repr;
} HklUnit;


hkl_unit_compatible ()

int                 hkl_unit_compatible                 (HklUnit const *self,
                                                         HklUnit const *unit);

self :

unit :

Returns :


hkl_unit_factor ()

double              hkl_unit_factor                     (HklUnit const *self,
                                                         HklUnit const *unit);

self :

unit :

Returns :

hkl-4.0.3/Documentation/api/html/hkl-hkl-pseudoaxis-common-hkl.html0000644000175000017500000005110111402652636022212 00000000000000 hkl-pseudoaxis-common-hkl

hkl-pseudoaxis-common-hkl

hkl-pseudoaxis-common-hkl

Synopsis

int                 RUBh_minus_Q_func                   (const gsl_vector *x,
                                                         void *params,
                                                         gsl_vector *f);
int                 double_diffraction_func             (const gsl_vector *x,
                                                         void *params,
                                                         gsl_vector *f);
int                 psi_constant_vertical_func          (const gsl_vector *x,
                                                         void *params,
                                                         gsl_vector *f);
int                 RUBh_minus_Q                        (double const x[],
                                                         void *params,
                                                         double f[]);
int                 double_diffraction                  (double const x[],
                                                         void *params,
                                                         double f[]);
int                 hkl_pseudo_axis_engine_mode_get_hkl_real
                                                        (HklPseudoAxisEngineMode *self,
                                                         HklPseudoAxisEngine *engine,
                                                         HklGeometry *geometry,
                                                         HklDetector *detector,
                                                         HklSample *sample,
                                                         HklError **error);
int                 hkl_pseudo_axis_engine_mode_init_psi_constant_vertical_real
                                                        (HklPseudoAxisEngineMode *base,
                                                         HklPseudoAxisEngine *engine,
                                                         HklGeometry *geometry,
                                                         HklDetector *detector,
                                                         HklSample *sample,
                                                         HklError **error);
HklPseudoAxisEngine * hkl_pseudo_axis_engine_hkl_new    (void);

Description

Details

RUBh_minus_Q_func ()

int                 RUBh_minus_Q_func                   (const gsl_vector *x,
                                                         void *params,
                                                         gsl_vector *f);

x :

params :

f :

Returns :


double_diffraction_func ()

int                 double_diffraction_func             (const gsl_vector *x,
                                                         void *params,
                                                         gsl_vector *f);

x :

params :

f :

Returns :


psi_constant_vertical_func ()

int                 psi_constant_vertical_func          (const gsl_vector *x,
                                                         void *params,
                                                         gsl_vector *f);

x :

params :

f :

Returns :


RUBh_minus_Q ()

int                 RUBh_minus_Q                        (double const x[],
                                                         void *params,
                                                         double f[]);

x :

params :

f :

Returns :


double_diffraction ()

int                 double_diffraction                  (double const x[],
                                                         void *params,
                                                         double f[]);

x :

params :

f :

Returns :


hkl_pseudo_axis_engine_mode_get_hkl_real ()

int                 hkl_pseudo_axis_engine_mode_get_hkl_real
                                                        (HklPseudoAxisEngineMode *self,
                                                         HklPseudoAxisEngine *engine,
                                                         HklGeometry *geometry,
                                                         HklDetector *detector,
                                                         HklSample *sample,
                                                         HklError **error);

self :

engine :

geometry :

detector :

sample :

error :

Returns :


hkl_pseudo_axis_engine_mode_init_psi_constant_vertical_real ()

int                 hkl_pseudo_axis_engine_mode_init_psi_constant_vertical_real
                                                        (HklPseudoAxisEngineMode *base,
                                                         HklPseudoAxisEngine *engine,
                                                         HklGeometry *geometry,
                                                         HklDetector *detector,
                                                         HklSample *sample,
                                                         HklError **error);

base :

engine :

geometry :

detector :

sample :

error :

Returns :


hkl_pseudo_axis_engine_hkl_new ()

HklPseudoAxisEngine * hkl_pseudo_axis_engine_hkl_new    (void);

Returns :

hkl-4.0.3/Documentation/api/html/hkl-hkl-pseudoaxis-factory.html0000644000175000017500000001010211402652636021611 00000000000000 hkl-pseudoaxis-factory

hkl-pseudoaxis-factory

hkl-pseudoaxis-factory

Description

Details

hkl_pseudo_axis_engine_list_factory ()

HklPseudoAxisEngineList * hkl_pseudo_axis_engine_list_factory
                                                        (const HklGeometryConfig *config);

config :

Returns :

hkl-4.0.3/Documentation/api/html/style.css0000644000175000017500000001205611402652636015426 00000000000000.synopsis, .classsynopsis { /* tango:aluminium 1/2 */ background: #eeeeec; border: solid 1px #d3d7cf; padding: 0.5em; } .programlisting { /* tango:sky blue 0/1 */ background: #e6f3ff; border: solid 1px #729fcf; padding: 0.5em; } .variablelist { padding: 4px; margin-left: 3em; } .variablelist td:first-child { vertical-align: top; } @media screen { sup a.footnote { position: relative; top: 0em ! important; } /* this is needed so that the local anchors are displayed below the naviagtion */ div.footnote a[name], div.refnamediv a[name], div.refsect1 a[name], div.refsect2 a[name], div.index a[name], div.glossary a[name], div.sect1 a[name] { position: relative; padding-top:4.5em; } /* this seems to be a bug in the xsl style sheets when generating indexes */ div.index div.index { top: 0em; } /* make space for the fixed navigation bar and add space at the bottom so that * link targets appear somewhat close to top */ body { padding-top: 3.2em; padding-bottom: 20em; } /* style and size the navigation bar */ table.navigation#top { position: fixed; /* tango:scarlet red 0/1 */ background: #ffe6e6; border: solid 1px #ef2929; margin-top: 0; margin-bottom: 0; top: 0; left: 0; height: 3em; z-index: 10; } .navigation a, .navigation a:visited { /* tango:scarlet red 3 */ color: #a40000; } .navigation a:hover { /* tango:scarlet red 1 */ color: #ef2929; } td.shortcuts { /* tango:scarlet red 1 */ color: #ef2929; font-size: 80%; white-space: nowrap; } } @media print { table.navigation { visibility: collapse; display: none; } div.titlepage table.navigation { visibility: visible; display: table; /* tango:scarlet red 0/1 */ background: #ffe6e6; border: solid 1px #ef2929; margin-top: 0; margin-bottom: 0; top: 0; left: 0; height: 3em; } } .navigation .title { font-size: 200%; } div.gallery-float { float: left; padding: 10px; } div.gallery-float img { border-style: none; } div.gallery-spacer { clear: both; } a, a:visited { text-decoration: none; /* tango:sky blue 2 */ color: #3465a4; } a:hover { text-decoration: underline; /* tango:sky blue 1 */ color: #729fcf; } div.table table { border-collapse: collapse; border-spacing: 0px; /* tango:aluminium 3 */ border: solid 1px #babdb6; } div.table table td, div.table table th { /* tango:aluminium 3 */ border: solid 1px #babdb6; padding: 3px; vertical-align: top; } div.table table th { /* tango:aluminium 2 */ background-color: #d3d7cf; } hr { /* tango:aluminium 3 */ color: #babdb6; background: #babdb6; border: none 0px; height: 1px; clear: both; } .footer { padding-top: 3.5em; /* tango:aluminium 3 */ color: #babdb6; text-align: center; font-size: 80%; } .warning { /* tango:orange 0/1 */ background: #ffeed9; border-color: #ffb04f; } .note { /* tango:chameleon 0/0.5 */ background: #d8ffb2; border-color: #abf562; } .note, .warning { padding: 0.5em; border-width: 1px; border-style: solid; } .note h3, .warning h3 { margin-top: 0.0em } .note p, .warning p { margin-bottom: 0.0em } /* blob links */ h2 .extralinks, h3 .extralinks { float: right; /* tango:aluminium 3 */ color: #babdb6; font-size: 80%; font-weight: normal; } .annotation { /* tango:aluminium 5 */ color: #555753; font-size: 80%; font-weight: normal; } /* code listings */ .listing_code .programlisting .cbracket { color: #a40000; } /* tango: scarlet red 3 */ .listing_code .programlisting .comment { color: #a1a39d; } /* tango: aluminium 4 */ .listing_code .programlisting .function { color: #000000; font-weight: bold; } .listing_code .programlisting .function a { color: #11326b; font-weight: bold; } /* tango: sky blue 4 */ .listing_code .programlisting .keyword { color: #4e9a06; } /* tango: chameleon 3 */ .listing_code .programlisting .linenum { color: #babdb6; } /* tango: aluminium 3 */ .listing_code .programlisting .normal { color: #000000; } .listing_code .programlisting .number { color: #75507b; } /* tango: plum 2 */ .listing_code .programlisting .preproc { color: #204a87; } /* tango: sky blue 3 */ .listing_code .programlisting .string { color: #c17d11; } /* tango: chocolate 2 */ .listing_code .programlisting .type { color: #000000; } .listing_code .programlisting .type a { color: #11326b; } /* tango: sky blue 4 */ .listing_code .programlisting .symbol { color: #ce5c00; } /* tango: orange 3 */ .listing_frame { /* tango:sky blue 1 */ border: solid 1px #729fcf; padding: 0px; } .listing_lines, .listing_code { margin-top: 0px; margin-bottom: 0px; padding: 0.5em; } .listing_lines { /* tango:sky blue 0.5 */ background: #a6c5e3; /* tango:aluminium 6 */ color: #2e3436; } .listing_code { /* tango:sky blue 0 */ background: #e6f3ff; } .listing_code .programlisting { /* override from previous */ border: none 0px; padding: 0px; } .listing_lines pre, .listing_code pre { margin: 0px; } hkl-4.0.3/Documentation/api/html/hkl-hkl-pseudoaxis.html0000644000175000017500000016204511402652636020162 00000000000000 hkl-pseudoaxis

hkl-pseudoaxis

hkl-pseudoaxis

Synopsis

                    HklPseudoAxis;
                    HklPseudoAxisEngineMode;
                    HklPseudoAxisEngine;
                    HklPseudoAxisEngineList;
int                 (*HklPseudoAxisEngineModeFunc)      (HklPseudoAxisEngineMode *self,
                                                         HklPseudoAxisEngine *engine,
                                                         HklGeometry *geometry,
                                                         HklDetector *detector,
                                                         HklSample *sample,
                                                         HklError **error);
int                 (*HklFunction)                      (const gsl_vector *x,
                                                         void *params,
                                                         gsl_vector *f);
HklPseudoAxis *     hkl_pseudo_axis_new                 (HklParameter const *parameter,
                                                         HklPseudoAxisEngine *engine);
void                hkl_pseudo_axis_init                (HklPseudoAxis *self,
                                                         HklParameter const *parameter,
                                                         HklPseudoAxisEngine *engine);
void                hkl_pseudo_axis_free                (HklPseudoAxis *self);
void                hkl_pseudo_axis_fprintf             (FILE *f,
                                                         HklPseudoAxis *self);
HklPseudoAxisEngineMode * hkl_pseudo_axis_engine_mode_new
                                                        (char const *name,
                                                         HklPseudoAxisEngineModeFunc initialize,
                                                         HklPseudoAxisEngineModeFunc get,
                                                         HklPseudoAxisEngineModeFunc set,
                                                         size_t n,
                                                         ...);
int                 hkl_pseudo_axis_engine_mode_init    (HklPseudoAxisEngineMode *self,
                                                         char const *name,
                                                         HklPseudoAxisEngineModeFunc initialize,
                                                         HklPseudoAxisEngineModeFunc get,
                                                         HklPseudoAxisEngineModeFunc set,
                                                         size_t n_func,
                                                         HklFunction functions[],
                                                         size_t n_p,
                                                         HklParameter parameters[],
                                                         size_t n_axes,
                                                         char const *axes_names[]);
void                hkl_pseudo_axis_engine_mode_free    (HklPseudoAxisEngineMode *self);
HklPseudoAxisEngine * hkl_pseudo_axis_engine_new        (char const *name,
                                                         size_t n,
                                                         ...);
void                hkl_pseudo_axis_engine_free         (HklPseudoAxisEngine *self);
void                hkl_pseudo_axis_engine_add_mode     (HklPseudoAxisEngine *self,
                                                         HklPseudoAxisEngineMode *mode);
void                hkl_pseudo_axis_engine_add_geometry (HklPseudoAxisEngine *self,
                                                         double const x[]);
void                hkl_pseudo_axis_engine_select_mode  (HklPseudoAxisEngine *self,
                                                         size_t idx);
int                 hkl_pseudo_axis_engine_initialize   (HklPseudoAxisEngine *self,
                                                         HklError **error);
int                 hkl_pseudo_axis_engine_set          (HklPseudoAxisEngine *self,
                                                         HklError **error);
int                 hkl_pseudo_axis_engine_get          (HklPseudoAxisEngine *self,
                                                         HklError **error);
void                hkl_pseudo_axis_engine_fprintf      (FILE *f,
                                                         HklPseudoAxisEngine const *self);
HklPseudoAxisEngineList * hkl_pseudo_axis_engine_list_new
                                                        (void);
void                hkl_pseudo_axis_engine_list_free    (HklPseudoAxisEngineList *self);
int                 hkl_pseudo_axis_engine_list_add     (HklPseudoAxisEngineList *self,
                                                         HklPseudoAxisEngine *engine);
HklPseudoAxisEngine * hkl_pseudo_axis_engine_list_get_by_name
                                                        (HklPseudoAxisEngineList *self,
                                                         char const *name);
HklPseudoAxis *     hkl_pseudo_axis_engine_list_get_pseudo_axis_by_name
                                                        (HklPseudoAxisEngineList *self,
                                                         char const *name);
void                hkl_pseudo_axis_engine_list_clear   (HklPseudoAxisEngineList *self);
void                hkl_pseudo_axis_engine_list_init    (HklPseudoAxisEngineList *self,
                                                         HklGeometry *geometry,
                                                         HklDetector *detector,
                                                         HklSample *sample);
int                 hkl_pseudo_axis_engine_list_get     (HklPseudoAxisEngineList *self);
void                hkl_pseudo_axis_engine_list_fprintf (FILE *f,
                                                         HklPseudoAxisEngineList const *self);

Description

Details

HklPseudoAxis

typedef struct {
	HklParameter parent;
	HklPseudoAxisEngine *engine;
} HklPseudoAxis;


HklPseudoAxisEngineMode

typedef struct {
	char const *name;
	HklPseudoAxisEngineModeFunc initialize;
	HklPseudoAxisEngineModeFunc get;
	HklPseudoAxisEngineModeFunc set;
	HKL_LIST(HklFunction, functions);
	HKL_LIST(HklParameter, parameters);
	HKL_LIST(const char*, axes_names);
	HklGeometry *geometry_init;
	HklDetector *detector_init;
	HklSample *sample_init;
} HklPseudoAxisEngineMode;


HklPseudoAxisEngine

typedef struct {
	char const *name;
	HklGeometry *geometry;
	HklDetector *detector;
	HklSample *sample;
	HKL_LIST(HklPseudoAxisEngineMode *, modes);
	HKL_LIST(HklAxis *, axes);
	HKL_LIST(HklPseudoAxis *, pseudoAxes);
	HklPseudoAxisEngineMode *mode;
	HklPseudoAxisEngineList *engines;
} HklPseudoAxisEngine;


HklPseudoAxisEngineList

typedef struct {
	HKL_LIST(HklPseudoAxisEngine *, engines);
	HklGeometryList *geometries;
	HklGeometry *geometry;
	HklDetector *detector;
	HklSample *sample;
} HklPseudoAxisEngineList;


HklPseudoAxisEngineModeFunc ()

int                 (*HklPseudoAxisEngineModeFunc)      (HklPseudoAxisEngineMode *self,
                                                         HklPseudoAxisEngine *engine,
                                                         HklGeometry *geometry,
                                                         HklDetector *detector,
                                                         HklSample *sample,
                                                         HklError **error);

self :

engine :

geometry :

detector :

sample :

error :

Returns :


HklFunction ()

int                 (*HklFunction)                      (const gsl_vector *x,
                                                         void *params,
                                                         gsl_vector *f);

x :

params :

f :

Returns :


hkl_pseudo_axis_new ()

HklPseudoAxis *     hkl_pseudo_axis_new                 (HklParameter const *parameter,
                                                         HklPseudoAxisEngine *engine);

parameter :

engine :

Returns :


hkl_pseudo_axis_init ()

void                hkl_pseudo_axis_init                (HklPseudoAxis *self,
                                                         HklParameter const *parameter,
                                                         HklPseudoAxisEngine *engine);

self :

parameter :

engine :


hkl_pseudo_axis_free ()

void                hkl_pseudo_axis_free                (HklPseudoAxis *self);

self :


hkl_pseudo_axis_fprintf ()

void                hkl_pseudo_axis_fprintf             (FILE *f,
                                                         HklPseudoAxis *self);

f :

self :


hkl_pseudo_axis_engine_mode_new ()

HklPseudoAxisEngineMode * hkl_pseudo_axis_engine_mode_new
                                                        (char const *name,
                                                         HklPseudoAxisEngineModeFunc initialize,
                                                         HklPseudoAxisEngineModeFunc get,
                                                         HklPseudoAxisEngineModeFunc set,
                                                         size_t n,
                                                         ...);

name :

initialize :

get :

set :

n :

... :

Returns :


hkl_pseudo_axis_engine_mode_init ()

int                 hkl_pseudo_axis_engine_mode_init    (HklPseudoAxisEngineMode *self,
                                                         char const *name,
                                                         HklPseudoAxisEngineModeFunc initialize,
                                                         HklPseudoAxisEngineModeFunc get,
                                                         HklPseudoAxisEngineModeFunc set,
                                                         size_t n_func,
                                                         HklFunction functions[],
                                                         size_t n_p,
                                                         HklParameter parameters[],
                                                         size_t n_axes,
                                                         char const *axes_names[]);

self :

name :

initialize :

get :

set :

n_func :

functions :

n_p :

parameters :

n_axes :

axes_names :

Returns :


hkl_pseudo_axis_engine_mode_free ()

void                hkl_pseudo_axis_engine_mode_free    (HklPseudoAxisEngineMode *self);

self :


hkl_pseudo_axis_engine_new ()

HklPseudoAxisEngine * hkl_pseudo_axis_engine_new        (char const *name,
                                                         size_t n,
                                                         ...);

name :

n :

... :

Returns :


hkl_pseudo_axis_engine_free ()

void                hkl_pseudo_axis_engine_free         (HklPseudoAxisEngine *self);

self :


hkl_pseudo_axis_engine_add_mode ()

void                hkl_pseudo_axis_engine_add_mode     (HklPseudoAxisEngine *self,
                                                         HklPseudoAxisEngineMode *mode);

self :

mode :


hkl_pseudo_axis_engine_add_geometry ()

void                hkl_pseudo_axis_engine_add_geometry (HklPseudoAxisEngine *self,
                                                         double const x[]);

self :

x :


hkl_pseudo_axis_engine_select_mode ()

void                hkl_pseudo_axis_engine_select_mode  (HklPseudoAxisEngine *self,
                                                         size_t idx);

self :

idx :


hkl_pseudo_axis_engine_initialize ()

int                 hkl_pseudo_axis_engine_initialize   (HklPseudoAxisEngine *self,
                                                         HklError **error);

self :

error :

Returns :


hkl_pseudo_axis_engine_set ()

int                 hkl_pseudo_axis_engine_set          (HklPseudoAxisEngine *self,
                                                         HklError **error);

self :

error :

Returns :


hkl_pseudo_axis_engine_get ()

int                 hkl_pseudo_axis_engine_get          (HklPseudoAxisEngine *self,
                                                         HklError **error);

self :

error :

Returns :


hkl_pseudo_axis_engine_fprintf ()

void                hkl_pseudo_axis_engine_fprintf      (FILE *f,
                                                         HklPseudoAxisEngine const *self);

f :

self :


hkl_pseudo_axis_engine_list_new ()

HklPseudoAxisEngineList * hkl_pseudo_axis_engine_list_new
                                                        (void);

Returns :


hkl_pseudo_axis_engine_list_free ()

void                hkl_pseudo_axis_engine_list_free    (HklPseudoAxisEngineList *self);

self :


hkl_pseudo_axis_engine_list_add ()

int                 hkl_pseudo_axis_engine_list_add     (HklPseudoAxisEngineList *self,
                                                         HklPseudoAxisEngine *engine);

self :

engine :

Returns :


hkl_pseudo_axis_engine_list_get_by_name ()

HklPseudoAxisEngine * hkl_pseudo_axis_engine_list_get_by_name
                                                        (HklPseudoAxisEngineList *self,
                                                         char const *name);

self :

name :

Returns :


hkl_pseudo_axis_engine_list_get_pseudo_axis_by_name ()

HklPseudoAxis *     hkl_pseudo_axis_engine_list_get_pseudo_axis_by_name
                                                        (HklPseudoAxisEngineList *self,
                                                         char const *name);

self :

name :

Returns :


hkl_pseudo_axis_engine_list_clear ()

void                hkl_pseudo_axis_engine_list_clear   (HklPseudoAxisEngineList *self);

self :


hkl_pseudo_axis_engine_list_init ()

void                hkl_pseudo_axis_engine_list_init    (HklPseudoAxisEngineList *self,
                                                         HklGeometry *geometry,
                                                         HklDetector *detector,
                                                         HklSample *sample);

self :

geometry :

detector :

sample :


hkl_pseudo_axis_engine_list_get ()

int                 hkl_pseudo_axis_engine_list_get     (HklPseudoAxisEngineList *self);

self :

Returns :


hkl_pseudo_axis_engine_list_fprintf ()

void                hkl_pseudo_axis_engine_list_fprintf (FILE *f,
                                                         HklPseudoAxisEngineList const *self);

f :

self :

hkl-4.0.3/Documentation/api/html/hkl-hkl-matrix.html0000644000175000017500000007273111402652636017304 00000000000000 hkl-matrix

hkl-matrix

hkl-matrix

Synopsis

                    HklMatrix;
void                hkl_matrix_init                     (HklMatrix *self,
                                                         double m11,
                                                         double m12,
                                                         double m13,
                                                         double m21,
                                                         double m22,
                                                         double m23,
                                                         double m31,
                                                         double m32,
                                                         double m33);
void                hkl_matrix_init_from_two_vector     (HklMatrix *self,
                                                         const HklVector *v1,
                                                         const HklVector *v2);
void                hkl_matrix_init_from_euler          (HklMatrix *self,
                                                         double euler_x,
                                                         double euler_y,
                                                         double euler_z);
void                hkl_matrix_fprintf                  (FILE *file,
                                                         const HklMatrix *self);
void                hkl_matrix_to_euler                 (const HklMatrix *self,
                                                         double *euler_x,
                                                         double *euler_y,
                                                         double *euler_z);
int                 hkl_matrix_cmp                      (const HklMatrix *self,
                                                         const HklMatrix *m);
void                hkl_matrix_times_matrix             (HklMatrix *self,
                                                         const HklMatrix *m);
void                hkl_matrix_times_vector             (const HklMatrix *self,
                                                         HklVector *v);
void                hkl_matrix_transpose                (HklMatrix *self);
double              hkl_matrix_det                      (const HklMatrix *self);
int                 hkl_matrix_solve                    (const HklMatrix *self,
                                                         HklVector *x,
                                                         const HklVector *b);
int                 hkl_matrix_is_null                  (const HklMatrix *self);

Description

Details

HklMatrix

typedef struct {
	double data[3][3];
} HklMatrix;


hkl_matrix_init ()

void                hkl_matrix_init                     (HklMatrix *self,
                                                         double m11,
                                                         double m12,
                                                         double m13,
                                                         double m21,
                                                         double m22,
                                                         double m23,
                                                         double m31,
                                                         double m32,
                                                         double m33);

self :

the HklMatrix to initialize

m11 :

the matrix 11 value

m12 :

the matrix 12 value

m13 :

the matrix 13 value

m21 :

the matrix 21 value

m22 :

the matrix 22 value

m23 :

the matrix 23 value

m31 :

the matrix 31 value

m32 :

the matrix 32 value

m33 :

the matrix 33 value

hkl_matrix_init_from_two_vector ()

void                hkl_matrix_init_from_two_vector     (HklMatrix *self,
                                                         const HklVector *v1,
                                                         const HklVector *v2);

Create an HklMatrix which represent a direct oriented base of the space the first row correspond to the |v1|, the second row |v2| and the last one is |v1 ^ v2|

self :

The HklMatrix to initialize

v1 :

the first HklVector

v2 :

the second HklVector

hkl_matrix_init_from_euler ()

void                hkl_matrix_init_from_euler          (HklMatrix *self,
                                                         double euler_x,
                                                         double euler_y,
                                                         double euler_z);

Create a rotation HklMatrix from three eulerians angles.

self :

the HklMatrix to initialize

euler_x :

the eulerian value along X

euler_y :

the eulerian value along Y

euler_z :

the eulerian value along Z

hkl_matrix_fprintf ()

void                hkl_matrix_fprintf                  (FILE *file,
                                                         const HklMatrix *self);

printf an HklMatrix into a FILE stream.

file :

the FILE stream

self :

the HklMatrix to print into the file stream

hkl_matrix_to_euler ()

void                hkl_matrix_to_euler                 (const HklMatrix *self,
                                                         double *euler_x,
                                                         double *euler_y,
                                                         double *euler_z);

compute the three eulerians values for a given rotation HklMatrix

self :

the rotation HklMatrix use to compute the eulerians angles

euler_x :

the eulerian value along X

euler_y :

the eulerian value along Y

euler_z :

the eulerian value along Z

hkl_matrix_cmp ()

int                 hkl_matrix_cmp                      (const HklMatrix *self,
                                                         const HklMatrix *m);

compare two HklMatrix.

self :

the first HklMatrix

m :

the HklMatrix to compare with

Returns :

return HKL_TRUE if | self - m | > HKL_EPSILON

hkl_matrix_times_matrix ()

void                hkl_matrix_times_matrix             (HklMatrix *self,
                                                         const HklMatrix *m);

compute the matrix multiplication self = self * m

self :

the HklMatrix to modify

m :

the HklMatrix to multiply by

hkl_matrix_times_vector ()

void                hkl_matrix_times_vector             (const HklMatrix *self,
                                                         HklVector *v);

multiply an HklVector by an HklMatrix

self :

the HklMatrix use to multiply the HklVector

v :

the HklVector multiply by the HklMatrix

hkl_matrix_transpose ()

void                hkl_matrix_transpose                (HklMatrix *self);

transpose an HklMatrix

self :

the HklMatrix to transpose

hkl_matrix_det ()

double              hkl_matrix_det                      (const HklMatrix *self);

compute the determinant of an HklMatrix

self :

the HklMatrix use to compute the determinant

Returns :

the determinant of the self HklMatrix Todo: test

hkl_matrix_solve ()

int                 hkl_matrix_solve                    (const HklMatrix *self,
                                                         HklVector *x,
                                                         const HklVector *b);

solve the system self . X = b

self :

The HklMatrix of the system

x :

the HklVector to compute.

b :

the hklVector of the system to solve.

Returns :

-1 if the système has no solution, 0 otherwise. Todo: test

hkl_matrix_is_null ()

int                 hkl_matrix_is_null                  (const HklMatrix *self);

is all hklMatrix elementes bellow HKL_EPSILON

self :

the HklMatrix to test

Returns :

HKL_TRUE if the self HklMatrix is null Todo: test
hkl-4.0.3/Documentation/api/html/hkl-hkl-vector.html0000644000175000017500000014347511402652636017306 00000000000000 hkl-vector

hkl-vector

hkl-vector

Synopsis

                    HklMatrix;
                    HklQuaternion;
                    HklVector;
void                hkl_vector_init                     (HklVector *self,
                                                         double x,
                                                         double y,
                                                         double z);
void                hkl_vector_fprintf                  (FILE *file,
                                                         const HklVector *self);
int                 hkl_vector_cmp                      (const HklVector *self,
                                                         const HklVector *vector);
int                 hkl_vector_is_opposite              (const HklVector *self,
                                                         const HklVector *vector);
void                hkl_vector_add_vector               (HklVector *self,
                                                         const HklVector *vector);
void                hkl_vector_minus_vector             (HklVector *self,
                                                         const HklVector *vector);
void                hkl_vector_div_double               (HklVector *self,
                                                         const double d);
void                hkl_vector_times_double             (HklVector *self,
                                                         const double d);
void                hkl_vector_times_vector             (HklVector *self,
                                                         const HklVector *vector);
void                hkl_vector_times_matrix             (HklVector *self,
                                                         const HklMatrix *m);
double              hkl_vector_sum                      (const HklVector *self);
double              hkl_vector_scalar_product           (const HklVector *self,
                                                         const HklVector *vector);
void                hkl_vector_vectorial_product        (HklVector *self,
                                                         const HklVector *vector);
double              hkl_vector_angle                    (const HklVector *self,
                                                         const HklVector *vector);
double              hkl_vector_oriented_angle           (const HklVector *self,
                                                         const HklVector *vector,
                                                         const HklVector *ref);
double              hkl_vector_norm2                    (const HklVector *self);
int                 hkl_vector_normalize                (HklVector *self);
int                 hkl_vector_is_colinear              (const HklVector *self,
                                                         const HklVector *vector);
void                hkl_vector_randomize                (HklVector *self);
void                hkl_vector_randomize_vector         (HklVector *self,
                                                         const HklVector *vector);
void                hkl_vector_randomize_vector_vector  (HklVector *self,
                                                         const HklVector *vector1,
                                                         const HklVector *vector2);
void                hkl_vector_rotated_around_vector    (HklVector *self,
                                                         const HklVector *axe,
                                                         double angle);
void                hkl_vector_rotated_quaternion       (HklVector *self,
                                                         const HklQuaternion *qr);
int                 hkl_vector_is_null                  (const HklVector *self);
void                hkl_vector_project_on_plan          (HklVector *self,
                                                         const HklVector *plan);

Description

Details

HklMatrix

typedef struct {
	double data[3][3];
} HklMatrix;


HklQuaternion

typedef struct {
	double data[4];
} HklQuaternion;


HklVector

typedef struct {
	double data[3];
} HklVector;


hkl_vector_init ()

void                hkl_vector_init                     (HklVector *self,
                                                         double x,
                                                         double y,
                                                         double z);

initialize an HklVector

self :

the HklVector to initialize.

x :

the first coordinate value

y :

the second coordinate value

z :

the third coordinate value

hkl_vector_fprintf ()

void                hkl_vector_fprintf                  (FILE *file,
                                                         const HklVector *self);

print an HklVector into a stream

file :

the stream to print into

self :

the HklVector to print.

hkl_vector_cmp ()

int                 hkl_vector_cmp                      (const HklVector *self,
                                                         const HklVector *vector);

compare two HklVector. this comparison use HKL_EPSILON to do the comparison.

self :

the first vector

vector :

th vector to compare with

Returns :

HKL_FALSE if both are equals, HKL_TRUE otherwise.

hkl_vector_is_opposite ()

int                 hkl_vector_is_opposite              (const HklVector *self,
                                                         const HklVector *vector);

self :

vector :

Returns :


hkl_vector_add_vector ()

void                hkl_vector_add_vector               (HklVector *self,
                                                         const HklVector *vector);

add an HklVector to another one.

self :

the modified HklVector

vector :

the hklvector to add

hkl_vector_minus_vector ()

void                hkl_vector_minus_vector             (HklVector *self,
                                                         const HklVector *vector);

substract an HklVector to another one.

self :

the modified HklVector

vector :

the hklvector to substract

hkl_vector_div_double ()

void                hkl_vector_div_double               (HklVector *self,
                                                         const double d);

divide an HklVector by constant.

self :

the HklVector to divide.

d :

constant use to divide the HklVector

hkl_vector_times_double ()

void                hkl_vector_times_double             (HklVector *self,
                                                         const double d);

multiply an HklVector by a constant value.

self :

the HklVector to modify

d :

the multiply factor

hkl_vector_times_vector ()

void                hkl_vector_times_vector             (HklVector *self,
                                                         const HklVector *vector);

multiply an HklVector by another one. This method multiply coordinate by coordinate.

self :

the HklVector to modify

vector :

the HklVector use to modify the first one

hkl_vector_times_matrix ()

void                hkl_vector_times_matrix             (HklVector *self,
                                                         const HklMatrix *m);

self :

m :


hkl_vector_sum ()

double              hkl_vector_sum                      (const HklVector *self);

compute the HklVector sum of all its elements.

self :

the HklVector to sum.

Returns :

the sum of all elements.

hkl_vector_scalar_product ()

double              hkl_vector_scalar_product           (const HklVector *self,
                                                         const HklVector *vector);

compute the scalar product of two HklVector

self :

the first HklVector

vector :

the second HklVector

Returns :

the scalar product.

hkl_vector_vectorial_product ()

void                hkl_vector_vectorial_product        (HklVector *self,
                                                         const HklVector *vector);

compute the vectorial product of two vectors

self :

the first HklVector (modify)

vector :

the second HklVector

hkl_vector_angle ()

double              hkl_vector_angle                    (const HklVector *self,
                                                         const HklVector *vector);

compute the angles beetween two HklVector

self :

the fist HklVector

vector :

the second HklVector

Returns :

the return value is in beetween [0, pi]

hkl_vector_oriented_angle ()

double              hkl_vector_oriented_angle           (const HklVector *self,
                                                         const HklVector *vector,
                                                         const HklVector *ref);

compute the angles beetween two HklVector and use a reference HklVector to orientate the space. That's way the return value can be in beetween [-pi, pi]. the (self, vector, ref) is a right oriented base.

self :

the first HklVector

vector :

the second HklVector

ref :

the reference HklVector

Returns :

the angles [-pi, pi]

hkl_vector_norm2 ()

double              hkl_vector_norm2                    (const HklVector *self);

compute the norm2 of an HklVector

self :

the hklvector use to compute the norm2

Returns :

the sqrt(|v|)

hkl_vector_normalize ()

int                 hkl_vector_normalize                (HklVector *self);

normalize a hkl_vector

self :

the HklVector to normalize

Returns :

HKL_TRUE if the HklVector can be normalized, HKL_FALSE otherwise

hkl_vector_is_colinear ()

int                 hkl_vector_is_colinear              (const HklVector *self,
                                                         const HklVector *vector);

check if two HklVector are colinears

self :

the first HklVector

vector :

the second HklVector

Returns :

HKL_TRUE if both are colinear.

hkl_vector_randomize ()

void                hkl_vector_randomize                (HklVector *self);

initialize a vector with random values. coordinates range [-1, 1]

self :

the HklVector to randomize

hkl_vector_randomize_vector ()

void                hkl_vector_randomize_vector         (HklVector *self,
                                                         const HklVector *vector);

randomize an HklVector an be sure that it is not equal to the HklVector vector.

self :

the HklVector to randomize

vector :

the HklVector result to avoid

hkl_vector_randomize_vector_vector ()

void                hkl_vector_randomize_vector_vector  (HklVector *self,
                                                         const HklVector *vector1,
                                                         const HklVector *vector2);

randomize an HklVector an be sure that it is not equal to the HklVector vector1 and vector2.

self :

the HklVector to randomize

vector1 :

the first HklVector solution to avoid

vector2 :

the second HklVector solution to avoid

hkl_vector_rotated_around_vector ()

void                hkl_vector_rotated_around_vector    (HklVector *self,
                                                         const HklVector *axe,
                                                         double angle);

rotate a vector around another one with a given angle.

self :

the HklVector to rotate

axe :

the axe of rotation

angle :

the angle of the rotation

hkl_vector_rotated_quaternion ()

void                hkl_vector_rotated_quaternion       (HklVector *self,
                                                         const HklQuaternion *qr);

rotate an HklVector using an HklQuaternion.

self :

the HklVector to rotate

qr :

the HklQuaternion use to rotate the vector

hkl_vector_is_null ()

int                 hkl_vector_is_null                  (const HklVector *self);

check if all the coordinates of an HklVector are null.

self :

the hklvector to check

Returns :

HKl_TRUE if all |elements| are below HKL_EPSILON, HKl_FALSE otherwise Todo: test

hkl_vector_project_on_plan ()

void                hkl_vector_project_on_plan          (HklVector *self,
                                                         const HklVector *plan);

project an HklVector on a plan.

todo test

self :

the vector to project (modify)

plan :

the normal of the plane.
hkl-4.0.3/Documentation/api/html/up.png0000644000175000017500000000062611402652636014706 00000000000000PNG  IHDRw=bKGD pHYs  ~tIME2.E#IDATx=J@Fo] !+2[Z<@/9|t$D9nnBjBRIsI:H8UPN1fcsN95M㧖ɵ 束1~pEe$I 7nrDf!;`'ykI䲤sI_]y^^I>O>?YBIENDB`hkl-4.0.3/Documentation/api/html/hkl-hkl-source.html0000644000175000017500000002632111402652636017272 00000000000000 hkl-source

hkl-source

hkl-source

Synopsis

#define             HKL_SOURCE_DEFAULT_WAVE_LENGTH
                    HklSource;
int                 hkl_source_init                     (HklSource *self,
                                                         double wave_length,
                                                         double x,
                                                         double y,
                                                         double z);
int                 hkl_source_cmp                      (HklSource const *self,
                                                         HklSource const *s);
void                hkl_source_compute_ki               (HklSource const *self,
                                                         HklVector *ki);
double              hkl_source_get_wavelength           (HklSource const *self);
void                hkl_source_fprintf                  (FILE *f,
                                                         HklSource const *self);

Description

Details

HKL_SOURCE_DEFAULT_WAVE_LENGTH

#define HKL_SOURCE_DEFAULT_WAVE_LENGTH (1.54)


HklSource

typedef struct {
	double wave_length;
	HklVector direction;
} HklSource;


hkl_source_init ()

int                 hkl_source_init                     (HklSource *self,
                                                         double wave_length,
                                                         double x,
                                                         double y,
                                                         double z);

self :

wave_length :

x :

y :

z :

Returns :


hkl_source_cmp ()

int                 hkl_source_cmp                      (HklSource const *self,
                                                         HklSource const *s);

self :

s :

Returns :


hkl_source_compute_ki ()

void                hkl_source_compute_ki               (HklSource const *self,
                                                         HklVector *ki);

self :

ki :


hkl_source_get_wavelength ()

double              hkl_source_get_wavelength           (HklSource const *self);

self :

Returns :


hkl_source_fprintf ()

void                hkl_source_fprintf                  (FILE *f,
                                                         HklSource const *self);

f :

self :

hkl-4.0.3/Documentation/api/html/api-index-full.html0000644000175000017500000023435011402652637017264 00000000000000 API Index

API Index

A

ALLOC_GROW, macro in hkl-macros
alloc_nr, macro in hkl-macros
hkl_assert, macro in hkl-macros
HklAxis, struct in hkl-axis
hkl_axis_fprintf, function in hkl-axis
hkl_axis_free, function in hkl-axis
hkl_axis_get_changed, function in hkl-axis
hkl_axis_get_max, function in hkl-axis
hkl_axis_get_name, function in hkl-axis
hkl_axis_get_quaternion, function in hkl-axis
hkl_axis_get_range_unit, function in hkl-axis
hkl_axis_get_value, function in hkl-axis
hkl_axis_get_value_closest, function in hkl-axis
hkl_axis_get_value_closest_unit, function in hkl-axis
hkl_axis_get_value_unit, function in hkl-axis
hkl_axis_init, function in hkl-axis
hkl_axis_is_valid, function in hkl-axis
hkl_axis_is_value_compatible_with_range, function in hkl-axis
hkl_axis_new, function in hkl-axis
hkl_axis_randomize, function in hkl-axis
hkl_axis_set_changed, function in hkl-axis
hkl_axis_set_range, function in hkl-axis
hkl_axis_set_range_unit, function in hkl-axis
hkl_axis_set_value, function in hkl-axis
hkl_axis_set_value_smallest_in_range, function in hkl-axis
hkl_axis_set_value_unit, function in hkl-axis

B

HKL_BEGIN_DECLS, macro in hkl-macros

D

HKL_DEGTORAD, macro in hkl-macros
HklDetector, struct in hkl-detector
hkl_detector_attach_to_holder, function in hkl-detector
hkl_detector_compute_kf, function in hkl-detector
hkl_detector_factory_new, function in hkl-detector-factory
hkl_detector_free, function in hkl-detector
hkl_detector_new, function in hkl-detector
hkl_detector_new_copy, function in hkl-detector
double_diffraction, function in hkl-pseudoaxis-common-hkl
double_diffraction_func, function in hkl-pseudoaxis-common-hkl

E

HKL_END_DECLS, macro in hkl-macros
HKL_EPSILON, macro in hkl-macros
HklError, struct in hkl-error
hkl_error_clear, function in hkl-error
hkl_error_free, function in hkl-error
hkl_error_new, function in hkl-error
hkl_error_new_copy, function in hkl-error
hkl_error_new_literal, function in hkl-error
hkl_error_new_valist, function in hkl-error
hkl_error_prefix, function in hkl-error
hkl_error_propagate, function in hkl-error
hkl_error_propagate_prefixed, function in hkl-error
hkl_error_set, function in hkl-error
hkl_error_set_literal, function in hkl-error
HKL_EULERIAN_KAPPA_SOLUTION, macro in hkl-macros

F

HKL_FAIL, macro in hkl-macros
HKL_FALSE, macro in hkl-macros
HklFunction, user_function in hkl-pseudoaxis

G

HklGeometry, struct in hkl-geometry
HklGeometryConfig, struct in hkl-geometry
HklGeometryList, struct in hkl-geometry
HklGeometryListItem, struct in hkl-geometry
HklGeometryListMultiplyFunction, user_function in hkl-geometry
hkl_geometry_add_holder, function in hkl-geometry
hkl_geometry_closest_from_geometry_with_range, function in hkl-geometry
hkl_geometry_distance, function in hkl-geometry
hkl_geometry_distance_orthodromic, function in hkl-geometry
hkl_geometry_factory_get_config_from_type, function in hkl-geometry-factory
hkl_geometry_factory_new, function in hkl-geometry-factory
hkl_geometry_fprintf, function in hkl-geometry
hkl_geometry_free, function in hkl-geometry
hkl_geometry_get_axis_by_name, function in hkl-geometry
hkl_geometry_init_geometry, function in hkl-geometry
hkl_geometry_is_valid, function in hkl-geometry
hkl_geometry_list_add, function in hkl-geometry
hkl_geometry_list_fprintf, function in hkl-geometry
hkl_geometry_list_free, function in hkl-geometry
hkl_geometry_list_is_empty, function in hkl-geometry
hkl_geometry_list_item_free, function in hkl-geometry
hkl_geometry_list_item_new, function in hkl-geometry
hkl_geometry_list_len, function in hkl-geometry
hkl_geometry_list_multiply, function in hkl-geometry
hkl_geometry_list_multiply_from_range, function in hkl-geometry
hkl_geometry_list_new, function in hkl-geometry
hkl_geometry_list_remove_invalid, function in hkl-geometry
hkl_geometry_list_reset, function in hkl-geometry
hkl_geometry_list_sort, function in hkl-geometry
hkl_geometry_new, function in hkl-geometry
hkl_geometry_new_copy, function in hkl-geometry
hkl_geometry_randomize, function in hkl-geometry
hkl_geometry_set_values_v, function in hkl-geometry
hkl_geometry_update, function in hkl-geometry
G_GNUC_PRINTF, macro in hkl-macros

H

HklHolder, struct in hkl-geometry
hkl_holder_add_rotation_axis, function in hkl-geometry

I

INFINITY, macro in hkl-macros
HklInterval, struct in hkl-interval
hkl_interval_acos, function in hkl-interval
hkl_interval_angle_restrict_symm, function in hkl-interval
hkl_interval_asin, function in hkl-interval
hkl_interval_atan, function in hkl-interval
hkl_interval_cmp, function in hkl-interval
hkl_interval_contain_zero, function in hkl-interval
hkl_interval_cos, function in hkl-interval
hkl_interval_divides_double, function in hkl-interval
hkl_interval_length, function in hkl-interval
hkl_interval_minus_double, function in hkl-interval
hkl_interval_minus_interval, function in hkl-interval
hkl_interval_plus_double, function in hkl-interval
hkl_interval_plus_interval, function in hkl-interval
hkl_interval_sin, function in hkl-interval
hkl_interval_tan, function in hkl-interval
hkl_interval_times_double, function in hkl-interval
hkl_interval_times_interval, function in hkl-interval

L

HklLattice, struct in hkl-lattice
hkl_lattice_fprintf, function in hkl-lattice
hkl_lattice_free, function in hkl-lattice
hkl_lattice_get_1_B, function in hkl-lattice
hkl_lattice_get_B, function in hkl-lattice
hkl_lattice_new, function in hkl-lattice
hkl_lattice_new_copy, function in hkl-lattice
hkl_lattice_new_default, function in hkl-lattice
hkl_lattice_randomize, function in hkl-lattice
hkl_lattice_reciprocal, function in hkl-lattice
hkl_lattice_set, function in hkl-lattice
HKL_LIST, macro in hkl-list
HKL_LIST_ADD_VALUE, macro in hkl-list
HKL_LIST_ALLOC, macro in hkl-list
HKL_LIST_COPY, macro in hkl-list
HKL_LIST_DEL, macro in hkl-list
HKL_LIST_DEL_DESTRUCTOR, macro in hkl-list
HKL_LIST_DEL_ITEM_DESTRUCTOR, macro in hkl-list
HKL_LIST_FREE, macro in hkl-list
HKL_LIST_FREE_DESTRUCTOR, macro in hkl-list
HKL_LIST_INIT, macro in hkl-list
HKL_LIST_LEN, macro in hkl-list
HKL_LIST_RESIZE, macro in hkl-list

M

HKL_MAJOR, macro in hkl-macros
HKL_MALLOC, macro in hkl-macros
HklMatrix, struct in hkl-vector
hkl_matrix_cmp, function in hkl-matrix
hkl_matrix_det, function in hkl-matrix
hkl_matrix_fprintf, function in hkl-matrix
hkl_matrix_init, function in hkl-matrix
hkl_matrix_init_from_euler, function in hkl-matrix
hkl_matrix_init_from_two_vector, function in hkl-matrix
hkl_matrix_is_null, function in hkl-matrix
hkl_matrix_solve, function in hkl-matrix
hkl_matrix_times_matrix, function in hkl-matrix
hkl_matrix_times_vector, function in hkl-matrix
hkl_matrix_to_euler, function in hkl-matrix
hkl_matrix_transpose, function in hkl-matrix
HKL_MINOR, macro in hkl-macros
M_PI, macro in hkl-macros
M_PI_2, macro in hkl-macros

N

NORETURN, macro in hkl-macros

P

HklParameter, struct in hkl-parameter
hkl_parameter_fprintf, function in hkl-parameter
hkl_parameter_free, function in hkl-parameter
hkl_parameter_get_max, function in hkl-parameter
hkl_parameter_get_range_unit, function in hkl-parameter
hkl_parameter_get_value_unit, function in hkl-parameter
hkl_parameter_init, function in hkl-parameter
hkl_parameter_is_valid, function in hkl-parameter
hkl_parameter_new, function in hkl-parameter
hkl_parameter_new_copy, function in hkl-parameter
hkl_parameter_randomize, function in hkl-parameter
hkl_parameter_set_range, function in hkl-parameter
hkl_parameter_set_range_unit, function in hkl-parameter
hkl_parameter_set_value, function in hkl-parameter
hkl_parameter_set_value_unit, function in hkl-parameter
HKL_PATCH, macro in hkl-macros
hkl_printbt, function in hkl-macros
HklPseudoAxis, struct in hkl-pseudoaxis
HklPseudoAxisEngine, struct in hkl-pseudoaxis
HklPseudoAxisEngineList, struct in hkl-pseudoaxis
HklPseudoAxisEngineMode, struct in hkl-pseudoaxis
HklPseudoAxisEngineModeFunc, user_function in hkl-pseudoaxis
HklPseudoAxisEngineModePsi, struct in hkl-pseudoaxis-common-psi
hkl_pseudo_axis_engine_add_geometry, function in hkl-pseudoaxis
hkl_pseudo_axis_engine_add_mode, function in hkl-pseudoaxis
hkl_pseudo_axis_engine_e4cv_hkl_new, function in hkl-pseudoaxis-e4cv
hkl_pseudo_axis_engine_e4cv_psi_new, function in hkl-pseudoaxis-e4cv
hkl_pseudo_axis_engine_e6c_hkl_new, function in hkl-pseudoaxis-e6c
hkl_pseudo_axis_engine_e6c_psi_new, function in hkl-pseudoaxis-e6c
hkl_pseudo_axis_engine_eulerians_new, function in hkl-pseudoaxis-common-eulerians
hkl_pseudo_axis_engine_fprintf, function in hkl-pseudoaxis
hkl_pseudo_axis_engine_free, function in hkl-pseudoaxis
hkl_pseudo_axis_engine_get, function in hkl-pseudoaxis
hkl_pseudo_axis_engine_hkl_new, function in hkl-pseudoaxis-common-hkl
hkl_pseudo_axis_engine_initialize, function in hkl-pseudoaxis
hkl_pseudo_axis_engine_init_func, function in hkl-pseudoaxis-common
hkl_pseudo_axis_engine_k4cv_hkl_new, function in hkl-pseudoaxis-k4cv
hkl_pseudo_axis_engine_k4cv_psi_new, function in hkl-pseudoaxis-k4cv
hkl_pseudo_axis_engine_k6c_hkl_new, function in hkl-pseudoaxis-k6c
hkl_pseudo_axis_engine_k6c_psi_new, function in hkl-pseudoaxis-k6c
hkl_pseudo_axis_engine_list_add, function in hkl-pseudoaxis
hkl_pseudo_axis_engine_list_clear, function in hkl-pseudoaxis
hkl_pseudo_axis_engine_list_factory, function in hkl-pseudoaxis-factory
hkl_pseudo_axis_engine_list_fprintf, function in hkl-pseudoaxis
hkl_pseudo_axis_engine_list_free, function in hkl-pseudoaxis
hkl_pseudo_axis_engine_list_get, function in hkl-pseudoaxis
hkl_pseudo_axis_engine_list_get_by_name, function in hkl-pseudoaxis
hkl_pseudo_axis_engine_list_get_pseudo_axis_by_name, function in hkl-pseudoaxis
hkl_pseudo_axis_engine_list_init, function in hkl-pseudoaxis
hkl_pseudo_axis_engine_list_new, function in hkl-pseudoaxis
hkl_pseudo_axis_engine_mode_free, function in hkl-pseudoaxis
hkl_pseudo_axis_engine_mode_get_hkl_real, function in hkl-pseudoaxis-common-hkl
hkl_pseudo_axis_engine_mode_init, function in hkl-pseudoaxis
hkl_pseudo_axis_engine_mode_init_psi_constant_vertical_real, function in hkl-pseudoaxis-common-hkl
hkl_pseudo_axis_engine_mode_new, function in hkl-pseudoaxis
hkl_pseudo_axis_engine_mode_psi_new, function in hkl-pseudoaxis-common-psi
hkl_pseudo_axis_engine_mode_set_real, function in hkl-pseudoaxis-auto
hkl_pseudo_axis_engine_new, function in hkl-pseudoaxis
hkl_pseudo_axis_engine_psi_new, function in hkl-pseudoaxis-common-psi
hkl_pseudo_axis_engine_q2_new, function in hkl-pseudoaxis-common-q
hkl_pseudo_axis_engine_q_new, function in hkl-pseudoaxis-common-q
hkl_pseudo_axis_engine_select_mode, function in hkl-pseudoaxis
hkl_pseudo_axis_engine_set, function in hkl-pseudoaxis
hkl_pseudo_axis_engine_zaxis_hkl_new, function in hkl-pseudoaxis-zaxis
hkl_pseudo_axis_fprintf, function in hkl-pseudoaxis
hkl_pseudo_axis_free, function in hkl-pseudoaxis
hkl_pseudo_axis_init, function in hkl-pseudoaxis
hkl_pseudo_axis_new, function in hkl-pseudoaxis
psi_constant_vertical_func, function in hkl-pseudoaxis-common-hkl

Q

HklQuaternion, struct in hkl-vector
hkl_quaternion_cmp, function in hkl-quaternion
hkl_quaternion_conjugate, function in hkl-quaternion
hkl_quaternion_fprintf, function in hkl-quaternion
hkl_quaternion_init, function in hkl-quaternion
hkl_quaternion_init_from_angle_and_axe, function in hkl-quaternion
hkl_quaternion_init_from_vector, function in hkl-quaternion
hkl_quaternion_minus_quaternion, function in hkl-quaternion
hkl_quaternion_norm2, function in hkl-quaternion
hkl_quaternion_times_quaternion, function in hkl-quaternion
hkl_quaternion_to_angle_and_axe, function in hkl-quaternion
hkl_quaternion_to_matrix, function in hkl-quaternion

R

HKL_RADTODEG, macro in hkl-macros
RUBh_minus_Q, function in hkl-pseudoaxis-common-hkl
RUBh_minus_Q_func, function in hkl-pseudoaxis-common-hkl

S

HklSample, struct in hkl-sample
HklSampleList, struct in hkl-sample
HklSampleReflection, struct in hkl-sample
HklSampleType, enum in hkl-sample
hkl_sample_add_reflection, function in hkl-sample
hkl_sample_affine, function in hkl-sample
hkl_sample_compute_UB_busing_levy, function in hkl-sample
hkl_sample_del_reflection, function in hkl-sample
hkl_sample_fprintf, function in hkl-sample
hkl_sample_free, function in hkl-sample
hkl_sample_get_ith_reflection, function in hkl-sample
hkl_sample_get_reflection_mesured_angle, function in hkl-sample
hkl_sample_get_reflection_theoretical_angle, function in hkl-sample
hkl_sample_get_UB, function in hkl-sample
hkl_sample_list_append, function in hkl-sample
hkl_sample_list_clear, function in hkl-sample
hkl_sample_list_del, function in hkl-sample
hkl_sample_list_fprintf, function in hkl-sample
hkl_sample_list_free, function in hkl-sample
hkl_sample_list_get_by_name, function in hkl-sample
hkl_sample_list_get_idx_from_name, function in hkl-sample
hkl_sample_list_get_ith, function in hkl-sample
hkl_sample_list_len, function in hkl-sample
hkl_sample_list_new, function in hkl-sample
hkl_sample_list_select_current, function in hkl-sample
hkl_sample_new, function in hkl-sample
hkl_sample_new_copy, function in hkl-sample
hkl_sample_reflection_set_flag, function in hkl-sample
hkl_sample_reflection_set_geometry, function in hkl-sample
hkl_sample_reflection_set_hkl, function in hkl-sample
hkl_sample_set_lattice, function in hkl-sample
hkl_sample_set_name, function in hkl-sample
hkl_sample_set_UB, function in hkl-sample
hkl_sample_set_U_from_euler, function in hkl-sample
HklSource, struct in hkl-source
hkl_source_cmp, function in hkl-source
hkl_source_compute_ki, function in hkl-source
HKL_SOURCE_DEFAULT_WAVE_LENGTH, macro in hkl-source
hkl_source_fprintf, function in hkl-source
hkl_source_get_wavelength, function in hkl-source
hkl_source_init, function in hkl-source
HKL_SUCCESS, macro in hkl-macros

T

HKL_TAU, macro in hkl-macros
HKL_TINY, macro in hkl-macros
HKL_TRUE, macro in hkl-macros

U

HklUnit, struct in hkl-unit
hkl_unit_compatible, function in hkl-unit
hkl_unit_factor, function in hkl-unit

V

HklVector, struct in hkl-vector
hkl_vector_add_vector, function in hkl-vector
hkl_vector_angle, function in hkl-vector
hkl_vector_cmp, function in hkl-vector
hkl_vector_div_double, function in hkl-vector
hkl_vector_fprintf, function in hkl-vector
hkl_vector_init, function in hkl-vector
hkl_vector_is_colinear, function in hkl-vector
hkl_vector_is_null, function in hkl-vector
hkl_vector_is_opposite, function in hkl-vector
hkl_vector_minus_vector, function in hkl-vector
hkl_vector_norm2, function in hkl-vector
hkl_vector_normalize, function in hkl-vector
hkl_vector_oriented_angle, function in hkl-vector
hkl_vector_project_on_plan, function in hkl-vector
hkl_vector_randomize, function in hkl-vector
hkl_vector_randomize_vector, function in hkl-vector
hkl_vector_randomize_vector_vector, function in hkl-vector
hkl_vector_rotated_around_vector, function in hkl-vector
hkl_vector_rotated_quaternion, function in hkl-vector
hkl_vector_scalar_product, function in hkl-vector
hkl_vector_sum, function in hkl-vector
hkl_vector_times_double, function in hkl-vector
hkl_vector_times_matrix, function in hkl-vector
hkl_vector_times_vector, function in hkl-vector
hkl_vector_vectorial_product, function in hkl-vector
HKL_VERSION, macro in hkl-macros
hkl-4.0.3/Documentation/api/html/hkl.devhelp20000644000175000017500000011351311402652636015765 00000000000000 hkl-4.0.3/Documentation/api/html/hkl-hkl-axis.html0000644000175000017500000010014111402652637016730 00000000000000 hkl-axis

hkl-axis

hkl-axis

Synopsis

                    HklAxis;
HklAxis *           hkl_axis_new                        (char const *name,
                                                         HklVector const *axis_v);
void                hkl_axis_free                       (HklAxis *self);
void                hkl_axis_init                       (HklAxis *axis,
                                                         char const *name,
                                                         HklVector const *axis_v);
char const *        hkl_axis_get_name                   (HklAxis const *self);
int                 hkl_axis_get_changed                (HklAxis const *self);
void                hkl_axis_set_changed                (HklAxis *self,
                                                         int changed);
double              hkl_axis_get_value                  (HklAxis const *self);
double              hkl_axis_get_value_unit             (HklAxis const *self);
double              hkl_axis_get_value_closest          (HklAxis const *self,
                                                         HklAxis const *axis);
double              hkl_axis_get_value_closest_unit     (HklAxis const *self,
                                                         HklAxis const *axis);
double              hkl_axis_get_max                    (HklAxis const *self);
void                hkl_axis_get_range_unit             (HklAxis const *self,
                                                         double *min,
                                                         double *max);
void                hkl_axis_set_value                  (HklAxis *self,
                                                         double value);
void                hkl_axis_set_value_smallest_in_range
                                                        (HklAxis *self);
void                hkl_axis_set_value_unit             (HklAxis *self,
                                                         double value);
void                hkl_axis_set_range                  (HklAxis *self,
                                                         double min,
                                                         double max);
void                hkl_axis_set_range_unit             (HklAxis *self,
                                                         double min,
                                                         double max);
void                hkl_axis_randomize                  (HklAxis *self);
void                hkl_axis_get_quaternion             (HklAxis const *self,
                                                         HklQuaternion *q);
int                 hkl_axis_is_value_compatible_with_range
                                                        (HklAxis const *self);
int                 hkl_axis_is_valid                   (const HklAxis *self);
void                hkl_axis_fprintf                    (FILE *f,
                                                         HklAxis *self);

Description

Details

HklAxis

typedef struct {
	HklParameter parent_instance;
	HklVector axis_v;
	HklQuaternion q;
} HklAxis;


hkl_axis_new ()

HklAxis *           hkl_axis_new                        (char const *name,
                                                         HklVector const *axis_v);

name :

axis_v :

Returns :


hkl_axis_free ()

void                hkl_axis_free                       (HklAxis *self);

self :


hkl_axis_init ()

void                hkl_axis_init                       (HklAxis *axis,
                                                         char const *name,
                                                         HklVector const *axis_v);

axis :

name :

axis_v :


hkl_axis_get_name ()

char const *        hkl_axis_get_name                   (HklAxis const *self);

self :

Returns :


hkl_axis_get_changed ()

int                 hkl_axis_get_changed                (HklAxis const *self);

self :

Returns :


hkl_axis_set_changed ()

void                hkl_axis_set_changed                (HklAxis *self,
                                                         int changed);

self :

changed :


hkl_axis_get_value ()

double              hkl_axis_get_value                  (HklAxis const *self);

self :

Returns :


hkl_axis_get_value_unit ()

double              hkl_axis_get_value_unit             (HklAxis const *self);

self :

Returns :


hkl_axis_get_value_closest ()

double              hkl_axis_get_value_closest          (HklAxis const *self,
                                                         HklAxis const *axis);

self :

axis :

Returns :


hkl_axis_get_value_closest_unit ()

double              hkl_axis_get_value_closest_unit     (HklAxis const *self,
                                                         HklAxis const *axis);

self :

axis :

Returns :


hkl_axis_get_max ()

double              hkl_axis_get_max                    (HklAxis const *self);

self :

Returns :


hkl_axis_get_range_unit ()

void                hkl_axis_get_range_unit             (HklAxis const *self,
                                                         double *min,
                                                         double *max);

self :

min :

max :


hkl_axis_set_value ()

void                hkl_axis_set_value                  (HklAxis *self,
                                                         double value);

self :

value :


hkl_axis_set_value_smallest_in_range ()

void                hkl_axis_set_value_smallest_in_range
                                                        (HklAxis *self);

self :


hkl_axis_set_value_unit ()

void                hkl_axis_set_value_unit             (HklAxis *self,
                                                         double value);

self :

value :


hkl_axis_set_range ()

void                hkl_axis_set_range                  (HklAxis *self,
                                                         double min,
                                                         double max);

self :

min :

max :


hkl_axis_set_range_unit ()

void                hkl_axis_set_range_unit             (HklAxis *self,
                                                         double min,
                                                         double max);

self :

min :

max :


hkl_axis_randomize ()

void                hkl_axis_randomize                  (HklAxis *self);

self :


hkl_axis_get_quaternion ()

void                hkl_axis_get_quaternion             (HklAxis const *self,
                                                         HklQuaternion *q);

self :

q :


hkl_axis_is_value_compatible_with_range ()

int                 hkl_axis_is_value_compatible_with_range
                                                        (HklAxis const *self);

self :

Returns :


hkl_axis_is_valid ()

int                 hkl_axis_is_valid                   (const HklAxis *self);

self :

Returns :


hkl_axis_fprintf ()

void                hkl_axis_fprintf                    (FILE *f,
                                                         HklAxis *self);

f :

self :

hkl-4.0.3/Documentation/api/html/object-tree.html0000644000175000017500000000303411402652637016642 00000000000000 Object Hierarchy

Object Hierarchy


hkl-4.0.3/Documentation/api/html/hkl-hkl-geometry.html0000644000175000017500000012645011402652637017632 00000000000000 hkl-geometry

hkl-geometry

hkl-geometry

Synopsis

                    HklHolder;
                    HklGeometryConfig;
                    HklGeometry;
                    HklGeometryList;
                    HklGeometryListItem;
void                (*HklGeometryListMultiplyFunction)  (HklGeometryList *self,
                                                         size_t idx);
HklAxis *           hkl_holder_add_rotation_axis        (HklHolder *self,
                                                         char const *name,
                                                         double x,
                                                         double y,
                                                         double z);
HklGeometry *       hkl_geometry_new                    (void);
HklGeometry *       hkl_geometry_new_copy               (HklGeometry const *self);
void                hkl_geometry_free                   (HklGeometry *self);
void                hkl_geometry_init_geometry          (HklGeometry *self,
                                                         HklGeometry const *src);
HklHolder *         hkl_geometry_add_holder             (HklGeometry *self);
void                hkl_geometry_update                 (HklGeometry *self);
HklAxis *           hkl_geometry_get_axis_by_name       (HklGeometry *self,
                                                         char const *name);
void                hkl_geometry_randomize              (HklGeometry *self);
int                 hkl_geometry_set_values_v           (HklGeometry *self,
                                                         size_t len,
                                                         ...);
double              hkl_geometry_distance               (HklGeometry *self,
                                                         HklGeometry *geom);
double              hkl_geometry_distance_orthodromic   (HklGeometry *self,
                                                         HklGeometry *geom);
int                 hkl_geometry_closest_from_geometry_with_range
                                                        (HklGeometry *self,
                                                         HklGeometry *ref);
int                 hkl_geometry_is_valid               (HklGeometry const *self);
void                hkl_geometry_fprintf                (FILE *file,
                                                         HklGeometry const *self);
HklGeometryList *   hkl_geometry_list_new               (void);
void                hkl_geometry_list_free              (HklGeometryList *self);
void                hkl_geometry_list_add               (HklGeometryList *self,
                                                         HklGeometry *geometry);
void                hkl_geometry_list_reset             (HklGeometryList *self);
void                hkl_geometry_list_sort              (HklGeometryList *self,
                                                         HklGeometry *ref);
void                hkl_geometry_list_fprintf           (FILE *f,
                                                         HklGeometryList const *self);
void                hkl_geometry_list_multiply          (HklGeometryList *self);
void                hkl_geometry_list_multiply_from_range
                                                        (HklGeometryList *self);
void                hkl_geometry_list_remove_invalid    (HklGeometryList *self);
int                 hkl_geometry_list_len               (HklGeometryList *self);
int                 hkl_geometry_list_is_empty          (HklGeometryList *self);
HklGeometryListItem * hkl_geometry_list_item_new        (HklGeometry *geometry);
void                hkl_geometry_list_item_free         (HklGeometryListItem *self);

Description

Details

HklHolder

typedef struct {
	HklGeometry *geometry;
	HKL_LIST(size_t, idx);
	HklQuaternion q;
} HklHolder;


HklGeometryConfig

typedef struct {
	const char *name;
	HklGeometryType type;
} HklGeometryConfig;


HklGeometry

typedef struct {
	const HklGeometryConfig *config;
	HklSource source;
	HKL_LIST(HklAxis, axes);
	HKL_LIST(HklHolder, holders);
} HklGeometry;


HklGeometryList

typedef struct {
	HKL_LIST(HklGeometryListItem *, items);
	HklGeometryListMultiplyFunction multiply;
} HklGeometryList;


HklGeometryListItem

typedef struct {
	HklGeometry *geometry;
} HklGeometryListItem;


HklGeometryListMultiplyFunction ()

void                (*HklGeometryListMultiplyFunction)  (HklGeometryList *self,
                                                         size_t idx);

self :

idx :


hkl_holder_add_rotation_axis ()

HklAxis *           hkl_holder_add_rotation_axis        (HklHolder *self,
                                                         char const *name,
                                                         double x,
                                                         double y,
                                                         double z);

self :

name :

x :

y :

z :

Returns :


hkl_geometry_new ()

HklGeometry *       hkl_geometry_new                    (void);

Returns :


hkl_geometry_new_copy ()

HklGeometry *       hkl_geometry_new_copy               (HklGeometry const *self);

self :

Returns :


hkl_geometry_free ()

void                hkl_geometry_free                   (HklGeometry *self);

self :


hkl_geometry_init_geometry ()

void                hkl_geometry_init_geometry          (HklGeometry *self,
                                                         HklGeometry const *src);

self :

src :


hkl_geometry_add_holder ()

HklHolder *         hkl_geometry_add_holder             (HklGeometry *self);

self :

Returns :


hkl_geometry_update ()

void                hkl_geometry_update                 (HklGeometry *self);

self :


hkl_geometry_get_axis_by_name ()

HklAxis *           hkl_geometry_get_axis_by_name       (HklGeometry *self,
                                                         char const *name);

self :

name :

Returns :


hkl_geometry_randomize ()

void                hkl_geometry_randomize              (HklGeometry *self);

self :


hkl_geometry_set_values_v ()

int                 hkl_geometry_set_values_v           (HklGeometry *self,
                                                         size_t len,
                                                         ...);

self :

len :

... :

Returns :


hkl_geometry_distance ()

double              hkl_geometry_distance               (HklGeometry *self,
                                                         HklGeometry *geom);

self :

geom :

Returns :


hkl_geometry_distance_orthodromic ()

double              hkl_geometry_distance_orthodromic   (HklGeometry *self,
                                                         HklGeometry *geom);

self :

geom :

Returns :


hkl_geometry_closest_from_geometry_with_range ()

int                 hkl_geometry_closest_from_geometry_with_range
                                                        (HklGeometry *self,
                                                         HklGeometry *ref);

self :

ref :

Returns :


hkl_geometry_is_valid ()

int                 hkl_geometry_is_valid               (HklGeometry const *self);

self :

Returns :


hkl_geometry_fprintf ()

void                hkl_geometry_fprintf                (FILE *file,
                                                         HklGeometry const *self);

file :

self :


hkl_geometry_list_new ()

HklGeometryList *   hkl_geometry_list_new               (void);

Returns :


hkl_geometry_list_free ()

void                hkl_geometry_list_free              (HklGeometryList *self);

self :


hkl_geometry_list_add ()

void                hkl_geometry_list_add               (HklGeometryList *self,
                                                         HklGeometry *geometry);

self :

geometry :


hkl_geometry_list_reset ()

void                hkl_geometry_list_reset             (HklGeometryList *self);

self :


hkl_geometry_list_sort ()

void                hkl_geometry_list_sort              (HklGeometryList *self,
                                                         HklGeometry *ref);

self :

ref :


hkl_geometry_list_fprintf ()

void                hkl_geometry_list_fprintf           (FILE *f,
                                                         HklGeometryList const *self);

f :

self :


hkl_geometry_list_multiply ()

void                hkl_geometry_list_multiply          (HklGeometryList *self);

self :


hkl_geometry_list_multiply_from_range ()

void                hkl_geometry_list_multiply_from_range
                                                        (HklGeometryList *self);

self :


hkl_geometry_list_remove_invalid ()

void                hkl_geometry_list_remove_invalid    (HklGeometryList *self);

self :


hkl_geometry_list_len ()

int                 hkl_geometry_list_len               (HklGeometryList *self);

self :

Returns :


hkl_geometry_list_is_empty ()

int                 hkl_geometry_list_is_empty          (HklGeometryList *self);

self :

Returns :


hkl_geometry_list_item_new ()

HklGeometryListItem * hkl_geometry_list_item_new        (HklGeometry *geometry);

geometry :

Returns :


hkl_geometry_list_item_free ()

void                hkl_geometry_list_item_free         (HklGeometryListItem *self);

self :

hkl-4.0.3/Documentation/api/html/hkl-hkl-pseudoaxis-zaxis.html0000644000175000017500000000730211402652637021311 00000000000000 hkl-pseudoaxis-zaxis

hkl-pseudoaxis-zaxis

hkl-pseudoaxis-zaxis

Description

Details

hkl_pseudo_axis_engine_zaxis_hkl_new ()

HklPseudoAxisEngine * hkl_pseudo_axis_engine_zaxis_hkl_new
                                                        (void);

Returns :

hkl-4.0.3/Documentation/api/html/hkl-hkl-list.html0000644000175000017500000002661011402652637016747 00000000000000 hkl-list

hkl-list

hkl-list

Synopsis

#define             HKL_LIST_LEN                        (array)
#define             HKL_LIST                            (type,
                                                         name)
#define             HKL_LIST_INIT                       (array)
#define             HKL_LIST_ALLOC                      (array,
                                                         len)
#define             HKL_LIST_COPY                       (dst,
                                                         src)
#define             HKL_LIST_FREE                       (array)
#define             HKL_LIST_FREE_DESTRUCTOR            (array,
                                                         destructor)
#define             HKL_LIST_RESIZE                     (array,
                                                         len)
#define             HKL_LIST_ADD_VALUE                  (array,
                                                         value)
#define             HKL_LIST_DEL                        (array,
                                                         idx)
#define             HKL_LIST_DEL_DESTRUCTOR             (array,
                                                         idx,
                                                         destructor)
#define             HKL_LIST_DEL_ITEM_DESTRUCTOR        (array,
                                                         item,
                                                         destructor)

Description

Details

HKL_LIST_LEN()

#define HKL_LIST_LEN(array) array ## _len

array :


HKL_LIST()

#define HKL_LIST(type, name) type *name; size_t HKL_LIST_LEN(name)

type :

name :


HKL_LIST_INIT()

#define HKL_LIST_INIT(array) array = NULL, HKL_LIST_LEN(array) = 0

array :


HKL_LIST_ALLOC()

#define             HKL_LIST_ALLOC(array, len)

array :

len :


HKL_LIST_COPY()

#define HKL_LIST_COPY(dst, src) memcpy(dst, src, HKL_LIST_LEN(src) * sizeof(*src))

dst :

src :


HKL_LIST_FREE()

#define HKL_LIST_FREE(array) free(array), HKL_LIST_INIT(array)

array :


HKL_LIST_FREE_DESTRUCTOR()

#define             HKL_LIST_FREE_DESTRUCTOR(array, destructor)

array :

destructor :


HKL_LIST_RESIZE()

#define             HKL_LIST_RESIZE(array, len)

array :

len :


HKL_LIST_ADD_VALUE()

#define             HKL_LIST_ADD_VALUE(array, value)

array :

value :


HKL_LIST_DEL()

#define             HKL_LIST_DEL(array, idx)

array :

idx :


HKL_LIST_DEL_DESTRUCTOR()

#define             HKL_LIST_DEL_DESTRUCTOR(array, idx, destructor)

array :

idx :

destructor :


HKL_LIST_DEL_ITEM_DESTRUCTOR()

#define             HKL_LIST_DEL_ITEM_DESTRUCTOR(array, item, destructor)

array :

item :

destructor :

hkl-4.0.3/Documentation/api/html/hkl-hkl-pseudoaxis-k4cv.html0000644000175000017500000001151311402652637021021 00000000000000 hkl-pseudoaxis-k4cv

hkl-pseudoaxis-k4cv

hkl-pseudoaxis-k4cv

Description

Details

hkl_pseudo_axis_engine_k4cv_hkl_new ()

HklPseudoAxisEngine * hkl_pseudo_axis_engine_k4cv_hkl_new
                                                        (void);

Returns :


hkl_pseudo_axis_engine_k4cv_psi_new ()

HklPseudoAxisEngine * hkl_pseudo_axis_engine_k4cv_psi_new
                                                        (void);

Returns :

hkl-4.0.3/Documentation/api/html/hkl-hkl-detector-factory.html0000644000175000017500000000713411402652637021252 00000000000000 hkl-detector-factory

hkl-detector-factory

hkl-detector-factory

Synopsis

HklDetector *       hkl_detector_factory_new            (HklDetectorType type);

Description

Details

hkl_detector_factory_new ()

HklDetector *       hkl_detector_factory_new            (HklDetectorType type);

type :

Returns :

hkl-4.0.3/Documentation/api/html/hkl-hkl-sample.html0000644000175000017500000015253511402652637017263 00000000000000 hkl-sample

hkl-sample

hkl-sample

Synopsis

                    HklSample;
                    HklSampleReflection;
                    HklSampleList;
enum                HklSampleType;
HklSample *         hkl_sample_new                      (char const *name,
                                                         HklSampleType type);
HklSample *         hkl_sample_new_copy                 (HklSample const *self);
void                hkl_sample_free                     (HklSample *self);
void                hkl_sample_set_name                 (HklSample *self,
                                                         char const *name);
int                 hkl_sample_set_lattice              (HklSample *self,
                                                         double a,
                                                         double b,
                                                         double c,
                                                         double alpha,
                                                         double beta,
                                                         double gamma);
int                 hkl_sample_set_U_from_euler         (HklSample *self,
                                                         double x,
                                                         double y,
                                                         double z);
void                hkl_sample_get_UB                   (HklSample *self,
                                                         HklMatrix *UB);
double              hkl_sample_set_UB                   (HklSample *self,
                                                         const HklMatrix *UB);
HklSampleReflection * hkl_sample_add_reflection         (HklSample *self,
                                                         HklGeometry *geometry,
                                                         HklDetector const *detector,
                                                         double h,
                                                         double k,
                                                         double l);
HklSampleReflection * hkl_sample_get_ith_reflection     (HklSample const *self,
                                                         size_t idx);
int                 hkl_sample_del_reflection           (HklSample *self,
                                                         size_t idx);
int                 hkl_sample_compute_UB_busing_levy   (HklSample *self,
                                                         size_t idx1,
                                                         size_t idx2);
double              hkl_sample_affine                   (HklSample *sample);
double              hkl_sample_get_reflection_mesured_angle
                                                        (HklSample const *self,
                                                         size_t idx1,
                                                         size_t idx2);
double              hkl_sample_get_reflection_theoretical_angle
                                                        (HklSample const *self,
                                                         size_t idx1,
                                                         size_t idx2);
void                hkl_sample_fprintf                  (FILE *f,
                                                         HklSample const *self);
void                hkl_sample_reflection_set_hkl       (HklSampleReflection *self,
                                                         double h,
                                                         double k,
                                                         double l);
void                hkl_sample_reflection_set_flag      (HklSampleReflection *self,
                                                         int flag);
void                hkl_sample_reflection_set_geometry  (HklSampleReflection *self,
                                                         HklGeometry *geometry);
HklSampleList *     hkl_sample_list_new                 (void);
void                hkl_sample_list_free                (HklSampleList *self);
HklSample *         hkl_sample_list_append              (HklSampleList *self,
                                                         HklSample *sample);
void                hkl_sample_list_clear               (HklSampleList *self);
void                hkl_sample_list_del                 (HklSampleList *self,
                                                         HklSample *sample);
size_t              hkl_sample_list_len                 (HklSampleList const *self);
HklSample *         hkl_sample_list_get_ith             (HklSampleList *self,
                                                         size_t idx);
HklSample *         hkl_sample_list_get_by_name         (HklSampleList *self,
                                                         char const *name);
size_t              hkl_sample_list_get_idx_from_name   (HklSampleList *self,
                                                         char const *name);
int                 hkl_sample_list_select_current      (HklSampleList *self,
                                                         char const *name);
void                hkl_sample_list_fprintf             (FILE *f,
                                                         HklSampleList const *self);

Description

Details

HklSample

typedef struct {
	char *name;
	HklSampleType type;
	HklLattice *lattice;
	HklMatrix U;
	HklMatrix UB;
	HklParameter *ux;
	HklParameter *uy;
	HklParameter *uz;
	HKL_LIST(HklSampleReflection *, reflections);
} HklSample;


HklSampleReflection

typedef struct {
	HklGeometry *geometry;
	HklDetector detector;
	HklVector hkl;
	HklVector _hkl;
	int flag;
} HklSampleReflection;


HklSampleList

typedef struct {
	HKL_LIST(HklSample *, samples);
	HklSample *current;
} HklSampleList;


enum HklSampleType

enum HklSampleType {
	HKL_SAMPLE_TYPE_MONOCRYSTAL
};


hkl_sample_new ()

HklSample *         hkl_sample_new                      (char const *name,
                                                         HklSampleType type);

name :

type :

Returns :


hkl_sample_new_copy ()

HklSample *         hkl_sample_new_copy                 (HklSample const *self);

self :

Returns :


hkl_sample_free ()

void                hkl_sample_free                     (HklSample *self);

self :


hkl_sample_set_name ()

void                hkl_sample_set_name                 (HklSample *self,
                                                         char const *name);

self :

name :


hkl_sample_set_lattice ()

int                 hkl_sample_set_lattice              (HklSample *self,
                                                         double a,
                                                         double b,
                                                         double c,
                                                         double alpha,
                                                         double beta,
                                                         double gamma);

self :

a :

b :

c :

alpha :

beta :

gamma :

Returns :


hkl_sample_set_U_from_euler ()

int                 hkl_sample_set_U_from_euler         (HklSample *self,
                                                         double x,
                                                         double y,
                                                         double z);

self :

x :

y :

z :

Returns :


hkl_sample_get_UB ()

void                hkl_sample_get_UB                   (HklSample *self,
                                                         HklMatrix *UB);

self :

UB :


hkl_sample_set_UB ()

double              hkl_sample_set_UB                   (HklSample *self,
                                                         const HklMatrix *UB);

self :

UB :

Returns :


hkl_sample_add_reflection ()

HklSampleReflection * hkl_sample_add_reflection         (HklSample *self,
                                                         HklGeometry *geometry,
                                                         HklDetector const *detector,
                                                         double h,
                                                         double k,
                                                         double l);

self :

geometry :

detector :

h :

k :

l :

Returns :


hkl_sample_get_ith_reflection ()

HklSampleReflection * hkl_sample_get_ith_reflection     (HklSample const *self,
                                                         size_t idx);

self :

idx :

Returns :


hkl_sample_del_reflection ()

int                 hkl_sample_del_reflection           (HklSample *self,
                                                         size_t idx);

self :

idx :

Returns :


hkl_sample_compute_UB_busing_levy ()

int                 hkl_sample_compute_UB_busing_levy   (HklSample *self,
                                                         size_t idx1,
                                                         size_t idx2);

self :

idx1 :

idx2 :

Returns :


hkl_sample_affine ()

double              hkl_sample_affine                   (HklSample *sample);

sample :

Returns :


hkl_sample_get_reflection_mesured_angle ()

double              hkl_sample_get_reflection_mesured_angle
                                                        (HklSample const *self,
                                                         size_t idx1,
                                                         size_t idx2);

self :

idx1 :

idx2 :

Returns :


hkl_sample_get_reflection_theoretical_angle ()

double              hkl_sample_get_reflection_theoretical_angle
                                                        (HklSample const *self,
                                                         size_t idx1,
                                                         size_t idx2);

self :

idx1 :

idx2 :

Returns :


hkl_sample_fprintf ()

void                hkl_sample_fprintf                  (FILE *f,
                                                         HklSample const *self);

f :

self :


hkl_sample_reflection_set_hkl ()

void                hkl_sample_reflection_set_hkl       (HklSampleReflection *self,
                                                         double h,
                                                         double k,
                                                         double l);

self :

h :

k :

l :


hkl_sample_reflection_set_flag ()

void                hkl_sample_reflection_set_flag      (HklSampleReflection *self,
                                                         int flag);

self :

flag :


hkl_sample_reflection_set_geometry ()

void                hkl_sample_reflection_set_geometry  (HklSampleReflection *self,
                                                         HklGeometry *geometry);

self :

geometry :


hkl_sample_list_new ()

HklSampleList *     hkl_sample_list_new                 (void);

Returns :


hkl_sample_list_free ()

void                hkl_sample_list_free                (HklSampleList *self);

self :


hkl_sample_list_append ()

HklSample *         hkl_sample_list_append              (HklSampleList *self,
                                                         HklSample *sample);

self :

sample :

Returns :


hkl_sample_list_clear ()

void                hkl_sample_list_clear               (HklSampleList *self);

self :


hkl_sample_list_del ()

void                hkl_sample_list_del                 (HklSampleList *self,
                                                         HklSample *sample);

self :

sample :


hkl_sample_list_len ()

size_t              hkl_sample_list_len                 (HklSampleList const *self);

self :

Returns :


hkl_sample_list_get_ith ()

HklSample *         hkl_sample_list_get_ith             (HklSampleList *self,
                                                         size_t idx);

self :

idx :

Returns :


hkl_sample_list_get_by_name ()

HklSample *         hkl_sample_list_get_by_name         (HklSampleList *self,
                                                         char const *name);

self :

name :

Returns :


hkl_sample_list_get_idx_from_name ()

size_t              hkl_sample_list_get_idx_from_name   (HklSampleList *self,
                                                         char const *name);

self :

name :

Returns :


hkl_sample_list_select_current ()

int                 hkl_sample_list_select_current      (HklSampleList *self,
                                                         char const *name);

self :

name :

Returns :


hkl_sample_list_fprintf ()

void                hkl_sample_list_fprintf             (FILE *f,
                                                         HklSampleList const *self);

f :

self :

hkl-4.0.3/Documentation/api/html/hkl-hkl-pseudoaxis-e4cv.html0000644000175000017500000001153511402652637021017 00000000000000 hkl-pseudoaxis-e4cv

hkl-pseudoaxis-e4cv

hkl-pseudoaxis-e4cv

Description

Details

hkl_pseudo_axis_engine_e4cv_hkl_new ()

HklPseudoAxisEngine * hkl_pseudo_axis_engine_e4cv_hkl_new
                                                        (void);

Returns :


hkl_pseudo_axis_engine_e4cv_psi_new ()

HklPseudoAxisEngine * hkl_pseudo_axis_engine_e4cv_psi_new
                                                        (void);

Returns :

hkl-4.0.3/Documentation/api/html/ch01.html0000644000175000017500000001300011402652637015164 00000000000000 [Insert title here] hkl-4.0.3/Documentation/api/html/hkl-hkl-interval.html0000644000175000017500000005754011402652637017626 00000000000000 hkl-interval

hkl-interval

hkl-interval

Synopsis

                    HklInterval;
int                 hkl_interval_cmp                    (HklInterval const *self,
                                                         HklInterval const *interval);
void                hkl_interval_plus_interval          (HklInterval *self,
                                                         HklInterval const *interval);
void                hkl_interval_plus_double            (HklInterval *self,
                                                         double const d);
void                hkl_interval_minus_interval         (HklInterval *self,
                                                         HklInterval const *interval);
void                hkl_interval_minus_double           (HklInterval *self,
                                                         double const d);
void                hkl_interval_times_interval         (HklInterval *self,
                                                         HklInterval const *interval);
void                hkl_interval_times_double           (HklInterval *self,
                                                         double const d);
void                hkl_interval_divides_double         (HklInterval *self,
                                                         double const d);
int                 hkl_interval_contain_zero           (HklInterval const *self);
void                hkl_interval_cos                    (HklInterval *self);
void                hkl_interval_acos                   (HklInterval *self);
void                hkl_interval_sin                    (HklInterval *self);
void                hkl_interval_asin                   (HklInterval *self);
void                hkl_interval_tan                    (HklInterval *self);
void                hkl_interval_atan                   (HklInterval *self);
double              hkl_interval_length                 (HklInterval const *self);
void                hkl_interval_angle_restrict_symm    (HklInterval *self);

Description

Details

HklInterval

typedef struct {
	double min;
	double max;
} HklInterval;


hkl_interval_cmp ()

int                 hkl_interval_cmp                    (HklInterval const *self,
                                                         HklInterval const *interval);

self :

interval :

Returns :


hkl_interval_plus_interval ()

void                hkl_interval_plus_interval          (HklInterval *self,
                                                         HklInterval const *interval);

self :

interval :


hkl_interval_plus_double ()

void                hkl_interval_plus_double            (HklInterval *self,
                                                         double const d);

self :

d :


hkl_interval_minus_interval ()

void                hkl_interval_minus_interval         (HklInterval *self,
                                                         HklInterval const *interval);

self :

interval :


hkl_interval_minus_double ()

void                hkl_interval_minus_double           (HklInterval *self,
                                                         double const d);

self :

d :


hkl_interval_times_interval ()

void                hkl_interval_times_interval         (HklInterval *self,
                                                         HklInterval const *interval);

self :

interval :


hkl_interval_times_double ()

void                hkl_interval_times_double           (HklInterval *self,
                                                         double const d);

self :

d :


hkl_interval_divides_double ()

void                hkl_interval_divides_double         (HklInterval *self,
                                                         double const d);

self :

d :


hkl_interval_contain_zero ()

int                 hkl_interval_contain_zero           (HklInterval const *self);

self :

Returns :


hkl_interval_cos ()

void                hkl_interval_cos                    (HklInterval *self);

self :


hkl_interval_acos ()

void                hkl_interval_acos                   (HklInterval *self);

self :


hkl_interval_sin ()

void                hkl_interval_sin                    (HklInterval *self);

self :


hkl_interval_asin ()

void                hkl_interval_asin                   (HklInterval *self);

self :


hkl_interval_tan ()

void                hkl_interval_tan                    (HklInterval *self);

self :


hkl_interval_atan ()

void                hkl_interval_atan                   (HklInterval *self);

self :


hkl_interval_length ()

double              hkl_interval_length                 (HklInterval const *self);

self :

Returns :


hkl_interval_angle_restrict_symm ()

void                hkl_interval_angle_restrict_symm    (HklInterval *self);

self :

hkl-4.0.3/Documentation/api/html/hkl-hkl-pseudoaxis-common.html0000644000175000017500000001372611402652637021452 00000000000000 hkl-pseudoaxis-common

hkl-pseudoaxis-common

hkl-pseudoaxis-common

Synopsis

int                 hkl_pseudo_axis_engine_init_func    (HklPseudoAxisEngineMode *self,
                                                         HklPseudoAxisEngine *engine,
                                                         HklGeometry *geometry,
                                                         HklDetector const *detector,
                                                         HklSample const *sample);

Description

Details

hkl_pseudo_axis_engine_init_func ()

int                 hkl_pseudo_axis_engine_init_func    (HklPseudoAxisEngineMode *self,
                                                         HklPseudoAxisEngine *engine,
                                                         HklGeometry *geometry,
                                                         HklDetector const *detector,
                                                         HklSample const *sample);

self :

engine :

geometry :

detector :

sample :

Returns :

hkl-4.0.3/Documentation/api/Makefile.am0000644000175000017500000000644711366756371014665 00000000000000## Process this file with automake to produce Makefile.in # We require automake 1.6 at least. AUTOMAKE_OPTIONS = 1.6 # This is a blank Makefile.am for using gtk-doc. # Copy this to your project's API docs directory and modify the variables to # suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples # of using the various options. # The name of the module, e.g. 'glib'. DOC_MODULE=hkl # Uncomment for versioned docs and specify the version of the module, e.g. '2'. DOC_MODULE_VERSION=4 # The top-level SGML file. You can change this if you want to. DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml # The directory containing the source code. Relative to $(srcdir). # gtk-doc will search all .c & .h files beneath here for inline comments # documenting the functions and macros. # e.g. DOC_SOURCE_DIR=../../../gtk DOC_SOURCE_DIR=../../hkl # Extra options to pass to gtkdoc-scangobj. Not normally needed. SCANGOBJ_OPTIONS= # Extra options to supply to gtkdoc-scan. # e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" SCAN_OPTIONS= # Extra options to supply to gtkdoc-mkdb. # e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml MKDB_OPTIONS=--sgml-mode --output-format=xml # Extra options to supply to gtkdoc-mktmpl # e.g. MKTMPL_OPTIONS=--only-section-tmpl MKTMPL_OPTIONS= # Extra options to supply to gtkdoc-mkhtml MKHTML_OPTIONS= # Extra options to supply to gtkdoc-fixref. Not normally needed. # e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html FIXXREF_OPTIONS= # Used for dependencies. The docs will be rebuilt if any of these change. # e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h # e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c HFILE_GLOB=$(top_srcdir)/hkl/*.h CFILE_GLOB=$(top_srcdir)/hkl/*.c # Extra header to include when scanning, which are not under DOC_SOURCE_DIR # e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h EXTRA_HFILES= # Header files to ignore when scanning. Use base file name, no paths # e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h IGNORE_HFILES= # Images to copy into HTML directory. # e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png HTML_IMAGES= # Extra SGML files that are included by $(DOC_MAIN_SGML_FILE). # e.g. content_files=running.sgml building.sgml changes-2.0.sgml content_files= # SGML files where gtk-doc abbrevations (#GtkWidget) are expanded # These files must be listed here *and* in content_files # e.g. expand_content_files=running.sgml expand_content_files= # CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. # Only needed if you are using gtkdoc-scangobj to dynamically query widget # signals and properties. # e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) # e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) GTKDOC_CFLAGS= GTKDOC_LIBS= # This includes the standard gtk-doc make rules, copied by gtkdocize. include $(top_srcdir)/gtk-doc.make # Other files to distribute # e.g. EXTRA_DIST += version.xml.in EXTRA_DIST += # Files not to distribute # for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types # for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt #DISTCLEANFILES += # Comment this out if you want your docs-status tested during 'make check' if ENABLE_GTK_DOC #TESTS_ENVIRONMENT = cd $(srcsrc) && #TESTS = $(GTKDOC_CHECK) endif -include $(top_srcdir)/git.mk hkl-4.0.3/Documentation/api/hkl-sections.txt0000644000175000017500000002100111402652636015742 00000000000000
hkl-pseudoaxis-zaxis hkl_pseudo_axis_engine_zaxis_hkl_new
hkl-pseudoaxis-common-eulerians hkl_pseudo_axis_engine_eulerians_new
hkl-pseudoaxis-e6c hkl_pseudo_axis_engine_e6c_hkl_new hkl_pseudo_axis_engine_e6c_psi_new
hkl-detector HklDetector hkl_detector_new hkl_detector_new_copy hkl_detector_free hkl_detector_attach_to_holder hkl_detector_compute_kf
hkl-interval HklInterval hkl_interval_cmp hkl_interval_plus_interval hkl_interval_plus_double hkl_interval_minus_interval hkl_interval_minus_double hkl_interval_times_interval hkl_interval_times_double hkl_interval_divides_double hkl_interval_contain_zero hkl_interval_cos hkl_interval_acos hkl_interval_sin hkl_interval_asin hkl_interval_tan hkl_interval_atan hkl_interval_length hkl_interval_angle_restrict_symm
hkl-detector-factory hkl_detector_factory_new
hkl-quaternion HklQuaternion hkl_quaternion_init hkl_quaternion_init_from_vector hkl_quaternion_init_from_angle_and_axe hkl_quaternion_fprintf hkl_quaternion_cmp hkl_quaternion_minus_quaternion hkl_quaternion_times_quaternion hkl_quaternion_norm2 hkl_quaternion_conjugate hkl_quaternion_to_matrix hkl_quaternion_to_angle_and_axe
hkl-pseudoaxis-k4cv hkl_pseudo_axis_engine_k4cv_hkl_new hkl_pseudo_axis_engine_k4cv_psi_new
hkl-error HklError hkl_error_new hkl_error_new_literal hkl_error_new_valist hkl_error_free hkl_error_new_copy hkl_error_set hkl_error_set_literal hkl_error_propagate hkl_error_clear hkl_error_prefix hkl_error_propagate_prefixed
hkl-parameter HklParameter hkl_parameter_new hkl_parameter_new_copy hkl_parameter_init hkl_parameter_free hkl_parameter_set_value hkl_parameter_get_value_unit hkl_parameter_set_value_unit hkl_parameter_get_max hkl_parameter_get_range_unit hkl_parameter_set_range hkl_parameter_set_range_unit hkl_parameter_randomize hkl_parameter_is_valid hkl_parameter_fprintf
hkl-pseudoaxis HklPseudoAxis HklPseudoAxisEngineMode HklPseudoAxisEngine HklPseudoAxisEngineList HklPseudoAxisEngineModeFunc HklFunction hkl_pseudo_axis_new hkl_pseudo_axis_init hkl_pseudo_axis_free hkl_pseudo_axis_fprintf hkl_pseudo_axis_engine_mode_new hkl_pseudo_axis_engine_mode_init hkl_pseudo_axis_engine_mode_free hkl_pseudo_axis_engine_new hkl_pseudo_axis_engine_free hkl_pseudo_axis_engine_add_mode hkl_pseudo_axis_engine_add_geometry hkl_pseudo_axis_engine_select_mode hkl_pseudo_axis_engine_initialize hkl_pseudo_axis_engine_set hkl_pseudo_axis_engine_get hkl_pseudo_axis_engine_fprintf hkl_pseudo_axis_engine_list_new hkl_pseudo_axis_engine_list_free hkl_pseudo_axis_engine_list_add hkl_pseudo_axis_engine_list_get_by_name hkl_pseudo_axis_engine_list_get_pseudo_axis_by_name hkl_pseudo_axis_engine_list_clear hkl_pseudo_axis_engine_list_init hkl_pseudo_axis_engine_list_get hkl_pseudo_axis_engine_list_fprintf
hkl-geometry HklHolder HklGeometryConfig HklGeometry HklGeometryList HklGeometryListItem HklGeometryListMultiplyFunction hkl_holder_add_rotation_axis hkl_geometry_new hkl_geometry_new_copy hkl_geometry_free hkl_geometry_init_geometry hkl_geometry_add_holder hkl_geometry_update hkl_geometry_get_axis_by_name hkl_geometry_randomize hkl_geometry_set_values_v hkl_geometry_distance hkl_geometry_distance_orthodromic hkl_geometry_closest_from_geometry_with_range hkl_geometry_is_valid hkl_geometry_fprintf hkl_geometry_list_new hkl_geometry_list_free hkl_geometry_list_add hkl_geometry_list_reset hkl_geometry_list_sort hkl_geometry_list_fprintf hkl_geometry_list_multiply hkl_geometry_list_multiply_from_range hkl_geometry_list_remove_invalid hkl_geometry_list_len hkl_geometry_list_is_empty hkl_geometry_list_item_new hkl_geometry_list_item_free
hkl-geometry-factory hkl_geometry_factory_get_config_from_type hkl_geometry_factory_new
hkl-pseudoaxis-auto hkl_pseudo_axis_engine_mode_set_real
hkl-pseudoaxis-e4cv hkl_pseudo_axis_engine_e4cv_hkl_new hkl_pseudo_axis_engine_e4cv_psi_new
hkl-macros HKL_BEGIN_DECLS HKL_END_DECLS INFINITY M_PI M_PI_2 HKL_MAJOR HKL_MINOR HKL_PATCH HKL_VERSION HKL_TRUE HKL_FALSE HKL_SUCCESS HKL_FAIL HKL_TINY HKL_EPSILON HKL_DEGTORAD HKL_RADTODEG HKL_TAU HKL_EULERIAN_KAPPA_SOLUTION hkl_assert G_GNUC_PRINTF alloc_nr ALLOC_GROW NORETURN hkl_printbt HKL_MALLOC
hkl-pseudoaxis-k6c hkl_pseudo_axis_engine_k6c_hkl_new hkl_pseudo_axis_engine_k6c_psi_new
hkl-source HKL_SOURCE_DEFAULT_WAVE_LENGTH HklSource hkl_source_init hkl_source_cmp hkl_source_compute_ki hkl_source_get_wavelength hkl_source_fprintf
hkl-unit HklUnit hkl_unit_compatible hkl_unit_factor
hkl-pseudoaxis-common-hkl RUBh_minus_Q_func double_diffraction_func psi_constant_vertical_func RUBh_minus_Q double_diffraction hkl_pseudo_axis_engine_mode_get_hkl_real hkl_pseudo_axis_engine_mode_init_psi_constant_vertical_real hkl_pseudo_axis_engine_hkl_new
hkl-matrix HklMatrix hkl_matrix_init hkl_matrix_init_from_two_vector hkl_matrix_init_from_euler hkl_matrix_fprintf hkl_matrix_to_euler hkl_matrix_cmp hkl_matrix_times_matrix hkl_matrix_times_vector hkl_matrix_transpose hkl_matrix_det hkl_matrix_solve hkl_matrix_is_null
hkl-list HKL_LIST_LEN HKL_LIST HKL_LIST_INIT HKL_LIST_ALLOC HKL_LIST_COPY HKL_LIST_FREE HKL_LIST_FREE_DESTRUCTOR HKL_LIST_RESIZE HKL_LIST_ADD_VALUE HKL_LIST_DEL HKL_LIST_DEL_DESTRUCTOR HKL_LIST_DEL_ITEM_DESTRUCTOR
hkl-pseudoaxis-common hkl_pseudo_axis_engine_init_func
hkl-sample HklSample HklSampleReflection HklSampleList HklSampleType hkl_sample_new hkl_sample_new_copy hkl_sample_free hkl_sample_set_name hkl_sample_set_lattice hkl_sample_set_U_from_euler hkl_sample_get_UB hkl_sample_set_UB hkl_sample_add_reflection hkl_sample_get_ith_reflection hkl_sample_del_reflection hkl_sample_compute_UB_busing_levy hkl_sample_affine hkl_sample_get_reflection_mesured_angle hkl_sample_get_reflection_theoretical_angle hkl_sample_fprintf hkl_sample_reflection_set_hkl hkl_sample_reflection_set_flag hkl_sample_reflection_set_geometry hkl_sample_list_new hkl_sample_list_free hkl_sample_list_append hkl_sample_list_clear hkl_sample_list_del hkl_sample_list_len hkl_sample_list_get_ith hkl_sample_list_get_by_name hkl_sample_list_get_idx_from_name hkl_sample_list_select_current hkl_sample_list_fprintf
hkl-axis HklAxis hkl_axis_new hkl_axis_free hkl_axis_init hkl_axis_get_name hkl_axis_get_changed hkl_axis_set_changed hkl_axis_get_value hkl_axis_get_value_unit hkl_axis_get_value_closest hkl_axis_get_value_closest_unit hkl_axis_get_max hkl_axis_get_range_unit hkl_axis_set_value hkl_axis_set_value_smallest_in_range hkl_axis_set_value_unit hkl_axis_set_range hkl_axis_set_range_unit hkl_axis_randomize hkl_axis_get_quaternion hkl_axis_is_value_compatible_with_range hkl_axis_is_valid hkl_axis_fprintf
hkl-pseudoaxis-factory hkl_pseudo_axis_engine_list_factory
hkl-pseudoaxis-common-psi HklPseudoAxisEngineModePsi hkl_pseudo_axis_engine_mode_psi_new hkl_pseudo_axis_engine_psi_new
hkl-pseudoaxis-common-q hkl_pseudo_axis_engine_q_new hkl_pseudo_axis_engine_q2_new
hkl-lattice HklLattice hkl_lattice_new hkl_lattice_new_copy hkl_lattice_new_default hkl_lattice_free hkl_lattice_set hkl_lattice_get_B hkl_lattice_get_1_B hkl_lattice_reciprocal hkl_lattice_randomize hkl_lattice_fprintf
hkl-vector HklMatrix HklQuaternion HklVector hkl_vector_init hkl_vector_fprintf hkl_vector_cmp hkl_vector_is_opposite hkl_vector_add_vector hkl_vector_minus_vector hkl_vector_div_double hkl_vector_times_double hkl_vector_times_vector hkl_vector_times_matrix hkl_vector_sum hkl_vector_scalar_product hkl_vector_vectorial_product hkl_vector_angle hkl_vector_oriented_angle hkl_vector_norm2 hkl_vector_normalize hkl_vector_is_colinear hkl_vector_randomize hkl_vector_randomize_vector hkl_vector_randomize_vector_vector hkl_vector_rotated_around_vector hkl_vector_rotated_quaternion hkl_vector_is_null hkl_vector_project_on_plan
hkl-4.0.3/Documentation/api/tmpl/0000755000175000017500000000000011402652636013640 500000000000000hkl-4.0.3/Documentation/api/tmpl/hkl-pseudoaxis-common-psi.sgml0000644000175000017500000000120511402652636021461 00000000000000 hkl-pseudoaxis-common-psi @parent: @Q0: @hkl0: @name: @axes_names_len: @axes_names: @Returns: @void: @Returns: hkl-4.0.3/Documentation/api/tmpl/hkl-geometry-factory.sgml0000644000175000017500000000101411402652636020514 00000000000000 hkl-geometry-factory @type: @Returns: @config: @Varargs: @Returns: hkl-4.0.3/Documentation/api/tmpl/hkl-pseudoaxis-common-eulerians.sgml0000644000175000017500000000065011402652636022660 00000000000000 hkl-pseudoaxis-common-eulerians @void: @Returns: hkl-4.0.3/Documentation/api/tmpl/hkl-detector-factory.sgml0000644000175000017500000000062111402652636020475 00000000000000 hkl-detector-factory @type: @Returns: hkl-4.0.3/Documentation/api/tmpl/hkl-vector.sgml0000644000175000017500000000540011402652636016521 00000000000000 hkl-vector @data: @data: @data: @self: @x: @y: @z: @file: @self: @self: @vector: @Returns: @self: @vector: @Returns: @self: @vector: @self: @vector: @self: @d: @self: @d: @self: @vector: @self: @m: @self: @Returns: @self: @vector: @Returns: @self: @vector: @self: @vector: @Returns: @self: @vector: @ref: @Returns: @self: @Returns: @self: @Returns: @self: @vector: @Returns: @self: @self: @vector: @self: @vector1: @vector2: @self: @axe: @angle: @self: @qr: @self: @Returns: @self: @plan: hkl-4.0.3/Documentation/api/tmpl/hkl-pseudoaxis-auto.sgml0000644000175000017500000000072111402652636020352 00000000000000 hkl-pseudoaxis-auto @self: @engine: @geometry: @detector: @sample: @error: @Returns: hkl-4.0.3/Documentation/api/tmpl/hkl-list.sgml0000644000175000017500000000235411402652636016177 00000000000000 hkl-list @array: @type: @name: @array: @array: @len: @dst: @src: @array: @array: @destructor: @array: @len: @array: @value: @array: @idx: @array: @idx: @destructor: @array: @item: @destructor: hkl-4.0.3/Documentation/api/tmpl/hkl-geometry.sgml0000644000175000017500000000645411402652636017064 00000000000000 hkl-geometry @geometry: @q: @name: @type: @config: @source: @multiply: @geometry: @self: @idx: @self: @name: @x: @y: @z: @Returns: @void: @Returns: @self: @Returns: @self: @self: @src: @self: @Returns: @self: @self: @name: @Returns: @self: @self: @len: @Varargs: @Returns: @self: @geom: @Returns: @self: @geom: @Returns: @self: @ref: @Returns: @self: @Returns: @file: @self: @void: @Returns: @self: @self: @geometry: @self: @self: @ref: @f: @self: @self: @self: @self: @self: @Returns: @self: @Returns: @geometry: @Returns: @self: hkl-4.0.3/Documentation/api/tmpl/hkl-lattice.sgml0000644000175000017500000000246711402652636016656 00000000000000 hkl-lattice @a: @b: @c: @alpha: @beta: @gamma: @a: @b: @c: @alpha: @beta: @gamma: @Returns: @self: @Returns: @void: @Returns: @self: @self: @a: @b: @c: @alpha: @beta: @gamma: @Returns: @self: @B: @Returns: @self: @B: @Returns: @self: @r: @Returns: @self: @f: @self: hkl-4.0.3/Documentation/api/tmpl/hkl-interval.sgml0000644000175000017500000000344711402652636017054 00000000000000 hkl-interval @min: @max: @self: @interval: @Returns: @self: @interval: @self: @d: @self: @interval: @self: @d: @self: @interval: @self: @d: @self: @d: @self: @Returns: @self: @self: @self: @self: @self: @self: @self: @Returns: @self: hkl-4.0.3/Documentation/api/tmpl/hkl-pseudoaxis-k4cv.sgml0000644000175000017500000000100311402652636020243 00000000000000 hkl-pseudoaxis-k4cv @void: @Returns: @void: @Returns: hkl-4.0.3/Documentation/api/tmpl/hkl-pseudoaxis-common.sgml0000644000175000017500000000070611402652636020675 00000000000000 hkl-pseudoaxis-common @self: @engine: @geometry: @detector: @sample: @Returns: hkl-4.0.3/Documentation/api/tmpl/hkl-pseudoaxis-common-hkl.sgml0000644000175000017500000000235011402652636021446 00000000000000 hkl-pseudoaxis-common-hkl @x: @params: @f: @Returns: @x: @params: @f: @Returns: @x: @params: @f: @Returns: @x: @params: @f: @Returns: @x: @params: @f: @Returns: @self: @engine: @geometry: @detector: @sample: @error: @Returns: @base: @engine: @geometry: @detector: @sample: @error: @Returns: @void: @Returns: hkl-4.0.3/Documentation/api/tmpl/hkl-quaternion.sgml0000644000175000017500000000257011402652636017411 00000000000000 hkl-quaternion @data: @self: @a: @b: @c: @d: @self: @v: @self: @angle: @v: @file: @self: @self: @q: @Returns: @self: @q: @self: @q: @self: @Returns: @self: @self: @m: @self: @angle: @v: hkl-4.0.3/Documentation/api/tmpl/hkl-unused.sgml0000644000175000017500000000063111402652636016523 00000000000000 @err: @self: @name: @Returns: @const char *err, va_list params: @err: @Varargs: hkl-4.0.3/Documentation/api/tmpl/hkl-error.sgml0000644000175000017500000000251311402652636016352 00000000000000 hkl-error @message: @format: @Varargs: @Returns: @message: @Returns: @format: @args: @Returns: @error: @error: @Returns: @err: @format: @Varargs: @err: @message: @dest: @src: @err: @err: @format: @Varargs: @dest: @src: @format: @Varargs: hkl-4.0.3/Documentation/api/tmpl/hkl-pseudoaxis-e6c.sgml0000644000175000017500000000100011402652636020046 00000000000000 hkl-pseudoaxis-e6c @void: @Returns: @void: @Returns: hkl-4.0.3/Documentation/api/tmpl/hkl-detector.sgml0000644000175000017500000000147011402652636017033 00000000000000 hkl-detector @idx: @holder: @void: @Returns: @src: @Returns: @self: @self: @holder: @self: @g: @kf: @Returns: hkl-4.0.3/Documentation/api/tmpl/hkl-pseudoaxis-zaxis.sgml0000644000175000017500000000063511402652636020544 00000000000000 hkl-pseudoaxis-zaxis @void: @Returns: hkl-4.0.3/Documentation/api/tmpl/hkl-matrix.sgml0000644000175000017500000000275111402652636016531 00000000000000 hkl-matrix @data: @self: @m11: @m12: @m13: @m21: @m22: @m23: @m31: @m32: @m33: @self: @v1: @v2: @self: @euler_x: @euler_y: @euler_z: @file: @self: @self: @euler_x: @euler_y: @euler_z: @self: @m: @Returns: @self: @m: @self: @v: @self: @self: @Returns: @self: @x: @b: @Returns: @self: @Returns: hkl-4.0.3/Documentation/api/tmpl/hkl-sample.sgml0000644000175000017500000000707311402652636016510 00000000000000 hkl-sample @name: @type: @lattice: @U: @UB: @ux: @uy: @uz: @geometry: @detector: @hkl: @_hkl: @flag: @current: @HKL_SAMPLE_TYPE_MONOCRYSTAL: @name: @type: @Returns: @self: @Returns: @self: @self: @name: @self: @a: @b: @c: @alpha: @beta: @gamma: @Returns: @self: @x: @y: @z: @Returns: @self: @UB: @self: @UB: @Returns: @self: @geometry: @detector: @h: @k: @l: @Returns: @self: @idx: @Returns: @self: @idx: @Returns: @self: @idx1: @idx2: @Returns: @sample: @Returns: @self: @idx1: @idx2: @Returns: @self: @idx1: @idx2: @Returns: @f: @self: @self: @h: @k: @l: @self: @flag: @self: @geometry: @void: @Returns: @self: @self: @sample: @Returns: @self: @self: @sample: @self: @Returns: @self: @idx: @Returns: @self: @name: @Returns: @self: @name: @Returns: @self: @name: @Returns: @f: @self: hkl-4.0.3/Documentation/api/tmpl/hkl-pseudoaxis.sgml0000644000175000017500000000716311402652636017413 00000000000000 hkl-pseudoaxis @parent: @engine: @name: @initialize: @get: @set: @geometry_init: @detector_init: @sample_init: @name: @geometry: @detector: @sample: @mode: @engines: @geometries: @geometry: @detector: @sample: @self: @engine: @geometry: @detector: @sample: @error: @Returns: @x: @params: @f: @Returns: @parameter: @engine: @Returns: @self: @parameter: @engine: @self: @f: @self: @name: @initialize: @get: @set: @n: @Varargs: @Returns: @self: @name: @initialize: @get: @set: @n_func: @functions: @n_p: @parameters: @n_axes: @axes_names: @Returns: @self: @name: @n: @Varargs: @Returns: @self: @self: @mode: @self: @x: @self: @idx: @self: @error: @Returns: @self: @error: @Returns: @self: @error: @Returns: @f: @self: @void: @Returns: @self: @self: @engine: @Returns: @self: @name: @Returns: @self: @name: @Returns: @self: @self: @geometry: @detector: @sample: @self: @Returns: @f: @self: hkl-4.0.3/Documentation/api/tmpl/hkl-pseudoaxis-e4cv.sgml0000644000175000017500000000100311402652636020235 00000000000000 hkl-pseudoaxis-e4cv @void: @Returns: @void: @Returns: hkl-4.0.3/Documentation/api/tmpl/hkl-pseudoaxis-k6c.sgml0000644000175000017500000000100011402652636020054 00000000000000 hkl-pseudoaxis-k6c @void: @Returns: @void: @Returns: hkl-4.0.3/Documentation/api/tmpl/hkl-pseudoaxis-common-q.sgml0000644000175000017500000000077211402652636021136 00000000000000 hkl-pseudoaxis-common-q @void: @Returns: @void: @Returns: hkl-4.0.3/Documentation/api/tmpl/hkl-pseudoaxis-factory.sgml0000644000175000017500000000064011402652636021051 00000000000000 hkl-pseudoaxis-factory @config: @Returns: hkl-4.0.3/Documentation/api/tmpl/hkl-parameter.sgml0000644000175000017500000000343311402652636017203 00000000000000 hkl-parameter @name: @range: @value: @unit: @punit: @fit: @changed: @name: @min: @value: @max: @fit: @changed: @unit: @punit: @Returns: @self: @Returns: @self: @name: @min: @value: @max: @fit: @changed: @unit: @punit: @Returns: @self: @self: @value: @self: @Returns: @self: @value: @Returns: @self: @Returns: @self: @min: @max: @self: @min: @max: @self: @min: @max: @self: @self: @Returns: @f: @self: hkl-4.0.3/Documentation/api/tmpl/hkl-source.sgml0000644000175000017500000000163111402652636016521 00000000000000 hkl-source @wave_length: @direction: @self: @wave_length: @x: @y: @z: @Returns: @self: @s: @Returns: @self: @ki: @self: @Returns: @f: @self: hkl-4.0.3/Documentation/api/tmpl/hkl-unit.sgml0000644000175000017500000000106211402652636016176 00000000000000 hkl-unit @type: @name: @repr: @self: @unit: @Returns: @self: @unit: @Returns: hkl-4.0.3/Documentation/api/tmpl/hkl-macros.sgml0000644000175000017500000000350511402652636016507 00000000000000 hkl-macros @x: @format_idx: @arg_idx: @x: @x: @nr: @alloc: @void: @type: hkl-4.0.3/Documentation/api/tmpl/hkl-axis.sgml0000644000175000017500000000446611402652636016176 00000000000000 hkl-axis @parent_instance: @axis_v: @q: @name: @axis_v: @Returns: @self: @axis: @name: @axis_v: @self: @Returns: @self: @Returns: @self: @changed: @self: @Returns: @self: @Returns: @self: @axis: @Returns: @self: @axis: @Returns: @self: @Returns: @self: @min: @max: @self: @value: @self: @self: @value: @self: @min: @max: @self: @min: @max: @self: @self: @q: @self: @Returns: @self: @Returns: @f: @self: hkl-4.0.3/Documentation/api/hkl.types0000644000175000017500000000000011402652636014436 00000000000000hkl-4.0.3/Documentation/api/Makefile.in0000644000175000017500000005105111402652623014647 00000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- mode: makefile -*- #################################### # Everything below here is generic # #################################### VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/gtk-doc.make subdir = Documentation/api ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ GSL_CFLAGS = @GSL_CFLAGS@ GSL_CONFIG = @GSL_CONFIG@ GSL_LIBS = @GSL_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTKMM_CFLAGS = @GTKMM_CFLAGS@ GTKMM_LIBS = @GTKMM_LIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # We require automake 1.6 at least. AUTOMAKE_OPTIONS = 1.6 # This is a blank Makefile.am for using gtk-doc. # Copy this to your project's API docs directory and modify the variables to # suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples # of using the various options. # The name of the module, e.g. 'glib'. DOC_MODULE = hkl # Uncomment for versioned docs and specify the version of the module, e.g. '2'. DOC_MODULE_VERSION = 4 # The top-level SGML file. You can change this if you want to. DOC_MAIN_SGML_FILE = $(DOC_MODULE)-docs.sgml # The directory containing the source code. Relative to $(srcdir). # gtk-doc will search all .c & .h files beneath here for inline comments # documenting the functions and macros. # e.g. DOC_SOURCE_DIR=../../../gtk DOC_SOURCE_DIR = ../../hkl # Extra options to pass to gtkdoc-scangobj. Not normally needed. SCANGOBJ_OPTIONS = # Extra options to supply to gtkdoc-scan. # e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" SCAN_OPTIONS = # Extra options to supply to gtkdoc-mkdb. # e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml MKDB_OPTIONS = --sgml-mode --output-format=xml # Extra options to supply to gtkdoc-mktmpl # e.g. MKTMPL_OPTIONS=--only-section-tmpl MKTMPL_OPTIONS = # Extra options to supply to gtkdoc-mkhtml MKHTML_OPTIONS = # Extra options to supply to gtkdoc-fixref. Not normally needed. # e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html FIXXREF_OPTIONS = # Used for dependencies. The docs will be rebuilt if any of these change. # e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h # e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c HFILE_GLOB = $(top_srcdir)/hkl/*.h CFILE_GLOB = $(top_srcdir)/hkl/*.c # Extra header to include when scanning, which are not under DOC_SOURCE_DIR # e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h EXTRA_HFILES = # Header files to ignore when scanning. Use base file name, no paths # e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h IGNORE_HFILES = # Images to copy into HTML directory. # e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png HTML_IMAGES = # Extra SGML files that are included by $(DOC_MAIN_SGML_FILE). # e.g. content_files=running.sgml building.sgml changes-2.0.sgml content_files = # SGML files where gtk-doc abbrevations (#GtkWidget) are expanded # These files must be listed here *and* in content_files # e.g. expand_content_files=running.sgml expand_content_files = # CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. # Only needed if you are using gtkdoc-scangobj to dynamically query widget # signals and properties. # e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) # e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) GTKDOC_CFLAGS = GTKDOC_LIBS = @GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_CC = $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_LD = $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) @GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) @GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_RUN = @GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_RUN = $(LIBTOOL) --mode=execute # We set GPATH here; this gives us semantics for GNU make # which are more like other make's VPATH, when it comes to # whether a source that is a target of one rule is then # searched for in VPATH/GPATH. # GPATH = $(srcdir) TARGET_DIR = $(HTML_DIR)/$(DOC_MODULE) # This includes the standard gtk-doc make rules, copied by gtkdocize. # Other files to distribute # e.g. EXTRA_DIST += version.xml.in EXTRA_DIST = $(content_files) $(HTML_IMAGES) $(DOC_MAIN_SGML_FILE) \ $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt DOC_STAMPS = scan-build.stamp tmpl-build.stamp sgml-build.stamp html-build.stamp \ pdf-build.stamp \ $(srcdir)/tmpl.stamp $(srcdir)/sgml.stamp $(srcdir)/html.stamp \ $(srcdir)/pdf.stamp SCANOBJ_FILES = \ $(DOC_MODULE).args \ $(DOC_MODULE).hierarchy \ $(DOC_MODULE).interfaces \ $(DOC_MODULE).prerequisites \ $(DOC_MODULE).signals REPORT_FILES = \ $(DOC_MODULE)-undocumented.txt \ $(DOC_MODULE)-undeclared.txt \ $(DOC_MODULE)-unused.txt CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) @ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_HTML_FALSE@HTML_BUILD_STAMP = @ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_HTML_TRUE@HTML_BUILD_STAMP = html-build.stamp @ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_PDF_FALSE@PDF_BUILD_STAMP = @ENABLE_GTK_DOC_TRUE@@GTK_DOC_BUILD_PDF_TRUE@PDF_BUILD_STAMP = pdf-build.stamp all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(top_srcdir)/gtk-doc.make $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Documentation/api/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Documentation/api/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook check-am: all-am check: check-am all-am: Makefile all-local installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-local dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-data-local install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic \ maintainer-clean-local mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-local .MAKE: install-am install-strip .PHONY: all all-am all-local check check-am clean clean-generic \ clean-libtool clean-local dist-hook distclean \ distclean-generic distclean-libtool distclean-local distdir \ dvi dvi-am html html-am info info-am install install-am \ install-data install-data-am install-data-local install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic \ maintainer-clean-local mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-local @ENABLE_GTK_DOC_TRUE@all-local: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) @ENABLE_GTK_DOC_FALSE@all-local: docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) $(REPORT_FILES): sgml-build.stamp #### scan #### scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB) @echo 'gtk-doc: Scanning header files' @-chmod -R u+w $(srcdir) @_source_dir='' ; for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ cd $(srcdir) && \ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) @if grep -l '^..*$$' $(srcdir)/$(DOC_MODULE).types > /dev/null 2>&1 ; then \ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" gtkdoc-scangobj $(SCANGOBJ_OPTIONS) --module=$(DOC_MODULE) --output-dir=$(srcdir) ; \ else \ cd $(srcdir) ; \ for i in $(SCANOBJ_FILES) ; do \ test -f $$i || touch $$i ; \ done \ fi @touch scan-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp @true #### templates #### tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt @echo 'gtk-doc: Rebuilding template files' @-chmod -R u+w $(srcdir) @cd $(srcdir) && gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS) @touch tmpl-build.stamp tmpl.stamp: tmpl-build.stamp @true $(srcdir)/tmpl/*.sgml: @true #### xml #### sgml-build.stamp: tmpl.stamp $(DOC_MODULE)-sections.txt $(srcdir)/tmpl/*.sgml $(expand_content_files) @echo 'gtk-doc: Building XML' @-chmod -R u+w $(srcdir) @_source_dir='' ; for i in $(DOC_SOURCE_DIR) ; do \ _source_dir="$${_source_dir} --source-dir=$$i" ; \ done ; \ cd $(srcdir) && \ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) @touch sgml-build.stamp sgml.stamp: sgml-build.stamp @true #### html #### html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) @echo 'gtk-doc: Building HTML' @-chmod -R u+w $(srcdir) @rm -rf $(srcdir)/html @mkdir $(srcdir)/html @mkhtml_options=""; \ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \ if test "$(?)" = "0"; then \ mkhtml_options=--path="$(srcdir)"; \ fi; \ cd $(srcdir)/html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) @test "x$(HTML_IMAGES)" = "x" || ( cd $(srcdir) && cp $(HTML_IMAGES) html ) @echo 'gtk-doc: Fixing cross-references' @cd $(srcdir) && gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) @touch html-build.stamp #### pdf #### pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) @echo 'gtk-doc: Building PDF' @-chmod -R u+w $(srcdir) @rm -rf $(srcdir)/$(DOC_MODULE).pdf @mkpdf_imgdirs=""; \ if test "x$(HTML_IMAGES)" != "x"; then \ for img in $(HTML_IMAGES); do \ part=`dirname $$img`; \ echo $$mkpdf_imgdirs | grep >/dev/null "\-\-imgdir=$$part "; \ if test $$? != 0; then \ mkpdf_imgdirs="$$mkpdf_imgdirs --imgdir=$$part"; \ fi; \ done; \ fi; \ cd $(srcdir) && gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_imgdirs $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS) @touch pdf-build.stamp ############## clean-local: rm -f *~ *.bak rm -rf .libs distclean-local: cd $(srcdir) && \ rm -rf xml $(REPORT_FILES) $(DOC_MODULE).pdf \ $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt maintainer-clean-local: clean cd $(srcdir) && rm -rf xml html install-data-local: @installfiles=`echo $(srcdir)/html/*`; \ if test "$$installfiles" = '$(srcdir)/html/*'; \ then echo '-- Nothing to install' ; \ else \ if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ $(mkinstalldirs) $${installdir} ; \ for i in $$installfiles; do \ echo '-- Installing '$$i ; \ $(INSTALL_DATA) $$i $${installdir}; \ done; \ if test -n "$(DOC_MODULE_VERSION)"; then \ mv -f $${installdir}/$(DOC_MODULE).devhelp2 \ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \ mv -f $${installdir}/$(DOC_MODULE).devhelp \ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp; \ fi; \ $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \ fi uninstall-local: @if test -n "$(DOC_MODULE_VERSION)"; then \ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ else \ installdir="$(DESTDIR)$(TARGET_DIR)"; \ fi; \ rm -rf $${installdir} # # Require gtk-doc when making dist # @ENABLE_GTK_DOC_TRUE@dist-check-gtkdoc: @ENABLE_GTK_DOC_FALSE@dist-check-gtkdoc: @ENABLE_GTK_DOC_FALSE@ @echo "*** gtk-doc must be installed and enabled in order to make dist" @ENABLE_GTK_DOC_FALSE@ @false dist-hook: dist-check-gtkdoc dist-hook-local mkdir $(distdir)/tmpl mkdir $(distdir)/html -cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl cp $(srcdir)/html/* $(distdir)/html -cp $(srcdir)/$(DOC_MODULE).pdf $(distdir)/ -cp $(srcdir)/$(DOC_MODULE).types $(distdir)/ -cp $(srcdir)/$(DOC_MODULE)-sections.txt $(distdir)/ cd $(distdir) && rm -f $(DISTCLEANFILES) $(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html .PHONY : dist-hook-local docs # Files not to distribute # for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types # for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt #DISTCLEANFILES += # Comment this out if you want your docs-status tested during 'make check' #TESTS_ENVIRONMENT = cd $(srcsrc) && #TESTS = $(GTKDOC_CHECK) -include $(top_srcdir)/git.mk # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: hkl-4.0.3/Documentation/Makefile.in0000644000175000017500000007423011402652623014102 00000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Documentation DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/stamp-vti \ $(srcdir)/version.texi ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = INFO_DEPS = $(srcdir)/hkl.info TEXINFO_TEX = $(top_srcdir)/config/texinfo.tex am__TEXINFO_TEX_DIR = $(top_srcdir)/config DVIS = hkl.dvi PDFS = hkl.pdf PSS = hkl.ps HTMLS = hkl.html TEXINFOS = hkl.texi TEXI2DVI = texi2dvi TEXI2PDF = $(TEXI2DVI) --pdf --batch MAKEINFOHTML = $(MAKEINFO) --html AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) DVIPS = dvips RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__installdirs = "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' man1dir = $(mandir)/man1 NROFF = nroff MANS = $(dist_man_MANS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ GSL_CFLAGS = @GSL_CFLAGS@ GSL_CONFIG = @GSL_CONFIG@ GSL_LIBS = @GSL_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTKMM_CFLAGS = @GTKMM_CFLAGS@ GTKMM_LIBS = @GTKMM_LIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = api info_TEXINFOS = hkl.texi dist_man_MANS = ghkl.1 all: all-recursive .SUFFIXES: .SUFFIXES: .dvi .html .info .pdf .ps .texi $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Documentation/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Documentation/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs .texi.info: restore=: && backupdir="$(am__leading_dot)am$$$$" && \ am__cwd=`pwd` && $(am__cd) $(srcdir) && \ rm -rf $$backupdir && mkdir $$backupdir && \ if ($(MAKEINFO) --version) >/dev/null 2>&1; then \ for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \ if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \ done; \ else :; fi && \ cd "$$am__cwd"; \ if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ -o $@ $<; \ then \ rc=0; \ $(am__cd) $(srcdir); \ else \ rc=$$?; \ $(am__cd) $(srcdir) && \ $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \ fi; \ rm -rf $$backupdir; exit $$rc .texi.dvi: TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ $(TEXI2DVI) $< .texi.pdf: TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ $(TEXI2PDF) $< .texi.html: rm -rf $(@:.html=.htp) if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ -o $(@:.html=.htp) $<; \ then \ rm -rf $@; \ if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \ else \ if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \ exit 1; \ fi $(srcdir)/hkl.info: hkl.texi $(srcdir)/version.texi hkl.dvi: hkl.texi $(srcdir)/version.texi hkl.pdf: hkl.texi $(srcdir)/version.texi hkl.html: hkl.texi $(srcdir)/version.texi $(srcdir)/version.texi: $(srcdir)/stamp-vti $(srcdir)/stamp-vti: hkl.texi $(top_srcdir)/configure @(dir=.; test -f ./hkl.texi || dir=$(srcdir); \ set `$(SHELL) $(top_srcdir)/config/mdate-sh $$dir/hkl.texi`; \ echo "@set UPDATED $$1 $$2 $$3"; \ echo "@set UPDATED-MONTH $$2 $$3"; \ echo "@set EDITION $(VERSION)"; \ echo "@set VERSION $(VERSION)") > vti.tmp @cmp -s vti.tmp $(srcdir)/version.texi \ || (echo "Updating $(srcdir)/version.texi"; \ cp vti.tmp $(srcdir)/version.texi) -@rm -f vti.tmp @cp $(srcdir)/version.texi $@ mostlyclean-vti: -rm -f vti.tmp maintainer-clean-vti: -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi .dvi.ps: TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ $(DVIPS) -o $@ $< uninstall-dvi-am: @$(NORMAL_UNINSTALL) @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \ rm -f "$(DESTDIR)$(dvidir)/$$f"; \ done uninstall-html-am: @$(NORMAL_UNINSTALL) @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \ rm -rf "$(DESTDIR)$(htmldir)/$$f"; \ done uninstall-info-am: @$(PRE_UNINSTALL) @if test -d '$(DESTDIR)$(infodir)' && \ (install-info --version && \ install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \ list='$(INFO_DEPS)'; \ for file in $$list; do \ relfile=`echo "$$file" | sed 's|^.*/||'`; \ echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \ if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \ then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \ done; \ else :; fi @$(NORMAL_UNINSTALL) @list='$(INFO_DEPS)'; \ for file in $$list; do \ relfile=`echo "$$file" | sed 's|^.*/||'`; \ relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \ (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \ echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \ rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \ else :; fi); \ done uninstall-pdf-am: @$(NORMAL_UNINSTALL) @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \ rm -f "$(DESTDIR)$(pdfdir)/$$f"; \ done uninstall-ps-am: @$(NORMAL_UNINSTALL) @list='$(PSS)'; test -n "$(psdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \ rm -f "$(DESTDIR)$(psdir)/$$f"; \ done dist-info: $(INFO_DEPS) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ list='$(INFO_DEPS)'; \ for base in $$list; do \ case $$base in \ $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \ esac; \ if test -f $$base; then d=.; else d=$(srcdir); fi; \ base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \ for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \ if test -f $$file; then \ relfile=`expr "$$file" : "$$d/\(.*\)"`; \ test -f "$(distdir)/$$relfile" || \ cp -p $$file "$(distdir)/$$relfile"; \ else :; fi; \ done; \ done mostlyclean-aminfo: -rm -rf hkl.aux hkl.cp hkl.cps hkl.fn hkl.fns hkl.ky hkl.kys hkl.log hkl.pg \ hkl.tmp hkl.toc hkl.tp hkl.tps hkl.vr hkl.vrs clean-aminfo: -test -z "hkl.dvi hkl.pdf hkl.ps hkl.html" \ || rm -rf hkl.dvi hkl.pdf hkl.ps hkl.html maintainer-clean-aminfo: @list='$(INFO_DEPS)'; for i in $$list; do \ i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \ echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \ rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \ done install-man1: $(dist_man_MANS) @$(NORMAL_INSTALL) test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)" @list=''; test -n "$(man1dir)" || exit 0; \ { for i in $$list; do echo "$$i"; done; \ l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ test -z "$$files" || { \ echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(man1dir)" && rm -f $$files; } # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @list='$(MANS)'; if test -n "$$list"; then \ list=`for p in $$list; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ if test -n "$$list" && \ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ echo " typically \`make maintainer-clean' will remove them" >&2; \ exit 1; \ else :; fi; \ else :; fi @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-info check-am: all-am check: check-recursive all-am: Makefile $(INFO_DEPS) $(MANS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-aminfo clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: $(DVIS) html: html-recursive html-am: $(HTMLS) info: info-recursive info-am: $(INFO_DEPS) install-data-am: install-info-am install-man install-dvi: install-dvi-recursive install-dvi-am: $(DVIS) @$(NORMAL_INSTALL) test -z "$(dvidir)" || $(MKDIR_P) "$(DESTDIR)$(dvidir)" @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \ done install-exec-am: install-html: install-html-recursive install-html-am: $(HTMLS) @$(NORMAL_INSTALL) test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)" @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \ for p in $$list; do \ if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \ $(am__strip_dir) \ if test -d "$$d$$p"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \ $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \ echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \ $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \ else \ list2="$$list2 $$d$$p"; \ fi; \ done; \ test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \ done; } install-info: install-info-recursive install-info-am: $(INFO_DEPS) @$(NORMAL_INSTALL) test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)" @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ esac; \ if test -f $$file; then d=.; else d=$(srcdir); fi; \ file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \ for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \ $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \ if test -f $$ifile; then \ echo "$$ifile"; \ else : ; fi; \ done; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done @$(POST_INSTALL) @if (install-info --version && \ install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \ list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ for file in $$list; do \ relfile=`echo "$$file" | sed 's|^.*/||'`; \ echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\ install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\ done; \ else : ; fi install-man: install-man1 install-pdf: install-pdf-recursive install-pdf-am: $(PDFS) @$(NORMAL_INSTALL) test -z "$(pdfdir)" || $(MKDIR_P) "$(DESTDIR)$(pdfdir)" @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done install-ps: install-ps-recursive install-ps-am: $(PSS) @$(NORMAL_INSTALL) test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)" @list='$(PSS)'; test -n "$(psdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-vti mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-aminfo mostlyclean-generic \ mostlyclean-libtool mostlyclean-vti pdf: pdf-recursive pdf-am: $(PDFS) ps: ps-recursive ps-am: $(PSS) uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \ uninstall-man uninstall-pdf-am uninstall-ps-am uninstall-man: uninstall-man1 .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-aminfo clean-generic \ clean-libtool ctags ctags-recursive dist-info distclean \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-man1 \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-vti mostlyclean \ mostlyclean-aminfo mostlyclean-generic mostlyclean-libtool \ mostlyclean-vti pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am uninstall-dvi-am uninstall-html-am \ uninstall-info-am uninstall-man uninstall-man1 \ uninstall-pdf-am uninstall-ps-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: hkl-4.0.3/AUTHORS0000644000175000017500000000022711366756371010305 00000000000000Picca Frédéric-Emmanuel Maria-Teresa Nunez-Pardo-de-Verra Jens Krüger hkl-4.0.3/ChangeLog0000644000175000017500000270155311402652654011011 00000000000000# Generated by Makefile. Do not edit. commit 338f69cdf5a4fb7612bce359a459d421d50d6bbe Author: Picca Frédéric-Emmanuel Date: Sun Jun 6 09:50:51 2010 +0200 update also the pom.xml file hkl/pom.xml | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit ebf1bfba4694543337489551d85d4843bc515f25 Author: Picca Frédéric-Emmanuel Date: Sun Jun 6 09:45:08 2010 +0200 * update the NEWS and prepare for release NEWS | 5 +++++ configure.ac | 2 +- 2 files changed, 6 insertions(+), 1 deletions(-) commit fc66cc69da79c4adc47dddf8a9860191aa7c769d Author: Picca Frédéric-Emmanuel Date: Sun Jun 6 09:35:55 2010 +0200 * update the documentation Documentation/api/hkl-sections.txt | 19 ++++++++++++------- 1 files changed, 12 insertions(+), 7 deletions(-) commit f0cba10fae45742b6ba717eee2c6d43014705a08 Author: Picca Frédéric-Emmanuel Date: Sat Jun 5 19:37:55 2010 +0200 * remove all clang warnings hkl/hkl-error.c | 2 +- hkl/hkl-lattice.c | 2 +- hkl/hkl-sample.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) commit 5b3661b44d0c20a7108640f327b7e3580d9ee7e9 Author: Picca Frédéric-Emmanuel Date: Sun Jun 6 09:08:00 2010 +0200 * remove all git code to avoid a GPL2 GPL3+ incompatibility hkl/Makefile.am | 4 +- hkl/hkl-geometry.c | 8 ++- hkl/hkl-macros.c | 54 +++++++++++++++++++ hkl/hkl-macros.h | 9 --- hkl/hkl-pseudoaxis-common-psi.c | 6 ++- hkl/usage.c | 110 --------------------------------------- test/hkl-test.c | 6 ++- 7 files changed, 69 insertions(+), 128 deletions(-) commit 1c7c172fb9fc51e5d7e5dfb3995a0a80fa5ee51d Author: Frédéric-Emmanuel PICCA Date: Wed Jun 2 15:27:53 2010 +0200 * Fix source and include directories hkl/pom.xml | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit 41604e0e53c52633356d1cd1c8af15f27e8d136c Author: Frédéric-Emmanuel PICCA Date: Wed Jun 2 15:21:20 2010 +0200 * update the pom.xml hkl/pom.xml | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit edf72c24cfb39741754af6fcb2f2a34f162c8611 Author: Frédéric-Emmanuel PICCA Date: Wed Jun 2 15:18:07 2010 +0200 * move the hkl.h file to be SOLEIL hudson friendly ;) Makefile.am | 2 ++ hkl.h | 7 +++++++ hkl/Makefile.am | 3 --- hkl/hkl.h | 7 ------- 4 files changed, 9 insertions(+), 10 deletions(-) commit 4cd1fc24832c7270c567334d0d83262b4e255e8e Author: Frédéric-Emmanuel PICCA Date: Wed Jun 2 11:07:16 2010 +0200 * add the pom.xml for soleil compilation hkl/pom.xml | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 70 insertions(+), 0 deletions(-) commit 8e2e695803843ed43acf9026571b9386e92ec8a9 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 1 15:08:05 2010 +0200 * forgot to distribut the file ;) gui/Makefile.am | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit ccd7c82b1a5ad0b8caa74450d17fd321660fa04c Author: Frédéric-Emmanuel PICCA Date: Tue Jun 1 15:00:04 2010 +0200 * install the .desktop file at the right place. NEWS | 4 ++++ gui/Makefile.am | 5 ++++- 2 files changed, 8 insertions(+), 1 deletions(-) commit 810ec16c0745f0777821dd010c505fa125e2ba01 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 1 14:22:48 2010 +0200 * add the ghkl man page and the .desktop file. Documentation/Makefile.am | 2 + Documentation/ghkl.1 | 53 +++++++++++++++++++++++++++++++++++++++++++++ gui/Makefile.am | 2 +- gui/ghkl.desktop | 10 ++++++++ 4 files changed, 66 insertions(+), 1 deletions(-) commit 4702e6053fc4f26e6ec65726c1998518524ae3b2 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 1 14:21:08 2010 +0200 * connect the quit menu item with the gtk_main_quit method gui/ghkl.cpp | 3 +++ gui/ghkl.h | 1 + 2 files changed, 4 insertions(+), 0 deletions(-) commit 524477c58f7e69b54b9b57a7d5691bf83ce59ec7 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 1 14:20:32 2010 +0200 * post release revision number bump configure.ac | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit af18474e605e5b49db3ad71071d96ebabadd9402 Author: Frédéric-Emmanuel PICCA Date: Mon May 10 16:11:26 2010 +0200 * show the preference dialogue from the begining. NEWS | 1 + gui/ghkl.ui | 1 + 2 files changed, 2 insertions(+), 0 deletions(-) commit fdfdb36e63f1c1cd646f613f68d1f395b3ad5e22 Author: Frédéric-Emmanuel PICCA Date: Mon May 10 13:31:32 2010 +0200 * add the --enable-ghkl flag to the configure script. Makefile.am | 6 +++++- NEWS | 5 +++++ configure.ac | 14 +++++++++++++- 3 files changed, 23 insertions(+), 2 deletions(-) commit b3ed054335cb856f9a086c18ac46c99c5f6603c1 Author: Frédéric-Emmanuel PICCA Date: Mon May 10 11:50:11 2010 +0200 * add the gsl dependencies to the ghkl program. gui/Makefile.am | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 6568016fe9a6d0f9b283411222133ee3284c797b Author: Frédéric-Emmanuel PICCA Date: Mon May 10 11:49:45 2010 +0200 * bump the version configure.ac | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit a34b077e576f72c3e895e2f53c58368e26bd3c6d Author: Frédéric-Emmanuel PICCA Date: Mon May 10 11:46:17 2010 +0200 * fix the ghkl .ui load exception. gui/ghkl.cpp | 4 +++- gui/pseudoaxesframe.cpp | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) commit ab3ed9088ce3346ddc271f221406017bd03404cf Author: Frédéric-Emmanuel PICCA Date: Wed Apr 14 14:18:15 2010 +0200 * prepare for release NEWS | 7 ++++--- configure.ac | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) commit 7cefeb6687df94811555a5506955b9ce6fb61096 Author: Picca Frédéric-Emmanuel Date: Mon Apr 5 14:33:55 2010 +0200 * switch to c89 instead of c99 to ease compilation on windows. also use alloca instead of variable length arrays configure.ac | 10 ++-- hkl/Makefile.am | 4 +- hkl/hkl-axis.c | 4 +- hkl/hkl-axis.h | 2 +- hkl/hkl-detector-factory.h | 2 +- hkl/hkl-detector.c | 4 +- hkl/hkl-geometry.c | 57 ++++++++++-------- hkl/hkl-geometry.h | 2 +- hkl/hkl-lattice.c | 52 +++++++++-------- hkl/hkl-macros.h | 19 +++--- hkl/hkl-pseudoaxis-auto.c | 42 ++++++++------ hkl/hkl-pseudoaxis-common-eulerians.c | 8 +- hkl/hkl-pseudoaxis-common-hkl.c | 62 ++++++++++---------- hkl/hkl-pseudoaxis-common-psi.c | 69 +++++++++++----------- hkl/hkl-pseudoaxis-common-q.c | 20 +++--- hkl/hkl-pseudoaxis-common.c | 2 +- hkl/hkl-pseudoaxis-e4cv-hkl.c | 10 +-- hkl/hkl-pseudoaxis-e4cv-psi.c | 2 +- hkl/hkl-pseudoaxis-e6c-hkl.c | 10 +-- hkl/hkl-pseudoaxis-e6c-psi.c | 2 +- hkl/hkl-pseudoaxis-k4cv-hkl.c | 10 +-- hkl/hkl-pseudoaxis-k4cv-psi.c | 2 +- hkl/hkl-pseudoaxis-k6c-hkl.c | 10 +-- hkl/hkl-pseudoaxis-k6c-psi.c | 2 +- hkl/hkl-pseudoaxis.c | 31 ++++++---- hkl/hkl-quaternion.c | 18 +++--- hkl/hkl-sample.c | 38 +++++++----- hkl/hkl-unit.c | 2 +- hkl/hkl-unit.h | 2 +- hkl/hkl-vector.c | 2 +- test/Makefile.am | 2 +- test/bench.c | 16 +++--- test/hkl-test-axis.c | 4 +- test/hkl-test-geometry.c | 6 +- test/hkl-test-interval.c | 104 ++++++++++++++++---------------- test/hkl-test-lattice.c | 28 +++++----- test/hkl-test-pseudoaxis-e4cv.c | 41 ++++++------- test/hkl-test-pseudoaxis-e6c.c | 22 ++++---- test/hkl-test-pseudoaxis-k4cv.c | 32 +++++----- test/hkl-test-pseudoaxis-k6c.c | 42 +++++++------- test/hkl-test-pseudoaxis.c | 39 ++++++------ test/hkl-test-quaternion.c | 6 +- test/hkl-test-sample.c | 17 +++-- test/hkl-test.c | 3 +- test/hkl-test.h | 2 +- test/main.c | 2 +- 46 files changed, 449 insertions(+), 417 deletions(-) commit a7a097f3c5550f4a508cfc5ff2731b2db3ab608e Author: Picca Frédéric-Emmanuel Date: Mon Apr 5 10:17:23 2010 +0200 * do not initialize a geometry from another geometry type hkl/hkl-geometry.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit 2b78a6dbfb239d4a0bad673d177f9eed7bd57c45 Author: Picca Frédéric-Emmanuel Date: Mon Apr 5 09:33:22 2010 +0200 * update the TODO list TODO | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 55bbdb7a0b082d9769058185dac5506b32b9dda6 Author: Picca Frédéric-Emmanuel Date: Mon Apr 5 09:31:30 2010 +0200 * add the HklGeometryListItem that way it will be possible to associate information to geometries like (distance, exclusion information) gui/ghkl-callbacks.cpp | 6 ++- gui/ghkl.cpp | 4 +- gui/pseudoaxesframe.cpp | 3 +- hkl/hkl-geometry.c | 89 ++++++++++++++++++++++++++++----------- hkl/hkl-geometry.h | 20 ++++++++- hkl/hkl-pseudoaxis-factory.c | 4 +- hkl/hkl-pseudoaxis.c | 4 +- test/bench.c | 5 +- test/hkl-test-geometry.c | 22 ++++++---- test/hkl-test-pseudoaxis-e4cv.c | 20 +++++---- test/hkl-test-pseudoaxis-e6c.c | 10 +++-- test/hkl-test-pseudoaxis-k4cv.c | 18 +++++--- test/hkl-test-pseudoaxis-k6c.c | 31 ++++++++----- test/hkl-test-pseudoaxis.c | 5 +- 14 files changed, 163 insertions(+), 78 deletions(-) commit 6c38b669163e033762ef34f87aa51d2cfc310316 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 24 17:09:16 2010 +0100 * update the readme and news files. NEWS | 11 +++++++---- README | 1 + 2 files changed, 8 insertions(+), 4 deletions(-) commit dda22cb3fcd41e2245ddb1d30f5641f104341f7c Author: Frédéric-Emmanuel PICCA Date: Wed Mar 24 17:02:45 2010 +0100 * add an HklGeometryConfig struct which contain all common part of the equivalent geometries. gui/ghkl-callbacks.cpp | 8 ++-- hkl/hkl-geometry-factory.c | 64 +++++++++++++++++++++++++------------- hkl/hkl-geometry-factory.h | 25 ++------------- hkl/hkl-geometry.c | 4 +- hkl/hkl-geometry.h | 21 +++++++++++- hkl/hkl-pseudoaxis-factory.c | 4 +- hkl/hkl-pseudoaxis-factory.h | 2 +- test/bench.c | 12 +++++-- test/hkl-test-pseudoaxis-e4cv.c | 36 ++++++++++++++------- test/hkl-test-pseudoaxis-e6c.c | 18 +++++++---- test/hkl-test-pseudoaxis-k4cv.c | 18 +++++++---- test/hkl-test-pseudoaxis-k6c.c | 30 ++++++++++++------ test/hkl-test-pseudoaxis.c | 26 ++++++++++------ test/hkl-test-sample.c | 28 +++++++++++++---- 14 files changed, 187 insertions(+), 109 deletions(-) commit cd73f424416727c2069773a688b1aff22bf31bd0 Author: Picca Frédéric-Emmanuel Date: Tue Mar 23 22:13:07 2010 +0100 * fix a possible segfault gui/ghkl-callbacks.cpp | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) commit d8c58cb009a9da9ab591d2453999d49d2272abfc Author: Picca Frédéric-Emmanuel Date: Tue Mar 23 22:12:48 2010 +0100 * remove useless code gui/ghkl-callbacks.cpp | 161 ------------------------------------------------ gui/ghkl.h | 15 +---- 2 files changed, 1 insertions(+), 175 deletions(-) commit 1c9734a9c376de903c09fad4fdcaefe7fa900cf6 Author: Picca Frédéric-Emmanuel Date: Tue Mar 23 21:43:43 2010 +0100 * now we can switch from one diffractometer to another one. gui/ghkl-callbacks.cpp | 20 +++++++++ gui/ghkl.cpp | 101 ++++++++++++++++++++++++++------------------ gui/ghkl.h | 8 ++-- gui/main.cpp | 2 +- hkl/hkl-geometry-factory.h | 17 +++++++ 5 files changed, 102 insertions(+), 46 deletions(-) commit 3ffa80e697ed5c52e3bcb60cbb1b827cd7057b23 Author: Picca Frédéric-Emmanuel Date: Tue Mar 23 10:44:16 2010 +0100 * refactoring of the ghkl sample set parameters TODO | 3 + gui/ghkl-callbacks.cpp | 271 +++-------- gui/ghkl.cpp | 39 +-- gui/ghkl.h | 2 + gui/ghkl.ui | 1255 +++++++++++++++++++++++++----------------------- 5 files changed, 717 insertions(+), 853 deletions(-) commit 9675896e5797db67da66cbcb3638dc3955c65dc4 Author: Picca Frédéric-Emmanuel Date: Tue Mar 23 09:16:46 2010 +0100 * add also LOG in the callbacks gui/ghkl-callbacks.cpp | 134 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 134 insertions(+), 0 deletions(-) commit c9f76ab5bf93a04096b8b6d5f34c58720cdbfd48 Author: Picca Frédéric-Emmanuel Date: Mon Mar 22 22:47:07 2010 +0100 * add a log to help dealing with callbacks gui/ghkl.cpp | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--- gui/ghkl.h | 3 ++ 2 files changed, 58 insertions(+), 4 deletions(-) commit 3f3e581aa138691c84ae12ec637b254b24db522a Author: Picca Frédéric-Emmanuel Date: Mon Mar 22 22:31:49 2010 +0100 * small refactoring of the ghkl constructor gui/ghkl.cpp | 40 ++++++++++++++++++++++++---------------- gui/ghkl.h | 3 ++- 2 files changed, 26 insertions(+), 17 deletions(-) commit 24562b1bc6e3aac7a97563256880df649ef2a4e3 Author: Picca Frédéric-Emmanuel Date: Mon Mar 22 22:21:49 2010 +0100 * typo gui/ghkl.cpp | 33 ++++++++++++++++++++++----------- gui/ghkl.h | 48 ++++++++++++++++++++++++++++++++---------------- 2 files changed, 54 insertions(+), 27 deletions(-) commit 03e576066bf8939e7986999955ac41e730d251b3 Author: Picca Frédéric-Emmanuel Date: Mon Mar 22 22:18:34 2010 +0100 * remove useless code gui/ghkl.cpp | 5 ----- gui/ghkl.h | 2 -- 2 files changed, 0 insertions(+), 7 deletions(-) commit 86e24bcedec33a948989321c0ec362fe62a287cc Author: Picca Frédéric-Emmanuel Date: Mon Mar 22 22:11:11 2010 +0100 * refactoring of the ghkl part gui/Makefile.am | 7 +- gui/ghkl-callbacks.cpp | 1118 ++++++++++++++++++++++++ gui/ghkl.cpp | 874 +++++++++++++++++++ gui/ghkl.h | 263 ++++++ gui/ghkl.ui | 2247 ++++++++++++++++++++++++++++++++++++++++++++++++ gui/hkl.ui | 2247 ------------------------------------------------ gui/hklwindow.cpp | 1976 ------------------------------------------ gui/hklwindow.h | 258 ------ gui/main.cpp | 2 +- 9 files changed, 4507 insertions(+), 4485 deletions(-) commit ed070a9f4a048855731c4192bb40c002469ced93 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 22 17:23:08 2010 +0100 * add the TAU = 1 define hkl/hkl-macros.h | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit f44d1d5a5450e1032c689b0710d6844b5732bfa3 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 22 17:22:52 2010 +0100 * remove unneeded fprintf message test/hkl-test-sample.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) commit a13828b04f289543635262030ef4c91ba0892b43 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 22 17:22:36 2010 +0100 * refactor the sample set_UB and afine methods hkl/hkl-sample.c | 178 ++++++++++++++++++++++++++++++++++------------------- hkl/hkl-sample.h | 2 +- 2 files changed, 115 insertions(+), 65 deletions(-) commit 9d960ae760934c6b14a2b5cc03b174833bd2271a Author: Picca Frédéric-Emmanuel Date: Sat Mar 20 16:04:49 2010 +0100 * add the setUB toolbutton and reorganize the ui gui/hkl.ui | 2816 ++++++++++++++++++++++++++++------------------------- gui/hklwindow.cpp | 36 + gui/hklwindow.h | 11 + 3 files changed, 1531 insertions(+), 1332 deletions(-) commit 13540127467181511b743aa4bfc3f86a122e456b Author: Picca Frédéric-Emmanuel Date: Sat Mar 20 11:01:07 2010 +0100 * remove a memory leak gui/hklwindow.cpp | 21 ++++++++++++--------- gui/hklwindow.h | 1 + 2 files changed, 13 insertions(+), 9 deletions(-) commit 69a387ab3952daeb829e3971e7904777910ea376 Author: Picca Frédéric-Emmanuel Date: Sat Mar 20 10:14:35 2010 +0100 * remove unneeded columns in treeviews gui/hklwindow.cpp | 13 ------------- gui/modelcolumns.h | 6 ------ 2 files changed, 0 insertions(+), 19 deletions(-) commit fe708c4181a5607446e9fdf16602734f98784c49 Author: Picca Frédéric-Emmanuel Date: Sat Mar 20 10:13:56 2010 +0100 * better look of the UB matrix gui/hklwindow.cpp | 29 ++++++++++++++++++++--------- 1 files changed, 20 insertions(+), 9 deletions(-) commit 1120eddb42decb5ec27fd50709e1facf9221fc3b Author: Picca Frédéric-Emmanuel Date: Thu Mar 18 17:08:55 2010 +0100 * typo test/hkl-test-lattice.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 93d961238a8fbe61b996e7061795d8af9778f9d7 Author: Picca Frédéric-Emmanuel Date: Thu Mar 18 17:07:34 2010 +0100 * set the UB matrix from an external one. hkl/hkl-sample.c | 24 ++++++++++++++++++++++++ hkl/hkl-sample.h | 4 +++- test/hkl-test-sample.c | 25 +++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 1 deletions(-) commit efd8b767eaff8ab30d0fec12bf62e1a15a47c7f8 Author: Picca Frédéric-Emmanuel Date: Thu Mar 18 17:06:35 2010 +0100 * add the get_1_B method to the HklLattice. hkl/hkl-lattice.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++ hkl/hkl-lattice.h | 2 + test/hkl-test-lattice.c | 26 ++++++++++++++++++++++ 3 files changed, 83 insertions(+), 0 deletions(-) commit b9685cf4526319a9313a426d39b65a535b5a7368 Author: picca Date: Mon Mar 15 18:50:22 2010 +0100 * use the ux uy and uz sample parameters in the gui gui/hkl.ui | 445 ++++++++++++++++++++++++++++++----------------------- gui/hklwindow.cpp | 52 +++++-- gui/hklwindow.h | 8 +- 3 files changed, 293 insertions(+), 212 deletions(-) commit 1f7b0557427ffa698d1d0f918e7b6b41adc97c95 Author: picca Date: Mon Mar 15 18:46:35 2010 +0100 * add the ux uy and uz HklParameter into HklSample hkl/hkl-sample.c | 54 ++++++++++++++++++++++++++++++++++++++++++----- hkl/hkl-sample.h | 3 ++ test/hkl-test-sample.c | 12 ++++++++++ 3 files changed, 63 insertions(+), 6 deletions(-) commit 2b0d3f55236b76a0f85b8e68baa79bddf301a917 Author: picca Date: Mon Mar 15 18:45:58 2010 +0100 * remove debug stream hkl/hkl-pseudoaxis-auto.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit fb5cc8a2f438c41cbab1a160214807ccce593950 Author: picca Date: Mon Mar 15 16:05:26 2010 +0100 * bug when setting the sample c values in the treeview. gui/hklwindow.cpp | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit b93f76251c0917288b5d15eccedccaf7f2f7b65b Author: picca Date: Mon Mar 15 15:56:37 2010 +0100 * remove a few lines in the hkl.ui interface gui/hkl.ui | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit 9ce86ec1c0f09b0bbddbf6097ec00e0f6deac995 Author: picca Date: Mon Mar 15 15:56:07 2010 +0100 * set the right unit for ux, uy and uz gui/hklwindow.cpp | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-) commit 196e15a0fa6f72a56e3e0423f2ad5ea04e33063b Author: picca Date: Mon Mar 15 11:25:33 2010 +0100 * remove all the useless affinement part. gui/hkl.ui | 1316 +++++++++++++++++++++++------------------------------ gui/hklwindow.cpp | 74 +--- gui/hklwindow.h | 9 - 3 files changed, 583 insertions(+), 816 deletions(-) commit 1a9b20091ee0d5286fe555e6e90091d1c63c7510 Author: picca Date: Fri Mar 12 18:56:30 2010 +0100 * do not use relection if the flag is unset hkl/hkl-sample.c | 17 +++++++++++------ 1 files changed, 11 insertions(+), 6 deletions(-) commit 0ea8b3e3524baf4bc661f60f2f87dc8554b12cd4 Author: Picca Frédéric-Emmanuel Date: Sun Mar 7 16:38:35 2010 +0100 * update the TODO list for the foating comparison TODO | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 5a24f66bf31a5ee081a0be1be173e690360f637d Author: Picca Frédéric-Emmanuel Date: Sat Mar 6 11:51:26 2010 +0100 * remove the empty window. gui/main.cpp | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 6e234b1bc92175e119b4a6609b911824a4015962 Author: Picca Frédéric-Emmanuel Date: Sat Mar 6 11:03:40 2010 +0100 * add the liststore to contain all the diffractometers gui/hkl.ui | 15 +++++++++++++++ gui/hklwindow.cpp | 4 ++++ gui/hklwindow.h | 3 +++ gui/modelcolumns.h | 13 +++++++++++++ 4 files changed, 35 insertions(+), 0 deletions(-) commit f880e2dd4e9ad6ae25b4d9b9ee1608cf549f731c Author: Picca Frédéric-Emmanuel Date: Sat Mar 6 10:44:28 2010 +0100 * add the preference dialog gui/hkl.ui | 88 +++++++++++++++++++++++++++++++++++++++++++++++++--- gui/hklwindow.cpp | 30 ++++++++++++++++++ gui/hklwindow.h | 11 ++++++ 3 files changed, 123 insertions(+), 6 deletions(-) commit 69f21adbbc6f21c84520548928dc12876eb858a9 Author: Frédéric-Emmanuel PICCA Date: Thu Mar 4 15:58:07 2010 +0100 * the missing part of the rename '* _' -> '*_' gui/hklwindow.h | 118 +++++++++++++++++++++++++++--------------------------- 1 files changed, 59 insertions(+), 59 deletions(-) commit d05449bb19cd366e6cafd9041221ca807e467229 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 3 16:54:52 2010 +0100 * add some DEBUG capability in the pseudo axes auto file to ease the debugging. hkl/hkl-pseudoaxis-auto.c | 78 ++++++++++++++++++++++++++++++-------------- 1 files changed, 53 insertions(+), 25 deletions(-) commit a9f431588685700e6a3c3758150a86109c6daa66 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 3 15:39:03 2010 +0100 * solve a bug in the pseudo axes set method now if only one of the solved function sucess, return success. hkl/hkl-pseudoaxis-auto.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 42fd3962ce6e04694b5c48eef9cb6300bcc17798 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 3 15:36:30 2010 +0100 * doc :) gui/pseudoaxesframe.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 08c8af0b8c92b954a68da858f65f0558967fdc0a Author: Frédéric-Emmanuel PICCA Date: Wed Mar 3 13:54:40 2010 +0100 * fix a typo in the pseudo.ui file gui/hkl.ui | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit bfc4a4ecb3c0ad8ec53f43716739a6824b7e1c63 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 3 08:42:27 2010 +0100 * rename members m_ -> _ gui/hklwindow.cpp | 794 ++++++++++++++++++++++++++-------------------------- gui/hklwindow.h | 156 ++++++------ 2 files changed, 475 insertions(+), 475 deletions(-) commit 9cf926035e9cb53e546717e70bd3c047fdd25ce4 Author: Picca Frédéric-Emmanuel Date: Mon Mar 1 19:50:45 2010 +0100 * add a new compilation flag -Wmissing-declarations to avoid futur bugs like functions signature discripencies hkl/Makefile.am | 2 +- hkl/hkl-macros.h | 5 +++++ 2 files changed, 6 insertions(+), 1 deletions(-) commit 6de06ff4a5afd0be6d6c6bc83fd5321587e9bd03 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 2 17:18:06 2010 +0100 * reorganisation of the gui gui/hkl.ui | 1911 ++++++++++++++++++++++++++++++------------------------------ 1 files changed, 945 insertions(+), 966 deletions(-) commit 51f2311af71ba10ec06736c7a1fa07eac655438c Author: Frédéric-Emmanuel PICCA Date: Tue Mar 2 17:09:43 2010 +0100 * add the uxuyuz part gui/hkl.ui | 206 ++++++++++++++++++++++++++++++++++++++++++++-------- gui/hklwindow.cpp | 37 ++++++++++ gui/hklwindow.h | 5 ++ 3 files changed, 216 insertions(+), 32 deletions(-) commit 9babf4c95577b356653e4652915d6f3fe0052b95 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 2 15:07:53 2010 +0100 * another bunch of dead code. gui/Makefile.am | 2 - gui/axespinbutton.cpp | 179 ------------------------------------------------- gui/axespinbutton.h | 74 -------------------- gui/hklwindow.cpp | 2 - gui/hklwindow.h | 2 - 5 files changed, 0 insertions(+), 259 deletions(-) commit 95a228eaf2396cb7f51be2c829d25bb9c42c78e9 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 2 15:04:13 2010 +0100 * remove dead code gui/hkl.ui | 198 ++++++----------------------------------------------- gui/hklwindow.cpp | 100 ++------------------------- gui/hklwindow.h | 8 -- 3 files changed, 27 insertions(+), 279 deletions(-) commit 1ec9a447169d5c50370ba95b280fe6d83c8ecbe1 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 2 11:52:03 2010 +0100 * add the solution treeview gui/hkl.ui | 10 +++++- gui/hklwindow.cpp | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++ gui/hklwindow.h | 7 ++++ gui/modelcolumns.h | 20 +++++++++++ 4 files changed, 130 insertions(+), 1 deletions(-) commit e323cae729cc8735d4b43673ca05c3b38c45824d Author: Frédéric-Emmanuel PICCA Date: Mon Mar 1 17:49:29 2010 +0100 * add a test method for the mantis bug #15110 the signature of the hkl_pseudo_axis_engine_init method was wrong. test/hkl-test-pseudoaxis-k6c.c | 36 ++++++++++++++++++++++++++++++++++++ 1 files changed, 36 insertions(+), 0 deletions(-) commit b933a5a1ca2de6d5fb26848760844fd147176e75 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 1 17:16:52 2010 +0100 * connect the initialize button gui/pseudoaxesframe.cpp | 13 +++++++++++++ gui/pseudoaxesframe.h | 2 ++ 2 files changed, 15 insertions(+), 0 deletions(-) commit 2dab8cea9a7dbcf605ccec050c20e0515cec6096 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 1 17:16:34 2010 +0100 * bug in the initialize part of the core really strange, the compiler did not complain about the wrong hkl_pseudo_axis_engine_init_func signature. hkl/hkl-pseudoaxis-common.c | 11 ++++------- 1 files changed, 4 insertions(+), 7 deletions(-) commit d71dec87ca9e87113a95637fd53f175fcf92c801 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 1 17:15:43 2010 +0100 * remove a warning hkl/hkl-sample.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 10ffa2ad957f51cf9787c87f159170cfade7c9d7 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 1 16:06:56 2010 +0100 * the pseudoAxesFrame PseudoAxes value celles becomes red after edition that way the users know that it must apply the new pseudoAxes values. gui/hkl.ui | 2 ++ gui/pseudoaxesframe.cpp | 9 +++++++++ 2 files changed, 11 insertions(+), 0 deletions(-) commit eeac4d21b4d7fe399e8fe962d66818e1720270f6 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 1 15:20:52 2010 +0100 * now the PseudoAxesFrames are updated when changing an Axis value. gui/hklwindow.cpp | 33 ++++++++++++++++++++++++++++++--- gui/hklwindow.h | 2 ++ gui/pseudoaxesframe.cpp | 29 ++++++++++++++++++++++++++++- gui/pseudoaxesframe.h | 14 ++++++++++++++ 4 files changed, 74 insertions(+), 4 deletions(-) commit c700e3c503994a70d26ab32b825620c23344c73e Author: Frédéric-Emmanuel PICCA Date: Mon Mar 1 14:26:17 2010 +0100 * now the PseudoAxisFrame PseudoAxis is connected to the hkl part. gui/pseudo.ui | 10 +++++--- gui/pseudoaxesframe.cpp | 49 +++++++++++++++++++++++++++++++++++++++------- gui/pseudoaxesframe.h | 11 +++++++-- 3 files changed, 55 insertions(+), 15 deletions(-) commit 31a3bbcf32d9340699494e54108f22541e1e69b2 Author: Picca Frédéric-Emmanuel Date: Sun Feb 28 23:05:49 2010 +0100 * re-work the gui interface gui/Makefile.am | 6 +- gui/hkl.ui | 510 +++++++++++++++++++++++------------------- gui/hklwindow.cpp | 10 + gui/hklwindow.h | 397 +++++++++++++++++----------------- gui/pseudo.ui | 206 +++++++++++++++++ gui/pseudoaxesframe.cpp | 119 ++++++++++ gui/pseudoaxesframe.h | 84 +++++++ gui/pseudoaxespinbutton.cpp | 160 -------------- gui/pseudoaxespinbutton.h | 68 ------ 9 files changed, 900 insertions(+), 660 deletions(-) commit b7f0da76bdacca56ed55c05fdb0e5680076bdcc8 Author: Picca Frédéric-Emmanuel Date: Sun Feb 28 15:00:31 2010 +0100 * add the copyright headers gui/axespinbutton.cpp | 21 +++++++++++++++++++++ gui/axespinbutton.h | 21 +++++++++++++++++++++ gui/hklwindow.cpp | 21 +++++++++++++++++++++ gui/hklwindow.h | 21 +++++++++++++++++++++ gui/main.cpp | 21 +++++++++++++++++++++ gui/modelcolumns.h | 21 +++++++++++++++++++++ gui/pseudoaxespinbutton.cpp | 21 +++++++++++++++++++++ gui/pseudoaxespinbutton.h | 21 +++++++++++++++++++++ 8 files changed, 168 insertions(+), 0 deletions(-) commit 679245a19aee30c3ee6a34d590d3729ed456a841 Author: Picca Frédéric-Emmanuel Date: Sat Feb 27 23:32:18 2010 +0100 * reorganize the hkl.ui gui/hkl.ui | 1509 +++++++++++++++++++++++++++++++----------------------------- 1 files changed, 775 insertions(+), 734 deletions(-) commit 9e3fba61b59559856697b8ec97d2aa66b6b076a1 Author: Picca Frédéric-Emmanuel Date: Sat Feb 27 23:32:05 2010 +0100 * fix the sample alpha beta and gamma set values gui/hklwindow.cpp | 87 ++++++++++++++++++++++++++--------------------------- 1 files changed, 43 insertions(+), 44 deletions(-) commit f0ce182d27d94dd431c6190f49cb3b1ddb80b19d Author: Picca Frédéric-Emmanuel Date: Sat Feb 27 21:52:45 2010 +0100 * now the ghkl also look for the pkgdatadir file for hkl.ui gui/Makefile.am | 1 + gui/hklwindow.cpp | 6 +++++- 2 files changed, 6 insertions(+), 1 deletions(-) commit d921844b9a690d0460b45106467939e946214448 Author: Picca Frédéric-Emmanuel Date: Sat Feb 27 19:40:01 2010 +0100 * fix the gui Makefile.am gui/Makefile.am | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit a8865210f03c25279b01b4ac19523269de5030b1 Author: Picca Frédéric-Emmanuel Date: Sat Feb 27 19:08:14 2010 +0100 * rename the sample type enum gui/hklwindow.cpp | 4 ++-- hkl/hkl-sample.h | 2 +- test/bench.c | 4 ++-- test/hkl-test-pseudoaxis-e4cv.c | 12 ++++++------ test/hkl-test-pseudoaxis-e6c.c | 6 +++--- test/hkl-test-pseudoaxis-k4cv.c | 6 +++--- test/hkl-test-pseudoaxis-k6c.c | 8 ++++---- test/hkl-test-pseudoaxis.c | 2 +- test/hkl-test-sample.c | 26 +++++++++++++------------- 9 files changed, 35 insertions(+), 35 deletions(-) commit 45783d41cef824a954089ffd72492c9c80e536ae Author: Picca Frédéric-Emmanuel Date: Sat Feb 27 18:55:08 2010 +0100 * remove a bug hkl/hkl-vector.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit e248f8f76f455060845bc67ca4257c772407de7b Author: Picca Frédéric-Emmanuel Date: Sat Feb 27 18:47:06 2010 +0100 * add the ghkl gui interface Makefile.am | 2 +- configure.ac | 4 + gui/Makefile.am | 23 + gui/axespinbutton.cpp | 158 ++++ gui/axespinbutton.h | 53 ++ gui/hkl.ui | 2053 +++++++++++++++++++++++++++++++++++++++++++ gui/hklwindow.cpp | 1833 ++++++++++++++++++++++++++++++++++++++ gui/hklwindow.h | 211 +++++ gui/main.cpp | 12 + gui/modelcolumns.h | 113 +++ gui/pseudoaxespinbutton.cpp | 139 +++ gui/pseudoaxespinbutton.h | 47 + 12 files changed, 4647 insertions(+), 1 deletions(-) commit 4ef0743dcd076a784438520d63186dfa42d90e13 Author: Picca Frédéric-Emmanuel Date: Mon Feb 22 14:42:05 2010 +0100 * fix a bunch or gtk-doc warning for the HklError hkl/hkl-error.c | 6 +----- 1 files changed, 1 insertions(+), 5 deletions(-) commit 708844de310afdd8a5bd5e7330216c4e7e5fcce1 Author: Picca Frédéric-Emmanuel Date: Mon Feb 22 14:36:36 2010 +0100 * remove a warning during the gtk-doc generation process Documentation/api/hkl-sections.txt | 6 ++---- hkl/hkl-matrix.c | 4 ++-- 2 files changed, 4 insertions(+), 6 deletions(-) commit ed1bd4c108586fc7d0b432e9b576da083c1bf9fd Author: Picca Frédéric-Emmanuel Date: Mon Feb 22 14:31:10 2010 +0100 * update the HklVector files Documentation/api/hkl-sections.txt | 2 +- hkl/hkl-pseudoaxis-common-hkl.c | 4 +- hkl/hkl-pseudoaxis-common-psi.c | 4 +- hkl/hkl-vector.c | 50 +++++++++++++++--------------- hkl/hkl-vector.h | 58 ++++++++++++++++++------------------ test/hkl-test-vector.c | 6 ++-- 6 files changed, 62 insertions(+), 62 deletions(-) commit 63c68d876157e5d40eef27651e56fa4ac46f37b9 Author: Picca Frédéric-Emmanuel Date: Mon Feb 22 14:21:05 2010 +0100 * add the Hklquaternnion documentation Documentation/api/hkl-sections.txt | 6 +- hkl/hkl-axis.c | 7 +- hkl/hkl-pseudoaxis-common-hkl.c | 2 +- hkl/hkl-pseudoaxis-common-psi.c | 4 +- hkl/hkl-quaternion.c | 124 ++++++++++++++++++++++++++++-------- hkl/hkl-quaternion.h | 63 +++--------------- test/hkl-test-quaternion.c | 22 +++--- 7 files changed, 129 insertions(+), 99 deletions(-) commit 6dd1ca45bd0760b2c4fdfff8d795ee09b78ab931 Author: Picca Frédéric-Emmanuel Date: Mon Feb 22 13:47:57 2010 +0100 * add doc for HklMatrix and rename a bunch of methods Documentation/api/hkl-sections.txt | 6 +- hkl/hkl-matrix.c | 136 +++++++++++++++++++++++++++++++---- hkl/hkl-matrix.h | 27 ++++---- hkl/hkl-pseudoaxis-common-hkl.c | 2 +- hkl/hkl-pseudoaxis-common-psi.c | 4 +- hkl/hkl-sample.c | 14 ++-- test/hkl-test-matrix.c | 18 +++--- test/hkl-test-pseudoaxis-k6c.c | 4 +- 8 files changed, 158 insertions(+), 53 deletions(-) commit 64d65316fbca4432acfe291c4497460df1df3923 Author: Picca Frédéric-Emmanuel Date: Mon Feb 22 12:59:16 2010 +0100 * correct the api Makefile dependencies. Documentation/api/Makefile.am | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 14b8749a29cd2fbc31cc27b7283c63e7a74fef93 Author: Picca Frédéric-Emmanuel Date: Mon Feb 22 12:58:54 2010 +0100 * correcte a few spelling errors. hkl/hkl-vector.c | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-) commit 51704dec42bba17284400f5ccdd5e34f6ed3ac28 Author: Picca Frédéric-Emmanuel Date: Mon Feb 22 09:09:31 2010 +0100 * add the HklVector documentation hkl/hkl-vector.c | 215 ++++++++++++++++++++++++++++++++++++++++++++++++++---- hkl/hkl-vector.h | 2 +- 2 files changed, 201 insertions(+), 16 deletions(-) commit a210f5ad539e7bdcbad33f6ce78ab50d33ef50b0 Author: Picca Frédéric-Emmanuel Date: Sun Feb 21 10:36:29 2010 +0100 * update the NEWS file NEWS | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) commit 7693ade54031c56d4dbedb9e63bec2ac2e994654 Author: Picca Frédéric-Emmanuel Date: Sun Feb 21 09:59:38 2010 +0100 * update the dependencies for the build README | 14 ++------------ 1 files changed, 2 insertions(+), 12 deletions(-) commit d34cf43596e0f5f7d5e0900a4e2d8b4408126bde Author: Picca Frédéric-Emmanuel Date: Sun Feb 21 09:18:04 2010 +0100 * add a few gtk-doc files Documentation/api/hkl-docs.sgml | 61 +++++ Documentation/api/hkl-sections.txt | 431 ++++++++++++++++++++++++++++++++++++ 2 files changed, 492 insertions(+), 0 deletions(-) commit acfa07b7ad660cc337b22eaf1217ff264b11afd0 Author: Picca Frédéric-Emmanuel Date: Sat Feb 20 23:48:08 2010 +0100 * add a missong file hkl/usage.c | 110 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 110 insertions(+), 0 deletions(-) commit da3e130d5226c0a62a98f3b82f98c427300b09ff Author: Picca Frédéric-Emmanuel Date: Sat Feb 20 23:36:01 2010 +0100 * add the m library in the Libs.private hkl.pc.in | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 2db8aceb5b2bebc673303a25fdfc89cc4bf6b00e Author: Picca Frédéric-Emmanuel Date: Sat Feb 20 23:30:46 2010 +0100 * clean and rename gtk-doc -> api Documentation/Doxyfile | 1342 -- Documentation/Makefile.am | 2 +- Documentation/Maxima/E4C_bissector.max | 12 - Documentation/Maxima/E4C_constant_chi.max | 12 - Documentation/Maxima/E4C_constant_chi_phi.max | 12 - Documentation/Maxima/E4C_constant_omega.max | 12 - Documentation/Maxima/E4C_delta_omega.max | 12 - Documentation/api/Makefile.am | 101 + Documentation/example/SConscript | 15 - Documentation/example/plot.gnuplot | 85 - Documentation/example/psi.cpp | 50 - Documentation/gtk-doc/Makefile.am | 101 - Documentation/uml/hkl.dia |22193 ------------------------ Documentation/uml/next_hkl.dia |22726 ------------------------- configure.ac | 2 +- fbuildroot.py | 29 - test/wscript_build | 27 - waf | Bin 84763 -> 0 bytes wscript | 59 - 19 files changed, 103 insertions(+), 46689 deletions(-) commit b32692c84d5275a6318f6ca043f6eef2a37fa36b Author: Picca Frédéric-Emmanuel Date: Sat Feb 20 23:15:59 2010 +0100 * reorganize the code to be more gtk-doc compatible Documentation/Makefile.am | 2 + Documentation/gtk-doc/Makefile.am | 101 ++++ INSTALL | 254 ++++++++--- Makefile.am | 3 +- autogen.sh | 3 +- configure.ac | 11 +- hkl/Makefile.am | 86 ++++ hkl/hkl-axis.c | 251 ++++++++++ hkl/hkl-axis.h | 99 ++++ hkl/hkl-detector-factory.c | 37 ++ hkl/hkl-detector-factory.h | 41 ++ hkl/hkl-detector.c | 75 +++ hkl/hkl-detector.h | 50 ++ hkl/hkl-error.c | 324 +++++++++++++ hkl/hkl-error.h | 72 +++ hkl/hkl-geometry-factory.c | 149 ++++++ hkl/hkl-geometry-factory.h | 46 ++ hkl/hkl-geometry.c | 592 +++++++++++++++++++++++ hkl/hkl-geometry.h | 124 +++++ hkl/hkl-interval.c | 467 ++++++++++++++++++ hkl/hkl-interval.h | 73 +++ hkl/hkl-lattice.c | 355 ++++++++++++++ hkl/hkl-lattice.h | 63 +++ hkl/hkl-list.h | 88 ++++ hkl/hkl-macros.h | 125 +++++ hkl/hkl-matrix.c | 236 +++++++++ hkl/hkl-matrix.h | 69 +++ hkl/hkl-parameter.c | 178 +++++++ hkl/hkl-parameter.h | 80 ++++ hkl/hkl-pseudoaxis-auto.c | 324 +++++++++++++ hkl/hkl-pseudoaxis-auto.h | 38 ++ hkl/hkl-pseudoaxis-common-eulerians.c | 163 +++++++ hkl/hkl-pseudoaxis-common-eulerians.h | 33 ++ hkl/hkl-pseudoaxis-common-hkl.c | 327 +++++++++++++ hkl/hkl-pseudoaxis-common-hkl.h | 59 +++ hkl/hkl-pseudoaxis-common-psi.c | 270 +++++++++++ hkl/hkl-pseudoaxis-common-psi.h | 50 ++ hkl/hkl-pseudoaxis-common-q.c | 245 ++++++++++ hkl/hkl-pseudoaxis-common-q.h | 30 ++ hkl/hkl-pseudoaxis-common.c | 52 ++ hkl/hkl-pseudoaxis-common.h | 38 ++ hkl/hkl-pseudoaxis-e4cv-hkl.c | 142 ++++++ hkl/hkl-pseudoaxis-e4cv-psi.c | 40 ++ hkl/hkl-pseudoaxis-e4cv.h | 34 ++ hkl/hkl-pseudoaxis-e6c-hkl.c | 220 +++++++++ hkl/hkl-pseudoaxis-e6c-psi.c | 40 ++ hkl/hkl-pseudoaxis-e6c.h | 34 ++ hkl/hkl-pseudoaxis-factory.c | 140 ++++++ hkl/hkl-pseudoaxis-factory.h | 35 ++ hkl/hkl-pseudoaxis-k4cv-hkl.c | 341 +++++++++++++ hkl/hkl-pseudoaxis-k4cv-psi.c | 40 ++ hkl/hkl-pseudoaxis-k4cv.h | 34 ++ hkl/hkl-pseudoaxis-k6c-hkl.c | 504 ++++++++++++++++++++ hkl/hkl-pseudoaxis-k6c-psi.c | 40 ++ hkl/hkl-pseudoaxis-k6c.h | 34 ++ hkl/hkl-pseudoaxis-zaxis-hkl.c | 80 ++++ hkl/hkl-pseudoaxis-zaxis.h | 33 ++ hkl/hkl-pseudoaxis.c | 609 ++++++++++++++++++++++++ hkl/hkl-pseudoaxis.h | 184 +++++++ hkl/hkl-quaternion.c | 207 ++++++++ hkl/hkl-quaternion.h | 110 +++++ hkl/hkl-sample.c | 632 +++++++++++++++++++++++++ hkl/hkl-sample.h | 149 ++++++ hkl/hkl-source.c | 69 +++ hkl/hkl-source.h | 52 ++ hkl/hkl-unit.c | 106 ++++ hkl/hkl-unit.h | 57 +++ hkl/hkl-vector.c | 324 +++++++++++++ hkl/hkl-vector.h | 109 +++++ hkl/hkl.h | 7 + include/Makefile.am | 32 -- include/hkl.h | 7 - include/hkl/SConscript | 26 - include/hkl/hkl-axis.h | 99 ---- include/hkl/hkl-detector-factory.h | 41 -- include/hkl/hkl-detector.h | 50 -- include/hkl/hkl-error.h | 72 --- include/hkl/hkl-geometry-factory.h | 46 -- include/hkl/hkl-geometry.h | 124 ----- include/hkl/hkl-interval.h | 73 --- include/hkl/hkl-lattice.h | 63 --- include/hkl/hkl-list.h | 88 ---- include/hkl/hkl-macros.h | 125 ----- include/hkl/hkl-matrix.h | 69 --- include/hkl/hkl-parameter.h | 80 ---- include/hkl/hkl-pseudoaxis-auto.h | 38 -- include/hkl/hkl-pseudoaxis-common-eulerians.h | 33 -- include/hkl/hkl-pseudoaxis-common-hkl.h | 59 --- include/hkl/hkl-pseudoaxis-common-psi.h | 50 -- include/hkl/hkl-pseudoaxis-common-q.h | 30 -- include/hkl/hkl-pseudoaxis-common.h | 38 -- include/hkl/hkl-pseudoaxis-e4cv.h | 34 -- include/hkl/hkl-pseudoaxis-e6c.h | 34 -- include/hkl/hkl-pseudoaxis-factory.h | 35 -- include/hkl/hkl-pseudoaxis-k4cv.h | 34 -- include/hkl/hkl-pseudoaxis-k6c.h | 34 -- include/hkl/hkl-pseudoaxis-zaxis.h | 33 -- include/hkl/hkl-pseudoaxis.h | 184 ------- include/hkl/hkl-quaternion.h | 110 ----- include/hkl/hkl-sample.h | 149 ------ include/hkl/hkl-source.h | 52 -- include/hkl/hkl-unit.h | 57 --- include/hkl/hkl-vector.h | 109 ----- src/Makefile.am | 53 -- src/hkl-axis.c | 251 ---------- src/hkl-detector-factory.c | 37 -- src/hkl-detector.c | 75 --- src/hkl-error.c | 324 ------------- src/hkl-geometry-factory.c | 149 ------ src/hkl-geometry.c | 592 ----------------------- src/hkl-interval.c | 467 ------------------ src/hkl-lattice.c | 355 -------------- src/hkl-matrix.c | 236 --------- src/hkl-parameter.c | 178 ------- src/hkl-pseudoaxis-auto.c | 324 ------------- src/hkl-pseudoaxis-common-eulerians.c | 163 ------- src/hkl-pseudoaxis-common-hkl.c | 327 ------------- src/hkl-pseudoaxis-common-psi.c | 270 ----------- src/hkl-pseudoaxis-common-q.c | 245 ---------- src/hkl-pseudoaxis-common.c | 52 -- src/hkl-pseudoaxis-e4cv-hkl.c | 142 ------ src/hkl-pseudoaxis-e4cv-psi.c | 40 -- src/hkl-pseudoaxis-e6c-hkl.c | 220 --------- src/hkl-pseudoaxis-e6c-psi.c | 40 -- src/hkl-pseudoaxis-factory.c | 140 ------ src/hkl-pseudoaxis-k4cv-hkl.c | 341 ------------- src/hkl-pseudoaxis-k4cv-psi.c | 40 -- src/hkl-pseudoaxis-k6c-hkl.c | 504 -------------------- src/hkl-pseudoaxis-k6c-psi.c | 40 -- src/hkl-pseudoaxis-zaxis-hkl.c | 80 ---- src/hkl-pseudoaxis.c | 609 ------------------------ src/hkl-quaternion.c | 207 -------- src/hkl-sample.c | 632 ------------------------- src/hkl-source.c | 69 --- src/hkl-unit.c | 106 ---- src/hkl-vector.c | 324 ------------- src/usage.c | 110 ----- src/wscript_build | 12 - test/Makefile.am | 14 +- 139 files changed, 10031 insertions(+), 9934 deletions(-) commit 25072b4420d63fbf031a6424af735fdb4c6d2171 Author: Picca Frédéric-Emmanuel Date: Sat Feb 20 19:10:43 2010 +0100 * correct a few warnings include/hkl/hkl-pseudoaxis-auto.h | 3 ++- include/hkl/hkl-pseudoaxis-common-hkl.h | 6 ++++-- include/hkl/hkl-pseudoaxis-common-psi.h | 4 ++-- src/hkl-pseudoaxis-auto.c | 3 ++- src/hkl-pseudoaxis-common-eulerians.c | 6 ++++-- src/hkl-pseudoaxis-common-hkl.c | 6 ++++-- src/hkl-pseudoaxis-common-psi.c | 6 ++++-- src/hkl-pseudoaxis-common-q.c | 6 ++++-- 8 files changed, 26 insertions(+), 14 deletions(-) commit 45a9e3cec68b45d657f3ba741ed0d84b6df921fe Author: Picca Frédéric-Emmanuel Date: Sat Feb 20 18:13:39 2010 +0100 * prepare for Error handling in the pseudo axes part include/hkl/hkl-pseudoaxis.h | 10 ++++--- src/hkl-pseudoaxis.c | 52 +++++++++++++++++++++++++++----------- test/bench.c | 6 ++-- test/hkl-test-pseudoaxis-e4cv.c | 46 +++++++++++++++++----------------- test/hkl-test-pseudoaxis-e6c.c | 20 +++++++------- test/hkl-test-pseudoaxis-k4cv.c | 16 ++++++------ test/hkl-test-pseudoaxis-k6c.c | 22 ++++++++-------- test/hkl-test-pseudoaxis.c | 6 ++-- 8 files changed, 101 insertions(+), 77 deletions(-) commit ee4a447a87d9de7c6dc66fdeed53d04ee3f77345 Author: Picca Frederic-Emmanuel Date: Wed Feb 10 15:53:13 2010 +0100 * use the right dircategory for the texinfo documentation Documentation/hkl.texi | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit f6e92376f3bbed247227c853fbb129697f9c96d3 Author: Picca Frederic-Emmanuel Date: Tue Feb 9 13:39:15 2010 +0100 * update the authors list AUTHORS | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commit d36f012b712a7e5e94cad397c07a6eb8a0ab42b6 Author: Picca Frederic-Emmanuel Date: Mon Feb 8 14:42:35 2010 +0100 * fix the texindo documentation Documentation/hkl.texi | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 28d63c951adbbae155ee82b5e2978e7382409212 Author: Picca Frederic-Emmanuel Date: Mon Feb 8 14:40:21 2010 +0100 * use LIBADD instead of LIBS src/Makefile.am | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit f896c5dbf9ded04de6fec34d1251665113b4346d Author: Picca Frederic-Emmanuel Date: Sat Feb 6 10:39:56 2010 +0100 * extract the waf VERSION from the configure.ac wscript | 17 ++++++++++++----- 1 files changed, 12 insertions(+), 5 deletions(-) commit 07619a50136a1fe1a6245945b1f80d57b7930b55 Author: Picca Frédéric-Emmanuel Date: Tue Feb 2 13:39:46 2010 +0100 * update the test makefile to compile correctly. test/Makefile.am | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 84db9c2a18433ba9b7fe75f92e80a376fef50f34 Author: System User Date: Fri Jan 22 16:01:34 2010 +0100 * add a dist-hook to generate the changelog from the git repository. Makefile.am | 15 +++++++++++++++ 1 files changed, 15 insertions(+), 0 deletions(-) commit 653355321c6c2fcc98ae449a8237ab3579080493 Author: System User Date: Tue Jan 19 11:52:08 2010 +0100 * downgrad autoconf 2.65 -> 2.59 to allow working with the brand new RHEL 4!!! INSTALL | 169 +++++++++++++++++----------------------------------------- configure.ac | 13 +++-- 2 files changed, 58 insertions(+), 124 deletions(-) commit b6cf1d7bdb5ed74df8e3dcd3bcf670467de9fa7c Author: Picca Frederic-Emmanuel Date: Wed Jan 20 22:12:18 2010 +0100 * add the fbuild buildsystem. fbuildroot.py | 29 +++++++++++++++++++++++++++++ 1 files changed, 29 insertions(+), 0 deletions(-) commit 58ac27a28ae1c5356cc877ce91a9d12493d1ebc3 Author: System User Date: Thu Jan 14 15:19:32 2010 +0100 * small optimization to avoid geometry copy if just updating the current reflection geometry. src/hkl-sample.c | 11 ++++++++--- 1 files changed, 8 insertions(+), 3 deletions(-) commit 28d37361ce776a40054f28732973fe9f8e554fac Author: Frédéric-Emmanuel PICCA Date: Tue Jan 19 10:12:25 2010 +0100 * doc of the eulerian 4 circle "hkl" pseudo axes. Documentation/hkl.texi | 78 +++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 77 insertions(+), 1 deletions(-) commit 6dccb39b8a98fa0d658df8be8f00c61480706708 Author: Frédéric-Emmanuel PICCA Date: Mon Jan 18 16:33:04 2010 +0100 * update the documentation Licence GPL-3 Documentation/hkl.texi | 34 ++++++++++++++++++---------------- 1 files changed, 18 insertions(+), 16 deletions(-) commit 48a6d23fd95524f98a037b27bf5115a2ee226b3a Author: Frédéric-Emmanuel PICCA Date: Mon Jan 18 13:42:28 2010 +0100 * wrote the documentation of all the diffractometer geometries Documentation/hkl.texi | 163 ++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 151 insertions(+), 12 deletions(-) commit 8233620a251b9f0b81d09c52f670443a989b24c1 Author: Picca Frederic-Emmanuel Date: Sun Jan 17 19:39:06 2010 +0100 * add the texinfo doc Documentation/Makefile.am | 1 + Documentation/SConscript | 10 - Documentation/hkl.texi | 589 ++++++++++++++++++++++++++++++++++++++++++ Documentation/user-guide.txt | 530 ------------------------------------- Makefile.am | 2 +- configure.ac | 3 +- 6 files changed, 593 insertions(+), 542 deletions(-) commit 674b41687256469e016c1e56119939ccd9f582a5 Author: Picca Frederic-Emmanuel Date: Fri Jan 15 23:34:57 2010 +0100 * fix for real the inline problem. include/hkl/hkl-macros.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 02525fabaa3e37920f9dedb0c95a249137767e1e Author: Frédéric-Emmanuel PICCA Date: Fri Jan 15 17:18:27 2010 +0100 * correct the generation of the hkl.pc file hkl.pc.in | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 3388bc4fd288aa49fe693e6dab9de129f67e1d57 Author: System User Date: Thu Jan 14 15:06:06 2010 +0100 * add a method to set the HklSampleReflection geometry part. include/hkl/hkl-sample.h | 2 + src/hkl-parameter.c | 10 ++++--- src/hkl-sample.c | 44 +++++++++++++++++++++++-------- test/hkl-test-sample.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 103 insertions(+), 16 deletions(-) commit f0441ebe3febbf8d3aea1b1502b40df262a5ceff Author: System User Date: Tue Jan 12 10:14:18 2010 +0100 * solve an inline problem with the gcc3.4 compiler used at SOLEIL include/hkl/hkl-macros.h | 11 +---------- src/usage.c | 11 +++++++++++ 2 files changed, 12 insertions(+), 10 deletions(-) commit ef917fcb81effb14a51dbe721c677c2025d0d712 Author: System User Date: Mon Jan 11 14:51:07 2010 +0100 * remove an unused variable src/hkl-error.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) commit 621cb73f742af96eab421301e0fa0a58588a4ecf Author: Frédéric-Emmanuel PICCA Date: Mon Jan 11 17:12:37 2010 +0100 * indentation include/hkl/hkl-macros.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 046776c0b46431b7415e03fbe7d8b6ce6c8f67b0 Author: Frédéric-Emmanuel PICCA Date: Mon Jan 11 17:12:04 2010 +0100 * use an optimized vector_rotated_quaternion method. src/hkl-vector.c | 35 +++++++++++++++++++++-------------- 1 files changed, 21 insertions(+), 14 deletions(-) commit 041fedff1fdce0eb5507d4361ae6b3503c7f6762 Author: Picca Frederic-Emmanuel Date: Sun Jan 10 19:52:39 2010 +0100 * remove clang warning include/hkl/hkl-macros.h | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) commit fad99b91f53c9ab4c0bea768ddc368c442070c21 Author: Picca Frederic-Emmanuel Date: Sun Jan 10 18:58:56 2010 +0100 * few optimizations src/hkl-pseudoaxis-k4cv-hkl.c | 5 ++--- src/hkl-quaternion.c | 22 ++++++++++++---------- 2 files changed, 14 insertions(+), 13 deletions(-) commit c19e2fbdfd9abadecdf6b3f652e3db3a05059041 Author: Picca Frederic-Emmanuel Date: Sun Jan 10 17:34:05 2010 +0100 * rename getter -> get in HklPseudoAxisEngineList include/hkl/hkl-pseudoaxis.h | 2 +- src/hkl-pseudoaxis.c | 2 +- test/hkl-test-pseudoaxis-k6c.c | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) commit 2ec04b89ccea50a0c4b0c2dfd2a8d08dc35d97f0 Author: Picca Frederic-Emmanuel Date: Sun Jan 10 17:26:34 2010 +0100 * rename init -> initialize in HklPseudoAxisEngineMode include/hkl/hkl-pseudoaxis.h | 12 +++++----- src/hkl-pseudoaxis.c | 20 ++++++++-------- test/bench.c | 6 ++-- test/hkl-test-pseudoaxis-e4cv.c | 46 +++++++++++++++++++------------------- test/hkl-test-pseudoaxis-e6c.c | 20 ++++++++-------- test/hkl-test-pseudoaxis-k4cv.c | 16 ++++++------ test/hkl-test-pseudoaxis-k6c.c | 22 +++++++++--------- test/hkl-test-pseudoaxis.c | 8 +++--- 8 files changed, 75 insertions(+), 75 deletions(-) commit ec5b3b163bc8c839e2253dbcd19c2fa5d0b21fb1 Author: Picca Frederic-Emmanuel Date: Sun Jan 10 17:08:38 2010 +0100 * remove useless lines src/hkl-pseudoaxis-common-eulerians.c | 9 --------- 1 files changed, 0 insertions(+), 9 deletions(-) commit 8a3e0bfc3b73c464166fd3a491da9256a34d093e Author: Picca Frederic-Emmanuel Date: Sun Jan 10 16:51:07 2010 +0100 * use the init method of HklPseudoAxisEngineMode in the constructor method include/hkl/hkl-pseudoaxis.h | 2 +- src/hkl-pseudoaxis-common-eulerians.c | 2 +- src/hkl-pseudoaxis-common-psi.c | 34 ++++++++++++-------- src/hkl-pseudoaxis-e4cv-hkl.c | 4 +- src/hkl-pseudoaxis-e6c-hkl.c | 6 ++-- src/hkl-pseudoaxis-k4cv-hkl.c | 10 +++--- src/hkl-pseudoaxis-k6c-hkl.c | 14 ++++---- src/hkl-pseudoaxis.c | 54 ++++++++++++++++----------------- 8 files changed, 65 insertions(+), 61 deletions(-) commit 85c3e8efd6cbcfd9fd02ce95aaa388eec0254804 Author: Picca Frederic-Emmanuel Date: Sun Jan 10 13:22:05 2010 +0100 * indentation src/hkl-error.c | 14 +++++++------- 1 files changed, 7 insertions(+), 7 deletions(-) commit a2ce285ec88593c6b614ce753421f8469900fe9f Author: Picca Frederic-Emmanuel Date: Sun Jan 10 13:19:22 2010 +0100 * doc include/hkl/hkl-macros.h | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit ca814c452952270aaad5f3bb4f251b2543149edc Author: Picca Frederic-Emmanuel Date: Sun Jan 10 13:19:07 2010 +0100 * standardise the memory allocation with the HKL_MALLOC macro include/hkl/hkl-macros.h | 19 +++++++++++++++++-- src/hkl-axis.c | 4 +--- src/hkl-detector.c | 8 ++------ src/hkl-error.c | 8 +++----- src/hkl-geometry.c | 12 +++--------- src/hkl-lattice.c | 8 ++------ src/hkl-parameter.c | 8 ++------ src/hkl-pseudoaxis-common-psi.c | 4 +--- src/hkl-pseudoaxis.c | 17 +++++------------ src/hkl-sample.c | 20 +++++--------------- 10 files changed, 41 insertions(+), 67 deletions(-) commit 08ec35fecde509b250f31a691b25c31a00a99999 Author: Picca Frederic-Emmanuel Date: Sat Jan 9 11:05:17 2010 +0100 * refactoring of the HklPseudoAxisModeFunc include/hkl/hkl-pseudoaxis-auto.h | 3 +- include/hkl/hkl-pseudoaxis-common-hkl.h | 14 ++++++---- include/hkl/hkl-pseudoaxis-common.h | 3 +- include/hkl/hkl-pseudoaxis.h | 41 ++++++++++++------------------- src/hkl-pseudoaxis-auto.c | 11 ++++---- src/hkl-pseudoaxis-common-eulerians.c | 14 ++++++---- src/hkl-pseudoaxis-common-hkl.c | 30 ++++++++++++---------- src/hkl-pseudoaxis-common-psi.c | 27 +++++++++----------- src/hkl-pseudoaxis-common-q.c | 14 ++++++---- src/hkl-pseudoaxis.c | 27 ++++++++++---------- 10 files changed, 92 insertions(+), 92 deletions(-) commit 93af3bdef8aee90b70223c61acd0af5db0a4642a Author: Picca Frederic-Emmanuel Date: Fri Jan 8 22:30:03 2010 +0100 * simplification using an array to store the function to solve. include/hkl/hkl-pseudoaxis-auto.h | 7 +- include/hkl/hkl-pseudoaxis-common-hkl.h | 72 ++------------ include/hkl/hkl-pseudoaxis-common.h | 1 + include/hkl/hkl-pseudoaxis.h | 4 + src/hkl-pseudoaxis-auto.c | 21 ++++- src/hkl-pseudoaxis-common-eulerians.c | 3 +- src/hkl-pseudoaxis-common-hkl.c | 32 +------ src/hkl-pseudoaxis-common-psi.c | 14 +-- src/hkl-pseudoaxis-common-q.c | 26 +---- src/hkl-pseudoaxis-e4cv-hkl.c | 40 ++++---- src/hkl-pseudoaxis-e6c-hkl.c | 74 ++++++-------- src/hkl-pseudoaxis-k4cv-hkl.c | 90 ++++------------- src/hkl-pseudoaxis-k6c-hkl.c | 168 +++++++----------------------- src/hkl-pseudoaxis-zaxis-hkl.c | 18 +-- src/hkl-pseudoaxis.c | 21 +++- 15 files changed, 184 insertions(+), 407 deletions(-) commit e635c89c750d01517448921bbb644f7a5d2af3d2 Author: System User Date: Fri Jan 8 15:39:07 2010 +0100 * add the reflectivity mode for the zaxis geometry. NEWS | 4 ++++ src/hkl-pseudoaxis-zaxis-hkl.c | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 0 deletions(-) commit 830eb71d6ba16465da38329187fc45db4eebca79 Author: System User Date: Thu Jan 7 17:13:37 2010 +0100 * the HklPseudoAxisEngine setter method fail if there is 0 geometries computed src/hkl-pseudoaxis.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit c72eeb00a35409fd19414977cc65f7f63fcd4ff0 Author: System User Date: Thu Jan 7 14:08:14 2010 +0100 * solve temporarly a bug during the set. We need to transfert the starting point of the geometry from engine->engines->geometry to engine->geometry do do the right calculation. src/hkl-pseudoaxis.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit b1138cae1e37256e394c73594e91c3486e6402dd Author: System User Date: Thu Jan 7 14:06:47 2010 +0100 * add the q2 pseudo axis to the zaxis geometry. src/hkl-pseudoaxis-factory.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 04b6c34010478a811000e1bf9bfb3e6db99d0072 Author: Picca Frederic-Emmanuel Date: Wed Jan 6 22:14:13 2010 +0100 * add the geometry_list_remove_invalid test. thus correction of the geometry validity check. src/hkl-parameter.c | 3 +- test/hkl-test-geometry.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletions(-) commit 3423bdbfe0873be8ce9c0db286b53ec83ab90b8f Author: Picca Frederic-Emmanuel Date: Wed Jan 6 22:07:54 2010 +0100 * remove wrong authors for the zaxis geometry src/hkl-pseudoaxis-zaxis-hkl.c | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-) commit ba89b16abf616e408642ac5b20bafef5af92e91b Author: Picca Frederic-Emmanuel Date: Wed Jan 6 22:06:56 2010 +0100 * better presentation of the Makefile.am of the include files. include/Makefile.am | 43 ++++++++++++++++++++++++++++++++----------- 1 files changed, 32 insertions(+), 11 deletions(-) commit b7f7fffea82612d705e7349d305e50768c593e1a Author: System User Date: Wed Jan 6 17:47:32 2010 +0100 * now HklGeometryList::remove_invalid is ok. src/hkl-geometry.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commit f66f33c6f42148ae4537ec46de9562d0ccfce523 Author: System User Date: Wed Jan 6 17:45:31 2010 +0100 * add the zaxis geometry include/Makefile.am | 2 +- include/hkl/hkl-geometry-factory.h | 1 + include/hkl/hkl-pseudoaxis-zaxis.h | 33 ++++++++++++++++++++++ src/Makefile.am | 1 + src/hkl-geometry-factory.c | 17 +++++++++++ src/hkl-pseudoaxis-factory.c | 4 ++ src/hkl-pseudoaxis-zaxis-hkl.c | 54 ++++++++++++++++++++++++++++++++++++ test/hkl-test-pseudoaxis.c | 7 ++++ 8 files changed, 118 insertions(+), 1 deletions(-) commit 5206c73b460efda8d01d45c6b2e301870d3fb0c0 Author: Picca Frederic-Emmanuel Date: Tue Jan 5 22:56:24 2010 +0100 * remove all warning due to clang src/hkl-axis.c | 2 +- src/hkl-matrix.c | 3 +- src/hkl-pseudoaxis-auto.c | 2 +- src/hkl-pseudoaxis-common-psi.c | 2 - src/hkl-pseudoaxis-k4cv-hkl.c | 6 ----- src/hkl-pseudoaxis-k6c-hkl.c | 46 ++++---------------------------------- 6 files changed, 9 insertions(+), 52 deletions(-) commit 72fa2115662feedddb316967fdfc680d5cfdff1e Author: Picca Frederic-Emmanuel Date: Tue Jan 5 19:57:14 2010 +0100 * remove warning from gcc 4.4.2 and switch to c99 configure.ac | 2 +- src/hkl-error.c | 3 ++- src/hkl-pseudoaxis-common-q.c | 1 + test/bench.c | 4 ++-- test/hkl-test.h | 15 ++++++++------- 5 files changed, 14 insertions(+), 11 deletions(-) commit 1928f66d8fe460120c931f9f77e694b69558726f Author: Picca Frederic-Emmanuel Date: Tue Jan 5 19:55:55 2010 +0100 * better printf for HklGeometry src/hkl-geometry.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) commit f6141c5f67379561faa054f73285cd1d01a26c43 Author: Frédéric-Emmanuel PICCA Date: Tue Jan 5 13:55:47 2010 +0100 * the number of randomize test per PseudoAxisEngine is now define using a constant. test/hkl-test-pseudoaxis.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 7e1c13a54c7f20be4b4d3f8f0d1415f337827fa0 Author: Frédéric-Emmanuel PICCA Date: Tue Jan 5 13:47:53 2010 +0100 * use the new HKL_ASSERT_STRING_EQUAL everywhere :) test/hkl-test-axis.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 2c5f7691d3fc1ead52038f46ac453ebe3d7e1b66 Author: Frédéric-Emmanuel PICCA Date: Tue Jan 5 13:43:54 2010 +0100 * indent test/hkl-test.h | 60 +++++++++++++++++++++++++++--------------------------- 1 files changed, 30 insertions(+), 30 deletions(-) commit af91ea7658d731fd4bdfa86edb67bc20bd4e7046 Author: Frédéric-Emmanuel PICCA Date: Tue Jan 5 13:42:27 2010 +0100 * forgot the 2009 -> 2010 copyright change of the test part. test/bench.c | 2 +- test/hkl-test-axis.c | 2 +- test/hkl-test-detector.c | 2 +- test/hkl-test-geometry.c | 2 +- test/hkl-test-interval.c | 2 +- test/hkl-test-lattice.c | 2 +- test/hkl-test-matrix.c | 2 +- test/hkl-test-parameter.c | 2 +- test/hkl-test-pseudoaxis-e4cv.c | 2 +- test/hkl-test-pseudoaxis-e6c.c | 2 +- test/hkl-test-pseudoaxis-k4cv.c | 2 +- test/hkl-test-pseudoaxis-k6c.c | 2 +- test/hkl-test-pseudoaxis.c | 2 +- test/hkl-test-quaternion.c | 2 +- test/hkl-test-sample.c | 2 +- test/hkl-test-source.c | 2 +- test/hkl-test-vector.c | 2 +- test/hkl-test.c | 2 +- test/hkl-test.h | 2 +- test/main.c | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) commit 55e7bab1ed489b0329c604f785d10f5a4e70154e Author: Frédéric-Emmanuel PICCA Date: Tue Jan 5 13:39:46 2010 +0100 * add the test methods for HklError test/Makefile.am | 2 + test/hkl-test-error.c | 135 +++++++++++++++++++++++++++++++++++++++++++++++++ test/main.c | 1 + 3 files changed, 138 insertions(+), 0 deletions(-) commit c46d337eb25130de53b7338c81cbeff18a5e725d Author: Frédéric-Emmanuel PICCA Date: Tue Jan 5 13:38:43 2010 +0100 * rename functions to follow the hkl convention. include/hkl.h | 1 + include/hkl/hkl-error.h | 14 +++++++------- src/hkl-error.c | 33 +++++++++++++++++++-------------- 3 files changed, 27 insertions(+), 21 deletions(-) commit a14d9979ec63868b4a66acde8e26c680ef52f3a2 Author: Frédéric-Emmanuel PICCA Date: Tue Jan 5 11:09:03 2010 +0100 * add the HKL_ASSERT_STRING_EQUAL macro test/hkl-test.h | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) commit 0cc5e087f24c818ac46f86a2a4151f4a3387cb3f Author: Picca Frederic-Emmanuel Date: Mon Jan 4 21:39:43 2010 +0100 * add the HklError class. include/Makefile.am | 2 +- include/hkl/hkl-error.h | 72 ++++++++++ include/hkl/hkl-macros.h | 4 + src/Makefile.am | 1 + src/hkl-error.c | 321 ++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 399 insertions(+), 1 deletions(-) commit a6e309cd9e016e8f2892aa90af071feac3fdca86 Author: Frédéric-Emmanuel PICCA Date: Mon Jan 4 17:25:47 2010 +0100 * update the copyright year include/hkl/hkl-axis.h | 2 +- include/hkl/hkl-detector-factory.h | 2 +- include/hkl/hkl-detector.h | 2 +- include/hkl/hkl-geometry-factory.h | 2 +- include/hkl/hkl-geometry.h | 2 +- include/hkl/hkl-interval.h | 2 +- include/hkl/hkl-lattice.h | 2 +- include/hkl/hkl-list.h | 2 +- include/hkl/hkl-macros.h | 2 +- include/hkl/hkl-matrix.h | 2 +- include/hkl/hkl-parameter.h | 2 +- include/hkl/hkl-pseudoaxis-auto.h | 2 +- include/hkl/hkl-pseudoaxis-common-eulerians.h | 2 +- include/hkl/hkl-pseudoaxis-common-hkl.h | 2 +- include/hkl/hkl-pseudoaxis-common-psi.h | 2 +- include/hkl/hkl-pseudoaxis-common-q.h | 2 +- include/hkl/hkl-pseudoaxis-common.h | 2 +- include/hkl/hkl-pseudoaxis-e4cv.h | 2 +- include/hkl/hkl-pseudoaxis-e6c.h | 2 +- include/hkl/hkl-pseudoaxis-factory.h | 2 +- include/hkl/hkl-pseudoaxis-k4cv.h | 2 +- include/hkl/hkl-pseudoaxis-k6c.h | 2 +- include/hkl/hkl-pseudoaxis.h | 2 +- include/hkl/hkl-quaternion.h | 2 +- include/hkl/hkl-sample.h | 2 +- include/hkl/hkl-source.h | 2 +- include/hkl/hkl-unit.h | 2 +- include/hkl/hkl-vector.h | 2 +- src/hkl-axis.c | 2 +- src/hkl-detector-factory.c | 2 +- src/hkl-detector.c | 2 +- src/hkl-geometry-factory.c | 2 +- src/hkl-geometry.c | 2 +- src/hkl-interval.c | 2 +- src/hkl-lattice.c | 2 +- src/hkl-matrix.c | 2 +- src/hkl-parameter.c | 2 +- src/hkl-pseudoaxis-auto.c | 2 +- src/hkl-pseudoaxis-common-eulerians.c | 2 +- src/hkl-pseudoaxis-common-hkl.c | 2 +- src/hkl-pseudoaxis-common-psi.c | 2 +- src/hkl-pseudoaxis-common-q.c | 2 +- src/hkl-pseudoaxis-common.c | 2 +- src/hkl-pseudoaxis-e4cv-hkl.c | 2 +- src/hkl-pseudoaxis-e4cv-psi.c | 2 +- src/hkl-pseudoaxis-e6c-hkl.c | 2 +- src/hkl-pseudoaxis-e6c-psi.c | 2 +- src/hkl-pseudoaxis-factory.c | 2 +- src/hkl-pseudoaxis-k4cv-hkl.c | 2 +- src/hkl-pseudoaxis-k4cv-psi.c | 2 +- src/hkl-pseudoaxis-k6c-hkl.c | 2 +- src/hkl-pseudoaxis-k6c-psi.c | 2 +- src/hkl-pseudoaxis.c | 2 +- src/hkl-quaternion.c | 2 +- src/hkl-sample.c | 2 +- src/hkl-source.c | 2 +- src/hkl-unit.c | 2 +- src/hkl-vector.c | 2 +- src/usage.c | 2 +- 59 files changed, 59 insertions(+), 59 deletions(-) commit 833c91a2e3c539d531cb523b3cdfb59323be2880 Author: Frédéric-Emmanuel PICCA Date: Mon Jan 4 17:24:19 2010 +0100 * update the NEWS file NEWS | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 4104f391c39dfa9061de2fd1e77e92e21d1da942 Author: Frédéric-Emmanuel PICCA Date: Mon Jan 4 17:13:35 2010 +0100 * fix for 64bit machines thanks Jens Krüger src/hkl-pseudoaxis-common-eulerians.c | 3 ++- src/hkl-pseudoaxis-common-q.c | 5 +++-- src/hkl-pseudoaxis-e4cv-hkl.c | 13 +++++++------ src/hkl-pseudoaxis-e6c-hkl.c | 23 ++++++++++++----------- src/hkl-pseudoaxis-k4cv-hkl.c | 13 +++++++------ src/hkl-pseudoaxis-k6c-hkl.c | 27 ++++++++++++++------------- 6 files changed, 45 insertions(+), 39 deletions(-) commit 97186a53710c8561b8beb65f05ea3614f3fbfe10 Author: Frédéric-Emmanuel PICCA Date: Mon Jan 4 17:02:34 2010 +0100 * fix the installation of the hkl.h files thanks Jens Krüger wscript | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commit 19102358345b9bb858a5aa9caa7f24cfc441a9f4 Author: Frédéric-Emmanuel PICCA Date: Mon Jan 4 16:49:18 2010 +0100 * need to fix test suit for -O0 vs -O2 ??? the test pass in -O0 mode but not in -O2 In fact the rounding is not the same between -O0 and -O2 so when I sort the geometries, there is a difference. Now I also check thah the distance between two geometries is greater than HKL_EPSILON to sort them. that way I avoid this rounding problem present on the 13th digits. src/hkl-geometry.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit eb5e5d34aa0aa77da882863e92a6a87d535b6cf6 Author: Frédéric-Emmanuel PICCA Date: Tue Dec 15 18:41:27 2009 +0100 * remove a valgrind warning test/hkl-test.c | 20 ++++++++++---------- 1 files changed, 10 insertions(+), 10 deletions(-) commit dc18121dc35034b4518b97e4ab99c8c8a38f1baf Author: Frédéric-Emmanuel PICCA Date: Tue Dec 15 18:30:01 2009 +0100 * now the pseudo axes test stop immediatly to avoid multiple error messages. Conflicts: test/hkl-test-pseudoaxis.c test/hkl-test-pseudoaxis.c | 25 +++++++++++++++++-------- 1 files changed, 17 insertions(+), 8 deletions(-) commit 5d2edcb2aa2cdc8add5d6bb88e061b8f361ee285 Author: Frédéric-Emmanuel PICCA Date: Tue Dec 15 17:56:21 2009 +0100 * improve the output of the test methods. Conflicts: test/hkl-test.c test/hkl-test.c | 29 ++++++++++++++++++++++++----- 1 files changed, 24 insertions(+), 5 deletions(-) commit 441ed39a55a2359af9d125c1c7476971120098a3 Author: Frédéric-Emmanuel PICCA Date: Tue Dec 15 17:30:01 2009 +0100 * solve a bug in the q pseudo axis. src/hkl-pseudoaxis-common-q.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 6165ae2823ed0e6a2f85d969faa0b808d11a190e Author: Frédéric-Emmanuel PICCA Date: Tue Dec 15 17:27:11 2009 +0100 * add a debug section in the pseudo_axis_auto part. src/hkl-pseudoaxis-auto.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit 44968237a7a11a6a6df0b176f40e358e530bc195 Author: Frédéric-Emmanuel PICCA Date: Tue Dec 15 15:23:45 2009 +0100 * be less strict when comparing double. test/hkl-test.h | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 85eae3b9ba4be48ad171c0d2da21d66fbe9b780e Author: Frédéric-Emmanuel PICCA Date: Tue Dec 15 15:22:54 2009 +0100 * better precision in the parameter fprintf method src/hkl-parameter.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 98fc860becb5af5979e8763bb33e661d30d6da7a Author: Picca Frederic-Emmanuel Date: Sun Jan 3 11:47:59 2010 +0100 * bench all engines of the k6c geometry test/bench.c | 118 +++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 88 insertions(+), 30 deletions(-) commit 27608d38b69d75bfa244f9deb6f7e3eb2c7a5874 Author: Picca Frederic-Emmanuel Date: Sun Jan 3 11:16:15 2010 +0100 * use fit instead of not_to_fit in HklParameter (less error prone) include/hkl/hkl-parameter.h | 8 +++----- src/hkl-axis.c | 2 +- src/hkl-lattice.c | 26 +++++++++++++------------- src/hkl-parameter.c | 10 +++++----- src/hkl-pseudoaxis-common-eulerians.c | 6 +++--- src/hkl-pseudoaxis-common-hkl.c | 6 +++--- src/hkl-pseudoaxis-common-psi.c | 8 ++++---- src/hkl-pseudoaxis-common-q.c | 6 +++--- src/hkl-pseudoaxis-e4cv-hkl.c | 14 +++++++------- src/hkl-pseudoaxis-e6c-hkl.c | 8 ++++---- src/hkl-pseudoaxis-k4cv-hkl.c | 8 ++++---- src/hkl-pseudoaxis-k6c-hkl.c | 8 ++++---- src/hkl-sample.c | 12 ++++++------ test/hkl-test-axis.c | 2 +- test/hkl-test-parameter.c | 32 ++++++++++++++++---------------- 15 files changed, 77 insertions(+), 79 deletions(-) commit c88d0783d6483d2b5300759d6559f2eff76d4db5 Author: Picca Frederic-Emmanuel Date: Sat Jan 2 18:02:45 2010 +0100 * typo test/hkl-test-pseudoaxis-e4cv.c | 20 ++++++++++---------- test/hkl-test-pseudoaxis-e6c.c | 24 ++++++++++++------------ test/hkl-test-pseudoaxis-k4cv.c | 20 ++++++++++---------- test/hkl-test-pseudoaxis-k6c.c | 18 +++++++++--------- 4 files changed, 41 insertions(+), 41 deletions(-) commit b9ff314b339a14d622921a7822559a4e2479e091 Author: Picca Frederic-Emmanuel Date: Sat Jan 2 13:47:15 2010 +0100 * now all tests are ok test/hkl-test-pseudoaxis.c | 21 ++++++++++++--------- test/main.c | 2 +- 2 files changed, 13 insertions(+), 10 deletions(-) commit bebd5e4b375416114aa8bf3510766c2bbf818e8f Author: Picca Frederic-Emmanuel Date: Sat Jan 2 13:36:46 2010 +0100 * stop when a test failed. test/hkl-test.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 8e7f5e9dbb6e34d3911eb3202520b1f1e52a5194 Author: Picca Frederic-Emmanuel Date: Sat Jan 2 13:34:46 2010 +0100 * restor a part of the tests src/hkl-pseudoaxis.c | 10 ++++++++-- test/hkl-test-pseudoaxis-e4cv.c | 6 +++--- test/hkl-test-pseudoaxis-e6c.c | 11 +++++------ test/hkl-test-pseudoaxis-k4cv.c | 8 ++++---- test/hkl-test-pseudoaxis-k6c.c | 10 +++++----- 5 files changed, 25 insertions(+), 20 deletions(-) commit afa3ffe47c9f6a8795c8a053bb265ef49058e1e3 Author: Picca Frederic-Emmanuel Date: Sat Jan 2 12:48:18 2010 +0100 add the support for flymake src/Makefile.am | 7 +++++++ test/Makefile.am | 7 +++++++ 2 files changed, 14 insertions(+), 0 deletions(-) commit 364260eb3596ed7e68665a8f2c38ddc13a8934ed Author: Picca Frederic-Emmanuel Date: Thu Dec 24 21:59:47 2009 +0100 * use HKL_GEOMETRY_TYPE_* instead of HKL_GEOMETRY_* include/hkl/hkl-geometry-factory.h | 10 +++++----- src/hkl-geometry-factory.c | 10 +++++----- src/hkl-pseudoaxis-factory.c | 10 +++++----- test/bench.c | 8 ++++---- test/hkl-test-pseudoaxis-e4cv.c | 24 ++++++++++++------------ test/hkl-test-pseudoaxis-e6c.c | 12 ++++++------ test/hkl-test-pseudoaxis-k4cv.c | 12 ++++++------ test/hkl-test-pseudoaxis-k6c.c | 16 ++++++++-------- test/hkl-test-pseudoaxis.c | 16 ++++++++-------- test/hkl-test-sample.c | 12 ++++++------ 10 files changed, 65 insertions(+), 65 deletions(-) commit c08d68fb4edf31ab36d2d9eb52db28024601a15c Author: Frédéric-Emmanuel PICCA Date: Fri Dec 11 16:59:52 2009 +0100 * WORK IN PROGRESS include/hkl/hkl-pseudoaxis.h | 26 +------ src/hkl-pseudoaxis-common-eulerians.c | 14 ++-- src/hkl-pseudoaxis-common-hkl.c | 10 --- src/hkl-pseudoaxis-common-psi.c | 3 - src/hkl-pseudoaxis-common-q.c | 6 -- src/hkl-pseudoaxis-e4cv-hkl.c | 3 - src/hkl-pseudoaxis-e6c-hkl.c | 6 -- src/hkl-pseudoaxis-k4cv-hkl.c | 12 --- src/hkl-pseudoaxis-k6c-hkl.c | 24 ------- src/hkl-pseudoaxis.c | 120 ++++++++++++++++++-------------- test/bench.c | 6 +- test/hkl-test-detector.c | 4 +- test/hkl-test-pseudoaxis-e4cv.c | 48 +++++++------- test/hkl-test-pseudoaxis-e6c.c | 20 +++--- test/hkl-test-pseudoaxis-k4cv.c | 17 +++-- test/hkl-test-pseudoaxis-k6c.c | 26 ++++---- test/hkl-test-pseudoaxis.c | 6 +- test/main.c | 2 +- 18 files changed, 142 insertions(+), 211 deletions(-) commit 07c848a8ba2dbf6e19289b637ba619a76ff2f277 Author: Frédéric-Emmanuel PICCA Date: Fri Dec 4 16:12:31 2009 +0100 * typo include/hkl/hkl-pseudoaxis.h | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 5d4825cc9b87ec92f47a47dbc4afb16d2ef0c219 Author: Frédéric-Emmanuel PICCA Date: Fri Dec 4 16:05:03 2009 +0100 * include geometry, detector and sample in the HklPseudoAxisList this is to prepare the HklPseudoAxisList -> HklDiffractometer. add the hkl_pseudo_axis_engine_list_init method to initialize thoses new members. include/hkl/hkl-pseudoaxis.h | 8 ++++++++ src/hkl-pseudoaxis.c | 14 ++++++++++++++ test/bench.c | 2 ++ test/hkl-test-pseudoaxis-e4cv.c | 12 ++++++++++++ test/hkl-test-pseudoaxis-e6c.c | 6 ++++++ test/hkl-test-pseudoaxis-k4cv.c | 6 ++++++ test/hkl-test-pseudoaxis-k6c.c | 7 +++++++ test/hkl-test-pseudoaxis.c | 31 ++++++++++++++++--------------- 8 files changed, 71 insertions(+), 15 deletions(-) commit a2aa2680ed99373f2984e6a0a63bcae0859689dc Author: Frédéric-Emmanuel PICCA Date: Fri Dec 4 14:51:04 2009 +0100 * optimisation, only one detector new/free for all pseudoaxes tests. test/hkl-test-pseudoaxis.c | 27 ++++++++++++++------------- 1 files changed, 14 insertions(+), 13 deletions(-) commit 786d21c44703b4e358a3f4b5b0c9ca6e77ffbe1e Author: Frédéric-Emmanuel PICCA Date: Fri Dec 4 14:36:50 2009 +0100 * use the detector factory in the test methods test/bench.c | 16 ++++++--- test/hkl-test-detector.c | 2 +- test/hkl-test-pseudoaxis-e4cv.c | 12 +++--- test/hkl-test-pseudoaxis-e6c.c | 6 ++-- test/hkl-test-pseudoaxis-k4cv.c | 6 ++-- test/hkl-test-pseudoaxis-k6c.c | 8 ++-- test/hkl-test-pseudoaxis.c | 2 +- test/hkl-test-sample.c | 77 ++++++++++++++++++++++++++------------- 8 files changed, 81 insertions(+), 48 deletions(-) commit 02eb9d91ee62074f3f14dad5b1a330e5a03e1274 Author: Frédéric-Emmanuel PICCA Date: Fri Dec 4 14:20:22 2009 +0100 * add the detector factory. include/Makefile.am | 3 +- include/hkl.h | 1 + include/hkl/hkl-detector-factory.h | 41 ++++++++++++++++++++++++++++++++++++ src/Makefile.am | 1 + src/hkl-detector-factory.c | 37 ++++++++++++++++++++++++++++++++ 5 files changed, 82 insertions(+), 1 deletions(-) commit 74613a034057088c430d03fa829d1c24d589b4b7 Author: Frédéric-Emmanuel PICCA Date: Fri Dec 4 13:50:42 2009 +0100 * remove a memory leak include/hkl/hkl-pseudoaxis.h | 2 +- src/hkl-pseudoaxis-common.c | 4 +++- src/hkl-pseudoaxis.c | 7 ++++++- 3 files changed, 10 insertions(+), 3 deletions(-) commit ffde8218cf281b9b096c340fe68fd426a5204db9 Author: Frédéric-Emmanuel PICCA Date: Fri Dec 4 13:22:04 2009 +0100 * do not modify the Holder from the HklDetector struct include/hkl/hkl-detector.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit df9658b076c0fc6524ea79841b6b3182a4b7766e Author: Picca Frederic-Emmanuel Date: Tue Nov 24 21:59:37 2009 +0100 * use the HklDetector new/free methods. NEWS | 4 ++ test/hkl-test-pseudoaxis-e4cv.c | 82 +++++++++++++++++++++++++-------------- test/hkl-test-pseudoaxis-e6c.c | 42 +++++++++++++------- test/hkl-test-pseudoaxis-k4cv.c | 38 ++++++++++++------ test/hkl-test-pseudoaxis-k6c.c | 54 ++++++++++++++++--------- test/hkl-test-pseudoaxis.c | 13 ++++-- 6 files changed, 153 insertions(+), 80 deletions(-) commit 06f05dcf2dc5dd605db6b52cded9023b9aabb160 Author: Picca Frederic-Emmanuel Date: Sun Nov 22 12:34:34 2009 +0100 * add the HklDetector constructor / destructor / attach to holder include/hkl/hkl-detector.h | 9 ++++++ src/hkl-detector.c | 42 +++++++++++++++++++++++++++++- test/hkl-test-detector.c | 61 ++++++++++++++++++++++++++++++++++++++------ 3 files changed, 103 insertions(+), 9 deletions(-) commit 942d52772b5c473358a8fef245cb3773336323aa Author: Picca Frederic-Emmanuel Date: Sun Nov 22 11:29:35 2009 +0100 * typo include/hkl/hkl-detector.h | 2 +- src/hkl-geometry-factory.c | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) commit 109bb176d86500dc1e011fc6cd974b55643c388e Author: Picca Frederic-Emmanuel Date: Sun Nov 8 10:00:19 2009 +0100 * add the autogen.sh script autogen.sh | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit 9c84b23ff8ff333ccd293863ba00389befa4b0d5 Author: Picca Frederic-Emmanuel Date: Tue Nov 3 22:17:47 2009 +0100 * do not stopthe test if an error occured. test/hkl-test.c | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-) commit 0497e74e6c06c01436a9ac0236370b2003ab93ae Author: Picca Frederic-Emmanuel Date: Tue Nov 3 22:17:24 2009 +0100 * correct the test suite test/hkl-test-pseudoaxis-k4cv.c | 6 ++++-- test/hkl-test-pseudoaxis-k6c.c | 6 +++--- 2 files changed, 7 insertions(+), 5 deletions(-) commit 6c183bb90c230f9a85dc4ec15a9be2959d8452b5 Author: Picca Frederic-Emmanuel Date: Sat Oct 24 14:29:10 2009 +0200 * add the autoconf/automake files .gitignore | 8 + AUTHORS | 1 + COPYING | 675 +++++++++++++++++++++++++++++++++++++++++++++++++++ ChangeLog | 2 + INSTALL | 302 +++++++++++++++++++++++ Makefile.am | 10 + configure.ac | 45 ++++ hkl.pc.in | 2 +- include/Makefile.am | 10 + src/Makefile.am | 43 ++++ src/Makefile.linux | 157 ------------ src/Makefile.vc | 90 ------- test/Makefile.am | 33 +++ wscript | 4 +- 14 files changed, 1132 insertions(+), 250 deletions(-) commit 504e27f5b84999bfc4f3bb92e6e92a1688b4c1a6 Merge: 36e3710 7876bc0 Author: Frédéric-Emmanuel PICCA Date: Fri Oct 23 11:33:39 2009 +0200 Merge branch 'next' commit 7876bc05c3f9daf0756116c4bd96e066f9a5205a Author: Frédéric-Emmanuel PICCA Date: Fri Oct 23 11:32:30 2009 +0200 * prepare for the 3.0.1 release. NEWS | 10 +++++++++- README | 4 ++-- TODO | 4 +--- wscript | 2 +- 4 files changed, 13 insertions(+), 7 deletions(-) commit 9b8f9b3ab90408d308956aa5da53659edd566a12 Author: Frédéric-Emmanuel PICCA Date: Fri Oct 23 11:11:20 2009 +0200 * add Maria Teresa as autor for the psi_constant mode. include/hkl/hkl-pseudoaxis-common-hkl.h | 1 + src/hkl-pseudoaxis-common-hkl.c | 1 + src/hkl-pseudoaxis-e4cv-hkl.c | 1 + src/hkl-pseudoaxis-e6c-hkl.c | 1 + src/hkl-pseudoaxis-k4cv-hkl.c | 1 + src/hkl-pseudoaxis-k6c-hkl.c | 1 + 6 files changed, 6 insertions(+), 0 deletions(-) commit 83ee906e0a6e35511d21cb2c7079709f938fa85c Author: Frédéric-Emmanuel PICCA Date: Wed Oct 14 16:35:32 2009 +0200 * now remove the non valid geometry from the geometryList a non valid geometry is a geometry with an axis values out of range. include/hkl/hkl-axis.h | 2 ++ include/hkl/hkl-geometry.h | 4 ++++ include/hkl/hkl-list.h | 6 ++++++ include/hkl/hkl-parameter.h | 2 ++ src/hkl-axis.c | 5 +++++ src/hkl-geometry.c | 29 +++++++++++++++++++++++++++-- src/hkl-parameter.c | 8 ++++++++ src/hkl-pseudoaxis.c | 1 + test/hkl-test-geometry.c | 23 +++++++++++++++++++++++ test/hkl-test-parameter.c | 16 ++++++++++++++++ 10 files changed, 94 insertions(+), 2 deletions(-) commit f141954ca418bc7af40f80399eb88dce80a8fdcf Author: Picca Frédéric-Emmanuel Date: Wed Sep 23 09:45:29 2009 +0200 * no need to put vertical in mode names for the vertical geometries src/hkl-pseudoaxis-e4cv-hkl.c | 4 ++-- src/hkl-pseudoaxis-k4cv-hkl.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) commit 644aabb27587fda190a37b0a2062c4920882a637 Author: Picca Frédéric-Emmanuel Date: Mon Sep 21 11:37:20 2009 +0200 * omega = +/-pi is also valid for the horizontal modes. src/hkl-pseudoaxis-e6c-hkl.c | 2 +- src/hkl-pseudoaxis-k6c-hkl.c | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) commit 8455255dc4e8d0a838199e60bad793c891da10c6 Author: Frédéric-Emmanuel PICCA Date: Tue Sep 22 17:35:09 2009 +0200 * forgot a fprintf test/hkl-test-pseudoaxis-e4cv.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) commit fd77ff95f115357f87bdab9f2b18126215108236 Author: Frédéric-Emmanuel PICCA Date: Tue Sep 22 17:28:08 2009 +0200 * typo src/hkl-pseudoaxis-common-hkl.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit 13c2acacabcc672d2bd92c4d097f18560dfc43dc Author: Frédéric-Emmanuel PICCA Date: Tue Sep 22 17:26:35 2009 +0200 * better presentation of the PseduoAxis fprintf method src/hkl-pseudoaxis.c | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-) commit a2cf58268e983b602e43f7e35730754fff4e83c4 Author: Frédéric-Emmanuel PICCA Date: Tue Sep 22 17:26:12 2009 +0200 * add a test method for the psi_constant_vertical mode nd correct the init method src/hkl-pseudoaxis-common-hkl.c | 10 +++--- test/hkl-test-pseudoaxis-e4cv.c | 65 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 5 deletions(-) commit 2211fe2f1d51309f355f4306718af98e4e1534ab Author: Frédéric-Emmanuel PICCA Date: Tue Sep 22 10:12:42 2009 +0200 * indent nothing more include/hkl/hkl-pseudoaxis-common-hkl.h | 12 ++++---- src/hkl-pseudoaxis-common-hkl.c | 46 +++++++++++++++++------------- src/hkl-pseudoaxis-common-psi.c | 34 +++++++++++----------- src/hkl-pseudoaxis-e4cv-hkl.c | 31 +++++--------------- src/hkl-pseudoaxis-e6c-hkl.c | 28 +++++-------------- src/hkl-pseudoaxis-k4cv-hkl.c | 17 +++--------- src/hkl-pseudoaxis-k6c-hkl.c | 45 +++++++++--------------------- 7 files changed, 82 insertions(+), 131 deletions(-) commit d3ad49784201fbdc3b8889869c9f431447c71b90 Author: Frédéric-Emmanuel PICCA Date: Tue Sep 22 10:08:59 2009 +0200 * correct the psi_constant init method include/hkl/hkl-pseudoaxis-common-hkl.h | 4 ++-- src/hkl-pseudoaxis-common-hkl.c | 13 +++++++++---- 2 files changed, 11 insertions(+), 6 deletions(-) commit f5c83725f3cc354566f13b7501f0f6896d4f893b Author: teresa Date: Mon Sep 21 14:59:05 2009 +0200 "Again psi constant (4)' include/hkl/hkl-pseudoaxis-common-hkl.h | 25 +++++++ src/hkl-pseudoaxis-common-hkl.c | 114 ++++++++++++++++++++++++++++++- src/hkl-pseudoaxis-e4cv-hkl.c | 27 +++++++ src/hkl-pseudoaxis-e6c-hkl.c | 27 +++++++ src/hkl-pseudoaxis-k4cv-hkl.c | 30 ++++++++ src/hkl-pseudoaxis-k6c-hkl.c | 28 ++++++++ 6 files changed, 250 insertions(+), 1 deletions(-) commit 105a5f062f42d9e303c6ad502bfd1a4804595e65 Author: teresa Date: Mon Sep 14 14:21:31 2009 +0200 Change of the explanation of the bissector horizontal method (and some small other changes)' Documentation/user-guide.txt | 48 +++++++++++++++++++++++++++-------------- 1 files changed, 31 insertions(+), 17 deletions(-) commit 71b934ee4264b937c80b0cebe4e2007e40bd72a6 Author: Frédéric-Emmanuel PICCA Date: Fri Sep 11 16:11:06 2009 +0200 * add more documentation Documentation/user-guide.txt | 87 +++++++++++++++++++++++++++++++++++++++++- 1 files changed, 85 insertions(+), 2 deletions(-) commit df3db041c4742173ae9f953486442c26bdf2d9fb Author: Frédéric-Emmanuel PICCA Date: Thu Sep 10 17:56:28 2009 +0200 * still working on the pseudo axis tutorial Documentation/user-guide.txt | 31 +++++++++++++++++++++++++++++++ 1 files changed, 31 insertions(+), 0 deletions(-) commit cd96c35997040addfdd3441fd930c3eec3939b47 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 10 17:56:09 2009 +0200 * correction thanks to teresa Documentation/user-guide.txt | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit bf32ee581d7b55f6df2771ac205e8d8815518ab6 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 10 09:49:28 2009 +0200 * start working on the hkl user-guide. Documentation/user-guide.txt | 196 +++++++++++++++++++++++++++++++++++++++++- 1 files changed, 195 insertions(+), 1 deletions(-) commit fa5c98d2f47d8a051de16921700c5cdfce26a8d6 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 10 09:54:59 2009 +0200 * post merge version increment NEWS | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 6e5215cc770ddb95eb2ae68c8d5247af33efef6d Author: System User Date: Thu Jul 16 14:43:06 2009 +0200 * switch to waf 1.5.8 to prepare the windows compilation. src/wscript_build | 16 ++++++++-------- test/wscript_build | 40 +++++++++++++++++++++------------------- waf | Bin 75487 -> 84763 bytes wscript | 12 +++--------- 4 files changed, 32 insertions(+), 36 deletions(-) commit 36e37104c318d56670e42e1f578a4d0ff81e357e Merge: af1efa9 0717452 Author: System User Date: Wed Jul 15 18:52:43 2009 +0200 Merge branch 'next' Conflicts: README include/hkl/HKLException.h include/hkl/HolderList.h include/hkl/affinement.h include/hkl/affinement_simplex.h include/hkl/affinementlist.h include/hkl/axe.h include/hkl/axe_rotation.h include/hkl/axefactory.h include/hkl/constant.h include/hkl/convenience.h include/hkl/derived_mode.h include/hkl/derived_pseudoaxeengine.h include/hkl/diffractometer.h include/hkl/diffractometerfactory.h include/hkl/eulerian4C_vertical_diffractometer.h include/hkl/eulerian4C_vertical_geometry.h include/hkl/eulerian4C_vertical_mode.h include/hkl/eulerian4C_vertical_pseudoaxeengine.h include/hkl/eulerian6C_diffractometer.h include/hkl/eulerian6C_geometry.h include/hkl/eulerian6C_mode.h include/hkl/eulerian6C_pseudoaxeengine.h include/hkl/fitparameter.h include/hkl/fitparameterlist.h include/hkl/geometry.h include/hkl/geometry_kappa.h include/hkl/hklobject.h include/hkl/holder.h include/hkl/interval.h include/hkl/kappa4C_vertical_diffractometer.h include/hkl/kappa4C_vertical_geometry.h include/hkl/kappa4C_vertical_mode.h include/hkl/kappa4C_vertical_pseudoaxeengine.h include/hkl/kappa6C_diffractometer.h include/hkl/kappa6C_geometry.h include/hkl/kappa6C_mode.h include/hkl/kappa6C_pseudoaxeengine.h include/hkl/lattice.h include/hkl/mode.h include/hkl/modelist.h include/hkl/mymap.h include/hkl/object.h include/hkl/observer.h include/hkl/parameter.h include/hkl/parameterlist.h include/hkl/portability.h include/hkl/pseudoaxe.h include/hkl/pseudoaxeengine.h include/hkl/pseudoaxeenginelist.h include/hkl/pseudoaxelist.h include/hkl/quaternion.h include/hkl/range.h include/hkl/reflection.h include/hkl/reflection_monocrystal.h include/hkl/reflectionfactory.h include/hkl/reflectionlist.h include/hkl/sample.h include/hkl/sample_monocrystal.h include/hkl/samplefactory.h include/hkl/samplelist.h include/hkl/source.h include/hkl/strbuf.h include/hkl/svector.h include/hkl/twoC_vertical_diffractometer.h include/hkl/twoC_vertical_geometry.h include/hkl/twoC_vertical_mode.h include/hkl/twoC_vertical_pseudoaxeengine.h include/hkl/value.h src/HKLException.cpp src/affinement.cpp src/affinement_simplex.cpp src/affinementlist.cpp src/axe.cpp src/axe_rotation.cpp src/axefactory.cpp src/constant.cpp src/convenience.cpp src/diffractometer.cpp src/diffractometerfactory.cpp src/eulerian4C_vertical_diffractometer.cpp src/eulerian4C_vertical_geometry.cpp src/eulerian4C_vertical_mode.cpp src/eulerian4C_vertical_pseudoaxeengine.cpp src/eulerian6C_diffractometer.cpp src/eulerian6C_geometry.cpp src/eulerian6C_pseudoaxeengine.cpp src/fitparameter.cpp src/fitparameterlist.cpp src/geometry.cpp src/geometry_kappa.cpp src/hklobject.cpp src/holder.cpp src/interval.cpp src/kappa4C_vertical_diffractometer.cpp src/kappa4C_vertical_geometry.cpp src/kappa4C_vertical_pseudoaxeengine.cpp src/kappa6C_diffractometer.cpp src/kappa6C_geometry.cpp src/lattice.cpp src/mode.cpp src/modelist.cpp src/object.cpp src/observer.cpp src/parameter.cpp src/parameterlist.cpp src/pseudoaxe.cpp src/pseudoaxeengine.cpp src/pseudoaxeenginelist.cpp src/pseudoaxelist.cpp src/quaternion.cpp src/range.cpp src/reflection.cpp src/reflection_monocrystal.cpp src/reflectionfactory.cpp src/reflectionlist.cpp src/sample.cpp src/sample_monocrystal.cpp src/samplefactory.cpp src/samplelist.cpp src/source.cpp src/strbuf.cpp src/svector.cpp src/twoC_vertical_diffractometer.cpp src/twoC_vertical_geometry.cpp src/twoC_vertical_mode.cpp src/twoC_vertical_pseudoaxeengine.cpp src/value.cpp test/affinement_simplex_test.cpp test/affinement_simplex_test.h test/axe_rotation_test.cpp test/axe_rotation_test.h test/diffractometer_eulerian4C_test.cpp test/diffractometer_eulerian4C_test.h test/diffractometer_kappa4C_test.cpp test/diffractometer_kappa4C_test.h test/diffractometer_kappa6C_test.cpp test/diffractometer_kappa6C_test.h test/diffractometer_test.cpp test/diffractometer_test.h test/diffractometer_twoC_test.cpp test/diffractometer_twoC_test.h test/fitparameter_test.cpp test/fitparameter_test.h test/geometry_eulerian4C_test.cpp test/geometry_eulerian4C_test.h test/geometry_eulerian6C_test.cpp test/geometry_eulerian6C_test.h test/geometry_kappa4C_test.cpp test/geometry_kappa4C_test.h test/geometry_kappa6C_test.cpp test/geometry_kappa6C_test.h test/geometry_test.cpp test/geometry_test.h test/geometry_twoC_test.cpp test/geometry_twoC_test.h test/hklobject_test.cpp test/hklobject_test.h test/holder_test.cpp test/holder_test.h test/holderlist_test.cpp test/holderlist_test.h test/interval_test.cpp test/interval_test.h test/lattice_test.cpp test/lattice_test.h test/libHKL_test.cpp test/main.cpp test/mode_eulerian4C_test.cpp test/mode_eulerian4C_test.h test/mode_kappa4C_test.cpp test/mode_kappa4C_test.h test/mode_kappa6C_test.cpp test/mode_kappa6C_test.h test/mode_twoC_test.cpp test/mode_twoC_test.h test/object_test.cpp test/object_test.h test/parameter_test.cpp test/parameter_test.h test/pseudoaxe_eulerian4C_test.cpp test/pseudoaxe_eulerian4C_test.h test/pseudoaxe_eulerian6C_test.cpp test/pseudoaxe_eulerian6C_test.h test/pseudoaxe_kappa4C_test.cpp test/pseudoaxe_kappa4C_test.h test/pseudoaxe_kappa6C_test.cpp test/pseudoaxe_kappa6C_test.h test/pseudoaxe_twoC_test.cpp test/pseudoaxe_twoC_test.h test/quaternion_test.cpp test/quaternion_test.h test/range_test.cpp test/range_test.h test/reflection_test.cpp test/reflection_test.h test/reflectionlist_test.cpp test/reflectionlist_test.h test/sample_test.cpp test/sample_test.h test/samplelist_test.cpp test/samplelist_test.h test/source_test.cpp test/source_test.h test/svecmat_test.cpp test/svecmat_test.h test/value_test.cpp test/value_test.h commit 0717452972b752f34ce8a0ab47ffada980f9bf72 Author: Picca Frédéric-Emmanuel Date: Fri Jun 5 16:42:27 2009 +0200 * better initialization of the Psi pseudoAxisEngine parameters src/hkl-pseudoaxis-common-psi.c | 29 +++++++++++++++-------------- 1 files changed, 15 insertions(+), 14 deletions(-) commit 4c2a571f8985e7032333b09dda46708854b1ec19 Author: Frédéric-Emmanuel PICCA Date: Fri Jun 5 11:50:04 2009 +0200 * add the q2 pseudo axis engine for the 6 circles geometries. include/hkl/hkl-pseudoaxis-common-q.h | 1 + src/hkl-pseudoaxis-common-q.c | 129 +++++++++++++++++++++++++++++++++ src/hkl-pseudoaxis-factory.c | 2 + test/hkl-test-pseudoaxis-e6c.c | 63 ++++++++++++++++ test/hkl-test-pseudoaxis-k6c.c | 63 ++++++++++++++++ 5 files changed, 258 insertions(+), 0 deletions(-) commit d3d7541260b2f88eb4165fca5477a3d9b46690a6 Author: Frédéric-Emmanuel PICCA Date: Fri Jun 5 11:49:13 2009 +0200 * move around comments src/hkl-pseudoaxis-common-q.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit 6b508c9263a1709a9811407008a90f1a015d8c46 Author: Frédéric-Emmanuel PICCA Date: Fri Jun 5 11:48:55 2009 +0200 * add also the q test in the k4c geometry test/hkl-test-pseudoaxis-k4cv.c | 57 +++++++++++++++++++++++++++++++++++++++ 1 files changed, 57 insertions(+), 0 deletions(-) commit 427c663d6b1844756ae57c028a5501596f966e11 Author: Frédéric-Emmanuel PICCA Date: Fri Jun 5 09:53:04 2009 +0200 ** add the q HklPseudoAxisEngine for e4cv and k4cv geometries. include/hkl/hkl-pseudoaxis-common-q.h | 29 +++++++ src/hkl-pseudoaxis-common-q.c | 130 +++++++++++++++++++++++++++++++++ src/hkl-pseudoaxis-factory.c | 3 + test/hkl-test-pseudoaxis-e4cv.c | 56 ++++++++++++++ 4 files changed, 218 insertions(+), 0 deletions(-) commit e7955991bac2ae40506daf7f9698ba50dfd6fbe8 Author: Frédéric-Emmanuel PICCA Date: Fri Jun 5 09:22:31 2009 +0200 * add the get_wavelength to the HklSource class. include/hkl/hkl-source.h | 2 ++ src/hkl-source.c | 5 +++++ test/hkl-test-source.c | 12 ++++++++++++ 3 files changed, 19 insertions(+), 0 deletions(-) commit 626b4896ade2cb0cbd9e1261e642f875c94ee0d0 Author: Frédéric-Emmanuel PICCA Date: Thu Jun 4 11:42:21 2009 +0200 * update the "eulerians" pseudo axis test method. test/hkl-test-pseudoaxis-k4cv.c | 26 ++++++++++++++------------ test/hkl-test-pseudoaxis-k6c.c | 25 ++++++++++++++----------- test/hkl-test-pseudoaxis.c | 3 +++ 3 files changed, 31 insertions(+), 23 deletions(-) commit 23117b990d103fd164b21910f84228d2498b4a56 Author: Frédéric-Emmanuel PICCA Date: Thu Jun 4 10:10:54 2009 +0200 * first working version of the cut problem include/hkl/hkl-geometry.h | 2 + src/hkl-geometry.c | 66 ++++++++++++++++++++++++++++++++++++++++++++ src/hkl-pseudoaxis.c | 1 + test/hkl-test-geometry.c | 35 +++++++++++++++++++++++ 4 files changed, 104 insertions(+), 0 deletions(-) commit d7f4f0a85063a8a93677e4bb9220b47e1ddc500c Author: Frédéric-Emmanuel PICCA Date: Wed Jun 3 18:03:24 2009 +0200 * add the HklAxis get_max method include/hkl/hkl-axis.h | 2 ++ include/hkl/hkl-parameter.h | 2 ++ src/hkl-axis.c | 5 +++++ src/hkl-parameter.c | 6 ++++++ 4 files changed, 15 insertions(+), 0 deletions(-) commit dfe3916cb0b0fdd4a0ad384005f5ee2fe5319510 Author: Frédéric-Emmanuel PICCA Date: Wed Jun 3 16:28:49 2009 +0200 * add the HklAxis set_value_smallest_in_range method with test. include/hkl/hkl-axis.h | 2 ++ src/hkl-axis.c | 13 +++++++++++++ test/hkl-test-axis.c | 39 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 0 deletions(-) commit 1f0255022c3b79f7df038159471e8a6b5f875e9f Author: Frédéric-Emmanuel PICCA Date: Wed Jun 3 16:08:15 2009 +0200 * add the extern keyword in the HklInterval struct include/hkl/hkl-interval.h | 30 +++++++++++++++--------------- 1 files changed, 15 insertions(+), 15 deletions(-) commit 0fb60655442844d20c02b7b8da802844df856fb8 Author: Frédéric-Emmanuel PICCA Date: Wed Jun 3 16:07:44 2009 +0200 * remove a bug in the HklAxis is_value_compatible_with_range. include/hkl/hkl-axis.h | 2 ++ include/hkl/hkl-interval.h | 2 ++ src/hkl-axis.c | 38 +++++++++++++++++++++++--------------- src/hkl-interval.c | 7 +++++++ test/hkl-test-axis.c | 35 +++++++++++++++++++++++++++++++++++ 5 files changed, 69 insertions(+), 15 deletions(-) commit 0679e0da81c06d926820daed8dd2d811a760f8aa Author: Frédéric-Emmanuel PICCA Date: Tue Jun 2 15:18:19 2009 +0200 * more axis methods. get_name, get/set_changed and _get_value. include/hkl/hkl-axis.h | 10 ++++++- src/hkl-axis.c | 58 ++++++++++++++++++++++++++++------------- src/hkl-geometry.c | 30 +++++++++++----------- src/hkl-pseudoaxis-auto.c | 4 +- src/hkl-pseudoaxis-factory.c | 12 ++++---- src/hkl-sample.c | 2 +- test/hkl-test-geometry.c | 16 ++++++------ 7 files changed, 80 insertions(+), 52 deletions(-) commit 66a1fa468f7366393266bab31e2f54e08612cd0b Author: Picca Frédéric-Emmanuel Date: Sun May 24 14:18:23 2009 +0200 * add the hkl.h files. Just #include to use the hkl library include/hkl.h | 5 +++++ test/bench.c | 5 +---- test/hkl-test-axis.c | 5 +---- test/hkl-test-detector.c | 4 +--- test/hkl-test-geometry.c | 4 +--- test/hkl-test-interval.c | 4 +--- test/hkl-test-lattice.c | 2 +- test/hkl-test-matrix.c | 5 +---- test/hkl-test-parameter.c | 4 +--- test/hkl-test-pseudoaxis-e4cv.c | 5 +---- test/hkl-test-pseudoaxis-e6c.c | 5 +---- test/hkl-test-pseudoaxis-k4cv.c | 5 +---- test/hkl-test-pseudoaxis-k6c.c | 5 +---- test/hkl-test-pseudoaxis.c | 3 +-- test/hkl-test-quaternion.c | 6 +----- test/hkl-test-sample.c | 5 +---- test/hkl-test-source.c | 4 +--- test/hkl-test-vector.c | 5 +---- test/hkl-test.c | 5 +---- wscript | 1 + 20 files changed, 24 insertions(+), 63 deletions(-) commit c6f782d0b1499f2ca8f276fab4853c68ba540b41 Author: Picca Frédéric-Emmanuel Date: Sat May 23 22:05:36 2009 +0200 * add the sample set_name method include/hkl/hkl-sample.h | 2 ++ src/hkl-sample.c | 10 ++++++++++ 2 files changed, 12 insertions(+), 0 deletions(-) commit 666d953cf77cf9629a55c7b5d9979cf19a828e44 Author: Picca Frédéric-Emmanuel Date: Sat May 23 14:46:09 2009 +0200 * we can create a sample reflection with null vector src/hkl-sample.c | 5 +---- 1 files changed, 1 insertions(+), 4 deletions(-) commit 6f348abff9ec1934943588b079c9f4abbc6effb1 Author: Picca Frédéric-Emmanuel Date: Sat May 23 14:45:42 2009 +0200 * bug in the get reflection parameter check src/hkl-sample.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit 787b32c8b122376cc35b2ea3488f34f8029227a0 Author: Picca Frédéric-Emmanuel Date: Sat May 23 14:45:12 2009 +0200 * do not add the reflection if it is NULL src/hkl-sample.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 413fbe337800a0ef18295cc15b17b0bd5d126cfb Author: Picca Frédéric-Emmanuel Date: Sat May 23 14:44:45 2009 +0200 * remove a valgrind warning. src/hkl-sample.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 1dffbcccdad87a3d1450cf382d603711d761b95e Author: Picca Frédéric-Emmanuel Date: Sat May 23 14:44:12 2009 +0200 * no more assert in the vector angle method src/hkl-vector.c | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-) commit 5526c2d9273725e329c89524174982aae92687a9 Author: Picca Frédéric-Emmanuel Date: Fri May 15 16:20:58 2009 +0200 * now the HklSample compute_UB matrix update also the UB matrix !!! src/hkl-sample.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit c4ee40c1e0df7235618a4ebc075cb71f5dab2ba5 Author: Picca Frédéric-Emmanuel Date: Thu May 14 16:18:33 2009 +0200 * print a backtrace when an assert failed. include/hkl/hkl-macros.h | 12 ++++++++++++ src/hkl-quaternion.c | 5 ++--- src/hkl-vector.c | 5 ++--- src/usage.c | 17 +++++++++++++++++ 4 files changed, 33 insertions(+), 6 deletions(-) commit 8fadc24c74696d71e79a1d2ac28e3fb971095340 Author: Picca Frédéric-Emmanuel Date: Thu May 14 15:19:04 2009 +0200 * add the HklSampleList fprintf method include/hkl/hkl-sample.h | 2 ++ src/hkl-sample.c | 7 +++++++ 2 files changed, 9 insertions(+), 0 deletions(-) commit 22b15be7816c910237d81400cead68450b0d3bc3 Author: Picca Frédéric-Emmanuel Date: Thu May 14 14:52:46 2009 +0200 * split the factory.h files into .c and .h part include/hkl/hkl-geometry-factory.h | 107 +--------------------------- include/hkl/hkl-pseudoaxis-factory.h | 107 +--------------------------- src/hkl-geometry-factory.c | 132 ++++++++++++++++++++++++++++++++++ src/hkl-pseudoaxis-factory.c | 130 +++++++++++++++++++++++++++++++++ test/hkl-test-pseudoaxis-e4cv.c | 1 + test/hkl-test-pseudoaxis-e6c.c | 1 + test/hkl-test-pseudoaxis-k4cv.c | 1 + test/hkl-test-pseudoaxis-k6c.c | 1 + 8 files changed, 269 insertions(+), 211 deletions(-) commit 391b0fef4efb6a3774f50d581ef95f5e7edd3477 Author: Picca Frédéric-Emmanuel Date: Thu May 14 10:13:31 2009 +0200 * add an rpath in the test part instead of modifing the LD_LIBRARY_PATH test/wscript_build | 2 ++ wscript | 4 ---- 2 files changed, 2 insertions(+), 4 deletions(-) commit 746f612b1184c8f3e2923474f6a32e239d694425 Author: Picca Frédéric-Emmanuel Date: Thu May 14 10:08:08 2009 +0200 * add the clear and test method to the HklSampleList include/hkl/hkl-sample.h | 2 ++ src/hkl-sample.c | 9 +++++++++ test/hkl-test-sample.c | 25 +++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 0 deletions(-) commit 0a63cf49d6fda50cc8719f1eea00c3baec9f98ac Author: Picca Frédéric-Emmanuel Date: Thu May 14 09:58:10 2009 +0200 * update the HklSample get_reflection test method test/hkl-test-sample.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit b89520c560dc86a47832406a0c5145361170c081 Author: Picca Frédéric-Emmanuel Date: Thu May 14 09:56:36 2009 +0200 * add lifting detector mode with different sample axes. - e6c omega, phi, mu - k6c komega, kphi, mu src/hkl-pseudoaxis-e6c-hkl.c | 24 ++++++++++++++++++++++-- src/hkl-pseudoaxis-k6c-hkl.c | 24 ++++++++++++++++++++++-- 2 files changed, 44 insertions(+), 4 deletions(-) commit f850c1def2baa1de27760129186cf7dc0935f4c1 Author: Picca Frédéric-Emmanuel Date: Thu May 14 09:50:52 2009 +0200 * add the SampleReflection print in the Sample fprintf method include/hkl/hkl-sample.h | 2 +- src/hkl-sample.c | 33 ++++++++++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 2 deletions(-) commit 866faed1fbc38cb738941467ce6633dfe9618331 Author: Picca Frédéric-Emmanuel Date: Thu May 14 09:36:56 2009 +0200 * remove a memory leak in the geometry multiplication include/hkl/hkl-pseudoaxis-factory.h | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 2b2b4ffa125d0bf6df00dc27cc80f2f8ad7de259 Author: Picca Frédéric-Emmanuel Date: Thu Apr 23 14:25:34 2009 +0200 * no more restriction in the eulerian kappa conversion src/hkl-pseudoaxis-common-eulerians.c | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-) commit f14f7dec81fd31f9eed366a7f76a837707162fa9 Author: Picca Frédéric-Emmanuel Date: Thu Apr 23 14:25:12 2009 +0200 * remove a bug in the eulerian kappa conversion src/hkl-pseudoaxis-common-eulerians.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) commit 3c654e5091f43849b8d392551e14df8ab4df9218 Author: Picca Frédéric-Emmanuel Date: Thu Apr 23 14:23:53 2009 +0200 * the axis distance is equal to the real distance not the orthodromic src/hkl-geometry.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit b539a9bf177daf122c787d07652c80b98b3adbb5 Author: Picca Frédéric-Emmanuel Date: Thu Apr 23 09:25:19 2009 +0200 * print the geometries with more digits. src/hkl-geometry.c | 11 ++++++----- 1 files changed, 6 insertions(+), 5 deletions(-) commit 1c671cacd687933d61fa297667952da6dfd58763 Author: Picca Frédéric-Emmanuel Date: Thu Apr 23 09:17:09 2009 +0200 * wrong test_sector criterium src/hkl-pseudoaxis-auto.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) commit 85c3cbb2e67983aff2df4f86740a3727400452f0 Author: Picca Frédéric-Emmanuel Date: Fri Apr 17 11:13:08 2009 +0200 * add get_value_closest_unit include/hkl/hkl-axis.h | 6 ++++++ include/hkl/hkl-parameter.h | 2 ++ src/hkl-axis.c | 18 ++++++++++++++++++ src/hkl-parameter.c | 9 +++++++++ src/hkl-pseudoaxis-auto.c | 11 +++++++++-- src/wscript_build | 3 ++- 6 files changed, 46 insertions(+), 3 deletions(-) commit 4f03fe73063080531fd945cb415817cbbf059186 Author: System User Date: Fri Apr 10 19:29:42 2009 +0200 * smae things for an all geometry. include/hkl/hkl-geometry.h | 2 ++ src/hkl-geometry.c | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 0 deletions(-) commit 608d115603d416815d7457c3422e429c9d66c741 Author: System User Date: Fri Apr 10 19:28:59 2009 +0200 * add the hklAxis cut code. now with get_value_closest you can get the angle of the Axis1 closest to the axis2 position taking into account the axis1 range. include/hkl/hkl-axis.h | 6 +++ src/hkl-axis.c | 89 ++++++++++++++++++++++++++++++++++++++++++++++++ test/hkl-test-axis.c | 29 +++++++++++++++ 3 files changed, 124 insertions(+), 0 deletions(-) commit 3ff90643d91490e423620c9a1d0e325084cd441a Author: System User Date: Fri Apr 10 19:26:54 2009 +0200 * add the HklParameter set_range methodes. include/hkl/hkl-parameter.h | 4 ++++ src/hkl-parameter.c | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 0 deletions(-) commit 776bafd497c755b43b8987e0ce3d6992cca17be0 Author: System User Date: Fri Apr 10 18:15:40 2009 +0200 * add the interval length method include/hkl/hkl-interval.h | 2 ++ src/hkl-interval.c | 5 +++++ test/hkl-test-interval.c | 16 ++++++++++++++++ 3 files changed, 23 insertions(+), 0 deletions(-) commit 918ea7febc6cfbea081c6fad11ab4250c5f63c87 Author: System User Date: Fri Apr 10 12:44:38 2009 +0200 * add the orthodromic geometry distance computation use it in the HklGeometryList add method. include/hkl/hkl-geometry.h | 2 ++ src/hkl-geometry.c | 26 +++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 1 deletions(-) commit 99692680c3c0c4cddcc7e260cb1756ce672f7db3 Author: System User Date: Thu Apr 9 18:09:56 2009 +0200 * now the geometry multiplication is working include/hkl/hkl-geometry.h | 6 +- include/hkl/hkl-pseudoaxis-factory.h | 69 ++++++++++++ src/hkl-geometry.c | 11 +- src/hkl-pseudoaxis-k6c-hkl.c | 190 ++-------------------------------- src/hkl-pseudoaxis.c | 1 + 5 files changed, 89 insertions(+), 188 deletions(-) commit 05916707d0f31327857498e3ddae847a57f2affa Author: Frédéric-Emmanuel PICCA Date: Wed Apr 8 10:43:14 2009 +0200 * add a multiply function to add special sytmetries to a diffractometer. for now only the bissector vertical system. include/hkl/hkl-geometry.h | 5 +++++ src/hkl-geometry.c | 14 ++++++++++++++ src/hkl-pseudoaxis-k6c-hkl.c | 37 ++++++++++++++++++++++++++++++++++++- 3 files changed, 55 insertions(+), 1 deletions(-) commit ef5f8240879e26cdf5905d19a31ec9e235e2d379 Author: Frédéric-Emmanuel PICCA Date: Mon Apr 6 10:40:07 2009 +0200 * reoarganize a little bit the hkl-test-pseudoAxis methods test/hkl-test-pseudoaxis.c | 9 ++++----- 1 files changed, 4 insertions(+), 5 deletions(-) commit 912953c5f204bc62ae9d03ef9614a23e3e42b1f8 Author: System User Date: Fri Apr 3 15:52:14 2009 +0200 * update the bissector modes for the kappa geometries. src/hkl-pseudoaxis-k4cv-hkl.c | 4 ++-- src/hkl-pseudoaxis-k6c-hkl.c | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) commit 96611cab46574f0f2bfc6f33a0b22c2515d5d718 Author: System User Date: Wed Apr 1 09:57:06 2009 +0200 * add the HklAxis get/set_value_unit. include/hkl/hkl-axis.h | 4 ++++ src/hkl-axis.c | 11 +++++++++++ 2 files changed, 15 insertions(+), 0 deletions(-) commit 4dbcdb93cb8a8ff5ce857133b83d89058802639f Author: Frédéric-Emmanuel PICCA Date: Fri Mar 27 17:12:08 2009 +0100 * sort the geometries after an hkl_pseudo_axis_engine_setter. src/hkl-pseudoaxis.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 8b3b1561b55eb119a28f389e2dd91d088d5af9a9 Author: Frédéric-Emmanuel PICCA Date: Fri Mar 27 17:11:13 2009 +0100 * add the hkl_geometry_list_fprintf method use it in the hkl_pseudo_axis_engine_fprintf method. include/hkl/hkl-geometry.h | 3 +++ src/hkl-geometry.c | 41 +++++++++++++++++++++++++++++++++++++++++ src/hkl-pseudoaxis.c | 41 +++++------------------------------------ 3 files changed, 49 insertions(+), 36 deletions(-) commit af98c37c2b39a37cba7901349c1374dbbf85b53b Author: Frédéric-Emmanuel PICCA Date: Fri Mar 27 17:10:06 2009 +0100 * typo src/hkl-geometry.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit 3ecc49b8811057581a44edb01d88ebc97ac494dd Author: Frédéric-Emmanuel PICCA Date: Fri Mar 27 17:08:54 2009 +0100 * remove a bug in the sort method src/hkl-geometry.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) commit 52c101ee34917220dd2076f113954b02205061d5 Author: Frédéric-Emmanuel PICCA Date: Fri Mar 27 15:42:46 2009 +0100 * add the hkl_geometry_list_sort method include/hkl/hkl-geometry.h | 1 + src/hkl-geometry.c | 40 +++++++++++++++++++++++++++++++++++++--- test/hkl-test-geometry.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+), 3 deletions(-) commit 41270cb713360307a49e6425b39d75373bb80b42 Author: Picca Frédéric-Emmanuel Date: Sat Mar 21 19:05:07 2009 +0100 * typo include/hkl/hkl-geometry-factory.h | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit f1abf875bdc99748d7244594fe0e5193cbd5d387 Author: Picca Frédéric-Emmanuel Date: Sat Mar 21 14:03:54 2009 +0100 * add the documentation for the HklGeometry Documentation/user-guide.txt | 146 +++++++++++++++++++++++++++++++++++------- 1 files changed, 122 insertions(+), 24 deletions(-) commit 6f581645f736f37b6e28ddee1beb1a5c0fcf9c07 Author: Picca Frédéric-Emmanuel Date: Thu Mar 19 12:14:19 2009 +0100 * explain in the userg-guide howto build and hack hkl Documentation/user-guide.txt | 69 ++++++++++++++++++++++++++++++----------- 1 files changed, 50 insertions(+), 19 deletions(-) commit a789dd7b34bc9d9b0bdd06cb92f1c08aaa6eeb1f Author: Picca Frédéric-Emmanuel Date: Thu Mar 19 11:23:18 2009 +0100 * update the TODO and the README files explain how to compile with waf and the roadmap. README | 27 +++++++------------- TODO | 83 ++++++++++++++++----------------------------------------------- 2 files changed, 31 insertions(+), 79 deletions(-) commit 01f32726bfd2daf70e0e95f5a619bc9ab6e263b9 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 18 16:41:08 2009 +0100 * update the NEWS file NEWS | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 51 insertions(+), 1 deletions(-) commit edd9b90835f76464d7dc1e5c4b0fcc30f11a999b Author: Frédéric-Emmanuel PICCA Date: Wed Mar 18 15:51:33 2009 +0100 * add the GPL header include/hkl/hkl-axis.h | 21 +++++++++++++++++++++ include/hkl/hkl-detector.h | 21 +++++++++++++++++++++ include/hkl/hkl-geometry-factory.h | 21 +++++++++++++++++++++ include/hkl/hkl-geometry.h | 21 +++++++++++++++++++++ include/hkl/hkl-interval.h | 21 +++++++++++++++++++++ include/hkl/hkl-lattice.h | 21 +++++++++++++++++++++ include/hkl/hkl-list.h | 21 +++++++++++++++++++++ include/hkl/hkl-macros.h | 21 +++++++++++++++++++++ include/hkl/hkl-matrix.h | 21 +++++++++++++++++++++ include/hkl/hkl-parameter.h | 21 +++++++++++++++++++++ include/hkl/hkl-pseudoaxis-auto.h | 21 +++++++++++++++++++++ include/hkl/hkl-pseudoaxis-common-eulerians.h | 21 +++++++++++++++++++++ include/hkl/hkl-pseudoaxis-common-hkl.h | 21 +++++++++++++++++++++ include/hkl/hkl-pseudoaxis-common-psi.h | 21 +++++++++++++++++++++ include/hkl/hkl-pseudoaxis-common.h | 21 +++++++++++++++++++++ include/hkl/hkl-pseudoaxis-e4cv.h | 21 +++++++++++++++++++++ include/hkl/hkl-pseudoaxis-e6c.h | 21 +++++++++++++++++++++ include/hkl/hkl-pseudoaxis-factory.h | 21 +++++++++++++++++++++ include/hkl/hkl-pseudoaxis-k4cv.h | 21 +++++++++++++++++++++ include/hkl/hkl-pseudoaxis-k6c.h | 21 +++++++++++++++++++++ include/hkl/hkl-pseudoaxis.h | 21 +++++++++++++++++++++ include/hkl/hkl-quaternion.h | 21 +++++++++++++++++++++ include/hkl/hkl-sample.h | 21 +++++++++++++++++++++ include/hkl/hkl-source.h | 21 +++++++++++++++++++++ include/hkl/hkl-unit.h | 21 +++++++++++++++++++++ include/hkl/hkl-vector.h | 21 +++++++++++++++++++++ src/hkl-axis.c | 21 +++++++++++++++++++++ src/hkl-detector.c | 21 +++++++++++++++++++++ src/hkl-geometry.c | 21 +++++++++++++++++++++ src/hkl-interval.c | 21 +++++++++++++++++++++ src/hkl-lattice.c | 21 +++++++++++++++++++++ src/hkl-matrix.c | 21 +++++++++++++++++++++ src/hkl-parameter.c | 21 +++++++++++++++++++++ src/hkl-pseudoaxis-auto.c | 21 +++++++++++++++++++++ src/hkl-pseudoaxis-common-eulerians.c | 21 +++++++++++++++++++++ src/hkl-pseudoaxis-common-hkl.c | 21 +++++++++++++++++++++ src/hkl-pseudoaxis-common-psi.c | 21 +++++++++++++++++++++ src/hkl-pseudoaxis-common.c | 21 +++++++++++++++++++++ src/hkl-pseudoaxis-e4cv-hkl.c | 21 +++++++++++++++++++++ src/hkl-pseudoaxis-e4cv-psi.c | 21 +++++++++++++++++++++ src/hkl-pseudoaxis-e6c-hkl.c | 21 +++++++++++++++++++++ src/hkl-pseudoaxis-e6c-psi.c | 21 +++++++++++++++++++++ src/hkl-pseudoaxis-k4cv-hkl.c | 21 +++++++++++++++++++++ src/hkl-pseudoaxis-k4cv-psi.c | 21 +++++++++++++++++++++ src/hkl-pseudoaxis-k6c-hkl.c | 21 +++++++++++++++++++++ src/hkl-pseudoaxis-k6c-psi.c | 21 +++++++++++++++++++++ src/hkl-pseudoaxis.c | 21 +++++++++++++++++++++ src/hkl-quaternion.c | 21 +++++++++++++++++++++ src/hkl-sample.c | 21 +++++++++++++++++++++ src/hkl-source.c | 21 +++++++++++++++++++++ src/hkl-unit.c | 21 +++++++++++++++++++++ src/hkl-vector.c | 21 +++++++++++++++++++++ src/usage.c | 21 +++++++++++++++++++++ test/bench.c | 21 +++++++++++++++++++++ test/hkl-test-axis.c | 21 +++++++++++++++++++++ test/hkl-test-detector.c | 21 +++++++++++++++++++++ test/hkl-test-geometry.c | 21 +++++++++++++++++++++ test/hkl-test-interval.c | 21 +++++++++++++++++++++ test/hkl-test-lattice.c | 21 +++++++++++++++++++++ test/hkl-test-matrix.c | 21 +++++++++++++++++++++ test/hkl-test-parameter.c | 21 +++++++++++++++++++++ test/hkl-test-pseudoaxis-e4cv.c | 21 +++++++++++++++++++++ test/hkl-test-pseudoaxis-e6c.c | 21 +++++++++++++++++++++ test/hkl-test-pseudoaxis-k4cv.c | 21 +++++++++++++++++++++ test/hkl-test-pseudoaxis-k6c.c | 21 +++++++++++++++++++++ test/hkl-test-pseudoaxis.c | 21 +++++++++++++++++++++ test/hkl-test-quaternion.c | 21 +++++++++++++++++++++ test/hkl-test-sample.c | 21 +++++++++++++++++++++ test/hkl-test-source.c | 21 +++++++++++++++++++++ test/hkl-test-vector.c | 21 +++++++++++++++++++++ test/hkl-test.c | 21 +++++++++++++++++++++ test/hkl-test.h | 21 +++++++++++++++++++++ test/main.c | 21 +++++++++++++++++++++ 73 files changed, 1533 insertions(+), 0 deletions(-) commit fb5b7b93eaf3ee04a6d1ddb7bbf32722e6a7a4a3 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 18 14:38:15 2009 +0100 * reordon the pseudoAxes Modes in the e6c and k6c geometries. src/hkl-pseudoaxis-e6c-hkl.c | 20 ++++++------ src/hkl-pseudoaxis-k6c-hkl.c | 68 +++++++++++++++++++++--------------------- 2 files changed, 44 insertions(+), 44 deletions(-) commit a22e4329dac984a8bc8f5d61880380157ee6daa6 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 18 14:09:27 2009 +0100 * remove valgrind warning about uninitialized values. src/hkl-pseudoaxis.c | 27 ++++++++++++++------------- 1 files changed, 14 insertions(+), 13 deletions(-) commit 251d243b133b956806ce13ed30d633cdffd460ea Author: Frédéric-Emmanuel PICCA Date: Wed Mar 18 14:08:56 2009 +0100 * remove the unneeded len member of HklGeometryList include/hkl/hkl-geometry.h | 1 - src/hkl-geometry.c | 5 +---- test/bench.c | 2 +- test/hkl-test-pseudoaxis-e4cv.c | 4 ++-- test/hkl-test-pseudoaxis-e6c.c | 2 +- test/hkl-test-pseudoaxis-k4cv.c | 4 ++-- test/hkl-test-pseudoaxis-k6c.c | 20 ++++++++++---------- test/hkl-test-pseudoaxis.c | 6 ++++-- 8 files changed, 21 insertions(+), 23 deletions(-) commit 05fd3fe6f030d376a8e55c4366cfb0367e1faa2f Author: Frédéric-Emmanuel PICCA Date: Wed Mar 18 10:56:47 2009 +0100 * remove a memory leak src/hkl-geometry.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 5ad1d77a9f0ee3ca8e261c1eeab960372e2d2ae1 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 18 10:56:37 2009 +0100 * Now the HklPseudoAxisEngine Has a reference on an HklPseudoAxisEngineList As this List contain the HklGeometryList all engines of this List refer to this geometry list. include/hkl/hkl-pseudoaxis.h | 2 +- src/hkl-pseudoaxis.c | 17 +++++-------- test/bench.c | 26 ++++++++++---------- test/hkl-test-pseudoaxis-e4cv.c | 44 +++++++++++++++++++---------------- test/hkl-test-pseudoaxis-e6c.c | 22 +++++++++-------- test/hkl-test-pseudoaxis-k4cv.c | 28 ++++++++++++---------- test/hkl-test-pseudoaxis-k6c.c | 49 +++++++++++++++++++-------------------- test/hkl-test-pseudoaxis.c | 4 +- 8 files changed, 98 insertions(+), 94 deletions(-) commit a242d8fc19db357baba22a35fe7d3c0e0cdd1e08 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 18 09:50:56 2009 +0100 * add an HklGeometryList in the HklPseudoAxisEngineList include/hkl/hkl-pseudoaxis.h | 1 + src/hkl-pseudoaxis.c | 3 +++ 2 files changed, 4 insertions(+), 0 deletions(-) commit f19386200eba38ce472f3950cf9993a38421e24a Author: Frédéric-Emmanuel PICCA Date: Wed Mar 18 09:39:06 2009 +0100 * add an HklGeometryList to put in the HklPseudoAxisEngineList this is to share beetween all PseudoAxesEngine the same geometry list. include/hkl/hkl-geometry.h | 27 +++++++++++++++++- include/hkl/hkl-pseudoaxis.h | 4 +-- src/hkl-geometry.c | 57 +++++++++++++++++++++++++++++++++++++++ src/hkl-pseudoaxis.c | 51 +++++++--------------------------- test/bench.c | 4 +- test/hkl-test-pseudoaxis-e4cv.c | 8 +++--- test/hkl-test-pseudoaxis-e6c.c | 4 +- test/hkl-test-pseudoaxis-k4cv.c | 8 +++--- test/hkl-test-pseudoaxis-k6c.c | 18 ++++++------ test/hkl-test-pseudoaxis.c | 4 +- 10 files changed, 117 insertions(+), 68 deletions(-) commit 31d3a73a7640b653117051dc92dd71382455c621 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 17 16:45:53 2009 +0100 * put the holder part in the hkl-geometry.c file include/hkl/hkl-geometry.h | 5 -- src/hkl-geometry.c | 102 ++++++++++++++++++++++++++++++++++++++++++-- src/hkl-holder.c | 93 ---------------------------------------- test/hkl-test-holder.c | 47 -------------------- test/main.c | 1 - 5 files changed, 98 insertions(+), 150 deletions(-) commit 7b4feba042da13a871dd088ae0808342eb7c52ab Author: Frédéric-Emmanuel PICCA Date: Tue Mar 17 16:22:51 2009 +0100 * optimize the computation 4% (speedup :) include/hkl/hkl-axis.h | 5 ++++ src/hkl-axis.c | 19 +++++++++++++++ src/hkl-geometry.c | 14 ++++------- src/hkl-pseudoaxis-auto.c | 8 +----- src/hkl-pseudoaxis-common-hkl.c | 4 +- src/hkl-pseudoaxis-common-psi.c | 2 +- test/hkl-test-detector.c | 4 +- test/hkl-test-geometry.c | 2 +- test/hkl-test-sample.c | 48 +++++++++++++++----------------------- 9 files changed, 56 insertions(+), 50 deletions(-) commit 7487feee314f12cc79fbfe041329bceb56b924da Author: Frédéric-Emmanuel PICCA Date: Tue Mar 17 13:53:21 2009 +0100 * rename old get_set method -> mode include/hkl/hkl-pseudoaxis.h | 4 ++-- src/hkl-pseudoaxis-common-eulerians.c | 4 ++-- src/hkl-pseudoaxis-e4cv-hkl.c | 12 ++++++------ src/hkl-pseudoaxis-e4cv-psi.c | 4 ++-- src/hkl-pseudoaxis-e6c-hkl.c | 18 +++++++++--------- src/hkl-pseudoaxis-e6c-psi.c | 4 ++-- src/hkl-pseudoaxis-k4cv-hkl.c | 12 ++++++------ src/hkl-pseudoaxis-k4cv-psi.c | 4 ++-- src/hkl-pseudoaxis-k6c-hkl.c | 22 +++++++++++----------- src/hkl-pseudoaxis-k6c-psi.c | 4 ++-- src/hkl-pseudoaxis.c | 4 ++-- test/bench.c | 4 ++-- test/hkl-test-pseudoaxis-e4cv.c | 10 +++++----- test/hkl-test-pseudoaxis-e6c.c | 4 ++-- test/hkl-test-pseudoaxis-k4cv.c | 4 ++-- test/hkl-test-pseudoaxis-k6c.c | 8 ++++---- test/hkl-test-pseudoaxis.c | 2 +- 17 files changed, 62 insertions(+), 62 deletions(-) commit 742c9a92ee7c600446585d026d1ffb462da9015c Author: Frédéric-Emmanuel PICCA Date: Tue Mar 17 11:44:05 2009 +0100 * renames getset -> mode include/hkl/hkl-pseudoaxis.h | 6 ++-- src/hkl-pseudoaxis-common-eulerians.c | 10 +++--- src/hkl-pseudoaxis-common-hkl.c | 6 ++-- src/hkl-pseudoaxis-common-psi.c | 20 ++++++------ src/hkl-pseudoaxis-common.c | 20 ++++++------ src/hkl-pseudoaxis-e4cv-hkl.c | 22 ++++++------ src/hkl-pseudoaxis-e4cv-psi.c | 6 ++-- src/hkl-pseudoaxis-e6c-hkl.c | 34 +++++++++--------- src/hkl-pseudoaxis-e6c-psi.c | 6 ++-- src/hkl-pseudoaxis-k4cv-hkl.c | 34 +++++++++--------- src/hkl-pseudoaxis-k4cv-psi.c | 6 ++-- src/hkl-pseudoaxis-k6c-hkl.c | 58 ++++++++++++++++---------------- src/hkl-pseudoaxis-k6c-psi.c | 6 ++-- src/hkl-pseudoaxis.c | 46 +++++++++++++------------- test/bench.c | 12 +++--- test/hkl-test-pseudoaxis-e4cv.c | 20 ++++++------ test/hkl-test-pseudoaxis-e6c.c | 6 ++-- test/hkl-test-pseudoaxis-k4cv.c | 8 ++-- test/hkl-test-pseudoaxis-k6c.c | 16 ++++---- test/hkl-test-pseudoaxis.c | 8 ++-- 20 files changed, 175 insertions(+), 175 deletions(-) commit 5b93c9db781295504b37d88a3274501ad3a8b560 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 17 11:42:17 2009 +0100 * rename hkl_pseudo_axis_engine_get_set -> hkl_pseudo_axis_engine_mode include/hkl/hkl-pseudoaxis-common-hkl.h | 6 ++-- include/hkl/hkl-pseudoaxis-common-psi.h | 2 +- include/hkl/hkl-pseudoaxis.h | 6 ++-- src/hkl-pseudoaxis-common-eulerians.c | 10 +++--- src/hkl-pseudoaxis-common-hkl.c | 6 ++-- src/hkl-pseudoaxis-common-psi.c | 16 +++++----- src/hkl-pseudoaxis-e4cv-hkl.c | 28 +++++++++--------- src/hkl-pseudoaxis-e4cv-psi.c | 2 +- src/hkl-pseudoaxis-e6c-hkl.c | 44 ++++++++++++++-------------- src/hkl-pseudoaxis-e6c-psi.c | 2 +- src/hkl-pseudoaxis-k4cv-hkl.c | 22 +++++++------- src/hkl-pseudoaxis-k4cv-psi.c | 2 +- src/hkl-pseudoaxis-k6c-hkl.c | 48 +++++++++++++++--------------- src/hkl-pseudoaxis-k6c-psi.c | 2 +- src/hkl-pseudoaxis.c | 12 ++++---- 15 files changed, 104 insertions(+), 104 deletions(-) commit 509b7d069a8f77240fdb19de8af9bf730335c1d0 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 17 11:39:02 2009 +0100 * rename the HklPseudoAxisEngineGetSet ->HklPseudoAxisEngineMode include/hkl/hkl-pseudoaxis-common-psi.h | 8 +++--- include/hkl/hkl-pseudoaxis.h | 18 ++++++++-------- src/hkl-pseudoaxis-common-eulerians.c | 2 +- src/hkl-pseudoaxis-common-psi.c | 22 ++++++++++---------- src/hkl-pseudoaxis-common.c | 2 +- src/hkl-pseudoaxis-e4cv-hkl.c | 2 +- src/hkl-pseudoaxis-e4cv-psi.c | 4 +- src/hkl-pseudoaxis-e6c-hkl.c | 2 +- src/hkl-pseudoaxis-e6c-psi.c | 4 +- src/hkl-pseudoaxis-k4cv-hkl.c | 2 +- src/hkl-pseudoaxis-k4cv-psi.c | 4 +- src/hkl-pseudoaxis-k6c-hkl.c | 2 +- src/hkl-pseudoaxis-k6c-psi.c | 4 +- src/hkl-pseudoaxis.c | 32 +++++++++++++++--------------- 14 files changed, 54 insertions(+), 54 deletions(-) commit dcaa59f88283f498a3668c477d6ca4c56c044a5a Author: Frédéric-Emmanuel PICCA Date: Tue Mar 17 11:30:36 2009 +0100 * remove the HKLList include/hkl/hkl-list.h | 36 --------- src/hkl-list.c | 138 -------------------------------- test/hkl-test-list.c | 203 ------------------------------------------------ test/main.c | 1 - 4 files changed, 0 insertions(+), 378 deletions(-) commit afd5a5fa948ae447ed6ef097c7682b2980008610 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 17 11:22:12 2009 +0100 * use the HKL_LISt in the Sample part include/hkl/hkl-sample.h | 2 +- src/hkl-sample.c | 160 ++++++++++++++++++++++++---------------------- test/hkl-test-sample.c | 2 +- 3 files changed, 86 insertions(+), 78 deletions(-) commit e8254ce6a3f3955d95efff4703cf12131dc96b88 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 17 10:47:17 2009 +0100 * typo src/hkl-sample.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 44a1d7503fadd8b2222b2f599956a03eb492bfd3 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 17 10:42:26 2009 +0100 * remove an error in the detector test method test/hkl-test-detector.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit 5178184fa824078145cc27343b4f4907bf64d742 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 17 10:30:21 2009 +0100 * use the HKL_LIST in the HklSampleList include/hkl/hkl-list.h | 15 +++++++++++++++ include/hkl/hkl-sample.h | 2 +- src/hkl-sample.c | 37 ++++++++++++------------------------- 3 files changed, 28 insertions(+), 26 deletions(-) commit 37bd79de6bb3d30731399ce3412dda9aae0a1f90 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 17 09:59:29 2009 +0100 * use the HKL_LIST in the HklPseudoAxisEngineList include/hkl/hkl-pseudoaxis.h | 3 +-- src/hkl-pseudoaxis.c | 26 +++++++------------------- test/hkl-test-pseudoaxis.c | 2 +- 3 files changed, 9 insertions(+), 22 deletions(-) commit 69838d345b10d1368200312cf6da2ed8943bd4ec Author: Frédéric-Emmanuel PICCA Date: Tue Mar 17 09:52:22 2009 +0100 * use the HKL_LIST for the pseudoAxes list in the HklPseudoAxisEngine. include/hkl/hkl-pseudoaxis.h | 3 +-- src/hkl-pseudoaxis-common-hkl.c | 2 +- src/hkl-pseudoaxis.c | 32 ++++++++++++-------------------- test/hkl-test-pseudoaxis.c | 11 +++++++---- 4 files changed, 21 insertions(+), 27 deletions(-) commit 6b292ce7532a7507de5e4f38b485b150126d1899 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 17 09:39:55 2009 +0100 * use the HKL_LIST for the axes in the HklPseudoAxisEngine include/hkl/hkl-pseudoaxis.h | 3 +-- src/hkl-pseudoaxis-auto.c | 39 ++++++++++++++++++++------------------- src/hkl-pseudoaxis-common-hkl.c | 4 ++-- src/hkl-pseudoaxis-common-psi.c | 4 +++- src/hkl-pseudoaxis.c | 18 +++++++----------- 5 files changed, 33 insertions(+), 35 deletions(-) commit c99ad8b43acf04654acbbe8727a7449a514745d8 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 16 18:24:54 2009 +0100 * more HKl_LIST replacement include/hkl/hkl-list.h | 9 +++++++++ include/hkl/hkl-pseudoaxis.h | 3 +-- src/hkl-pseudoaxis.c | 14 +++----------- test/bench.c | 4 ++-- test/hkl-test-pseudoaxis-e4cv.c | 4 ++-- test/hkl-test-pseudoaxis-e6c.c | 2 +- test/hkl-test-pseudoaxis-k4cv.c | 4 ++-- test/hkl-test-pseudoaxis-k6c.c | 4 ++-- test/hkl-test-pseudoaxis.c | 2 +- 9 files changed, 23 insertions(+), 23 deletions(-) commit 3bdd1c269a72034a42c73b4cfe0fb6ab051f316c Author: Frédéric-Emmanuel PICCA Date: Mon Mar 16 18:06:05 2009 +0100 * use the HKL_LIST macros for the HklPseudoAxisEngineGetSet->axes_names include/hkl/hkl-pseudoaxis.h | 3 +-- src/hkl-pseudoaxis.c | 16 ++++------------ 2 files changed, 5 insertions(+), 14 deletions(-) commit c327909a518d9e34dd4b02dd7ace5fdf8ccea39e Author: Frédéric-Emmanuel PICCA Date: Mon Mar 16 17:11:50 2009 +0100 * use the LIST in the PseudoAxisEngineGetSet include/hkl/hkl-list.h | 15 ++++++++------- include/hkl/hkl-pseudoaxis.h | 3 +-- src/hkl-geometry.c | 2 +- src/hkl-pseudoaxis.c | 15 ++++----------- test/bench.c | 2 +- test/hkl-test-pseudoaxis-e4cv.c | 2 +- test/hkl-test-pseudoaxis-e6c.c | 2 +- test/hkl-test-pseudoaxis-k6c.c | 2 +- test/hkl-test-pseudoaxis.c | 2 +- 9 files changed, 19 insertions(+), 26 deletions(-) commit f9bd4c312f34ab3774c2a9f3f71bd287b92120ab Author: Frédéric-Emmanuel PICCA Date: Mon Mar 16 16:32:50 2009 +0100 * remove the HklAxis list in the Holder. include/hkl/hkl-geometry.h | 1 - src/hkl-geometry.c | 6 ++++-- src/hkl-holder.c | 19 +------------------ test/hkl-test-holder.c | 6 +++--- test/wscript_build | 2 +- 5 files changed, 9 insertions(+), 25 deletions(-) commit 2edc1c932ab133466a433789c0b4022d02fa7f12 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 16 16:06:20 2009 +0100 * add the bench test test/bench.c | 130 ++++++++++++++++++++++++++++++++++++++++++++++++++++ test/wscript_build | 11 ++++ 2 files changed, 141 insertions(+), 0 deletions(-) commit 48244049f3ea725cebddb61888ce8067ce88a77a Author: Frédéric-Emmanuel PICCA Date: Mon Mar 16 14:38:26 2009 +0100 * use a verctor of axis in the geometry instead of *axis. include/hkl/hkl-axis.h | 2 + include/hkl/hkl-geometry.h | 2 +- include/hkl/hkl-list.h | 13 +++++---- src/hkl-axis.c | 17 ++++++++---- src/hkl-geometry.c | 60 +++++++++++++++++++------------------------- src/hkl-holder.c | 25 +++++++++++++----- src/hkl-pseudoaxis.c | 15 ++++++----- test/hkl-test-geometry.c | 38 ++++++++++++++------------- test/hkl-test-holder.c | 6 ++-- test/hkl-test-sample.c | 8 +++--- 10 files changed, 100 insertions(+), 86 deletions(-) commit f7427db677e141c24bf03b1bf8b533a78b53bf19 Author: Frédéric-Emmanuel PICCA Date: Fri Mar 13 18:39:13 2009 +0100 * small optimization src/hkl-holder.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) commit 3f7687c7eaca451a2dec8e511f69ef2687e99d74 Author: Frédéric-Emmanuel PICCA Date: Fri Mar 13 18:23:15 2009 +0100 * use list macros in all geometry and add an idx array in the holder include/hkl/hkl-geometry.h | 1 + include/hkl/hkl-list.h | 9 ++++++ src/hkl-geometry.c | 50 +++++++++++++++++----------------- src/hkl-holder.c | 65 +++++++++++++++++++++++-------------------- 4 files changed, 70 insertions(+), 55 deletions(-) commit b8d509221a2cbc6409b647f9c901b38a7d276e40 Author: Frédéric-Emmanuel PICCA Date: Fri Mar 13 18:22:05 2009 +0100 * use also debug in the test test/wscript_build | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 4c9ccbe2b28bb2abcd7e2ff5e2ced020f18590a0 Author: Frédéric-Emmanuel PICCA Date: Fri Mar 13 17:14:34 2009 +0100 * use the list macros in the geometry include/hkl/hkl-geometry.h | 6 ++---- src/hkl-geometry.c | 8 +++----- src/hkl-holder.c | 16 +++++++--------- 3 files changed, 12 insertions(+), 18 deletions(-) commit 481c4d430ad664e0d0c3b89d8a02585d4e39d127 Author: Frédéric-Emmanuel PICCA Date: Fri Mar 13 17:02:17 2009 +0100 * start working on an HKL_LIST macros include/hkl/hkl-geometry.h | 3 +-- include/hkl/hkl-list.h | 15 +++++++++++++++ src/hkl-geometry.c | 32 +++++++++++++++----------------- 3 files changed, 31 insertions(+), 19 deletions(-) commit 659fa88a581e5d2c6bf07ff019ef50f2169646a9 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 10 10:16:57 2009 +0100 * work done when updating the Diffractometer device. include/hkl/hkl-parameter.h | 8 ++++++-- include/hkl/hkl-sample.h | 10 +++++++++- src/hkl-parameter.c | 15 ++++++++++++--- src/hkl-pseudoaxis-e4cv-hkl.c | 16 +++++++++++++--- src/hkl-pseudoaxis-e6c-hkl.c | 16 +++++++++++++--- src/hkl-pseudoaxis-k4cv-hkl.c | 27 ++++++++++++++++++++------- src/hkl-pseudoaxis-k6c-hkl.c | 41 ++++++++++++++++++++++++++++++++--------- src/hkl-pseudoaxis.c | 21 +++++++++++++++------ src/hkl-sample.c | 26 ++++++++++++++++++++++++-- wscript | 2 +- 10 files changed, 145 insertions(+), 37 deletions(-) commit 83976b781db2e1b91a56db4b46db6f97232d5c58 Author: Frédéric-Emmanuel PICCA Date: Mon Feb 16 15:44:17 2009 +0100 * add the soleil compile options src/wscript_build | 1 + wscript | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) commit 52f9e8bbfba5b75a0e52aa6ff04b3c94e802f52a Author: Frédéric-Emmanuel PICCA Date: Tue Feb 10 17:15:13 2009 +0100 * typo test/hkl-test-sample.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 28e6b8b6db347d09ea5dc904846947113f620f25 Author: Frédéric-Emmanuel PICCA Date: Tue Feb 10 17:15:03 2009 +0100 * add to HklPseudoAxisEngineList an get_pseudo_axis_by_name method. include/hkl/hkl-pseudoaxis.h | 3 +++ src/hkl-pseudoaxis.c | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+), 0 deletions(-) commit 6193374546e2921db6c669c5e900fa0152d77e1f Author: Frédéric-Emmanuel PICCA Date: Tue Feb 10 15:14:25 2009 +0100 * change the HklSampleList append method signature. include/hkl/hkl-sample.h | 3 +-- src/hkl-sample.c | 15 ++++----------- test/hkl-test-sample.c | 31 +++++++++++++++---------------- 3 files changed, 20 insertions(+), 29 deletions(-) commit 9f9d616618874a6b077c30ddbf26065aeb0ceef6 Author: Frédéric-Emmanuel PICCA Date: Mon Feb 9 17:03:16 2009 +0100 * just typo in the HklSample struct src/hkl-sample.c | 55 ++++++++++++++++++++++++++++++++--------------------- 1 files changed, 33 insertions(+), 22 deletions(-) commit 1992293424283dc6e611e7c434011513079f6935 Author: Frédéric-Emmanuel PICCA Date: Mon Feb 9 17:02:58 2009 +0100 * add a get_value using the unit to the HklParameter class. include/hkl/hkl-parameter.h | 2 ++ src/hkl-parameter.c | 8 ++++++++ 2 files changed, 10 insertions(+), 0 deletions(-) commit afe988852b5b21cbb02487cbc620b7e6f5d47c11 Author: Frédéric-Emmanuel PICCA Date: Fri Feb 6 15:52:59 2009 +0100 * add the hkl_sample_list_del method to remove a sample include/hkl/hkl-list.h | 3 +++ include/hkl/hkl-sample.h | 2 ++ src/hkl-list.c | 14 +++++++++++++- src/hkl-sample.c | 9 +++++++++ 4 files changed, 27 insertions(+), 1 deletions(-) commit daabe75da94e7939eed7931fa57507c72d2c65a1 Author: Frédéric-Emmanuel PICCA Date: Fri Feb 6 14:47:54 2009 +0100 * now the HklSample::affine method return the size of the simplex. include/hkl/hkl-sample.h | 5 ++++- src/hkl-sample.c | 22 ++++++++++++++++++++-- 2 files changed, 24 insertions(+), 3 deletions(-) commit f407f99a2effc6fb605a1ea79035ebba4a0f4f1a Author: Frédéric-Emmanuel PICCA Date: Fri Feb 6 13:47:48 2009 +0100 * rename the hkl_sample_list_append_sample -> hkl_sample_list_append include/hkl/hkl-sample.h | 6 +++--- src/hkl-sample.c | 4 ++-- test/hkl-test-sample.c | 20 ++++++++++---------- 3 files changed, 15 insertions(+), 15 deletions(-) commit 820c26a7ada6d0e75764a3df597ab0818dcd41f0 Author: Frédéric-Emmanuel PICCA Date: Wed Feb 4 16:06:09 2009 +0100 * rename the hkl_sample_(get_reflection -> get_ith_reflection) include/hkl/hkl-sample.h | 5 +++-- src/hkl-sample.c | 2 +- test/hkl-test-sample.c | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) commit 7936b1b04e2647f8e73c0a8b8dc087f2a0ab9df9 Author: Frédéric-Emmanuel PICCA Date: Wed Feb 4 15:49:29 2009 +0100 * add the get_ith and len to the HklSampleList include/hkl/hkl-sample.h | 4 ++++ src/hkl-sample.c | 17 +++++++++++++++++ 2 files changed, 21 insertions(+), 0 deletions(-) commit 73404b4ae11d91dac95475aeb83c13e755141ff2 Author: Frédéric-Emmanuel PICCA Date: Wed Feb 4 15:14:42 2009 +0100 * add a method to set U from the eulerian angles include/hkl/hkl-sample.h | 3 +++ src/hkl-sample.c | 12 ++++++++++++ 2 files changed, 15 insertions(+), 0 deletions(-) commit 6fc71956a1c0f1cd25fd016fd70b2bcc24137bd2 Author: Frédéric-Emmanuel PICCA Date: Wed Feb 4 12:22:06 2009 +0100 * add the SampleReflection mesured and theoretical angles. include/hkl/hkl-sample.h | 10 +++++++- src/hkl-sample.c | 35 +++++++++++++++++++++++++++++++ test/hkl-test-sample.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 95 insertions(+), 2 deletions(-) commit a652ecb7ec1b3929953c525672ec4a8379d2c67b Author: Frédéric-Emmanuel PICCA Date: Fri Jan 30 18:03:59 2009 +0100 * add the HklSampleList TODO | 1 + include/hkl/hkl-sample.h | 28 ++++++++++++++ src/hkl-sample.c | 94 +++++++++++++++++++++++++++++++++++++++++++++- test/hkl-test-sample.c | 60 +++++++++++++++++++++++++++++ 4 files changed, 182 insertions(+), 1 deletions(-) commit a5e3d24519eb7f0242f9e987d16cf83d0f154db5 Author: Frédéric-Emmanuel PICCA Date: Fri Jan 30 18:02:40 2009 +0100 * remove a memory leak. src/hkl-pseudoaxis.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit cfe77654ec061f543e298c2c1713b79344f0433d Author: Frédéric-Emmanuel PICCA Date: Fri Jan 30 16:02:06 2009 +0100 * no more enum problem with g++ include/hkl/hkl-geometry-factory.h | 4 ++-- include/hkl/hkl-sample.h | 3 ++- include/hkl/hkl-unit.h | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) commit 882701fe4dff2b930eab5fb52108ecba3b221223 Author: Frédéric-Emmanuel PICCA Date: Mon Jan 26 14:35:38 2009 +0100 * rename the hkl-test-pseudoaxes-xxx files E4CV -> e4cv etc... test/hkl-test-pseudoaxis-E4CV.c | 285 --------------------------------------- test/hkl-test-pseudoaxis-E6C.c | 146 -------------------- test/hkl-test-pseudoaxis-K4CV.c | 160 ---------------------- test/hkl-test-pseudoaxis-K6C.c | 232 ------------------------------- test/hkl-test-pseudoaxis-e4cv.c | 285 +++++++++++++++++++++++++++++++++++++++ test/hkl-test-pseudoaxis-e6c.c | 146 ++++++++++++++++++++ test/hkl-test-pseudoaxis-k4cv.c | 160 ++++++++++++++++++++++ test/hkl-test-pseudoaxis-k6c.c | 232 +++++++++++++++++++++++++++++++ 8 files changed, 823 insertions(+), 823 deletions(-) commit 972575c825f312f58f5cdebe5c6c721adb05a12a Author: Frédéric-Emmanuel PICCA Date: Mon Jan 26 14:18:51 2009 +0100 * add the pseudoAxisEngineList factory and use it in the pseudoaxis tests. also reactive the eulerians pseudoaxis tests. include/hkl/hkl-pseudoaxis-factory.h | 70 +++++++++++++++++--------------- include/hkl/hkl-pseudoaxis-k4cv.h | 1 - src/hkl-pseudoaxis-common-eulerians.c | 9 ++++ test/hkl-test-pseudoaxis.c | 32 +++++---------- 4 files changed, 56 insertions(+), 56 deletions(-) commit 8c640f6617d778993a4c50bd48a5a0245e0fd6c8 Author: Picca Frédéric-Emmanuel Date: Sat Jan 24 11:04:23 2009 +0100 * clean up the #include src/hkl-pseudoaxis-e4cv-hkl.c | 2 -- src/hkl-pseudoaxis-e4cv-psi.c | 4 ---- src/hkl-pseudoaxis-e6c-hkl.c | 3 --- src/hkl-pseudoaxis-e6c-psi.c | 4 ---- src/hkl-pseudoaxis-k4cv-hkl.c | 2 -- src/hkl-pseudoaxis-k4cv-psi.c | 4 ---- src/hkl-pseudoaxis-k6c-hkl.c | 6 ++---- src/hkl-pseudoaxis-k6c-psi.c | 4 ---- 8 files changed, 2 insertions(+), 27 deletions(-) commit 77242bb2b2805f11751eb467adba6bf031df8ea9 Author: Picca Frédéric-Emmanuel Date: Sat Jan 24 10:44:57 2009 +0100 * no more warning include/hkl/hkl-pseudoaxis-common.h | 15 +++++++++++++++ src/hkl-pseudoaxis-common-hkl.c | 29 +---------------------------- src/hkl-pseudoaxis-common-psi.c | 1 + src/hkl-pseudoaxis-common.c | 29 +++++++++++++++++++++++++++++ src/wscript_build | 2 +- 5 files changed, 47 insertions(+), 29 deletions(-) commit 4e00de6bec3f2834c19d1c1a2d49e23011d850b0 Author: Picca Frédéric-Emmanuel Date: Sat Jan 24 10:18:20 2009 +0100 * remove few more warnings include/hkl/hkl-unit.h | 6 +++--- src/hkl-unit.c | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) commit 171a4145fdacec78ea9642dc7c7700fe2f0b4563 Author: Frédéric-Emmanuel PICCA Date: Fri Jan 23 17:24:45 2009 +0100 * typo and warning clean include/hkl/hkl-pseudoaxis.h | 10 +++++----- src/hkl-axis.c | 1 - src/hkl-geometry.c | 2 -- src/hkl-parameter.c | 2 ++ src/hkl-pseudoaxis-common-eulerians.c | 2 +- src/hkl-pseudoaxis-common-hkl.c | 1 + src/hkl-pseudoaxis-common-psi.c | 4 +--- src/hkl-pseudoaxis-e4cv-hkl.c | 2 +- src/hkl-pseudoaxis-e4cv-psi.c | 1 - src/hkl-pseudoaxis-e6c-hkl.c | 3 ++- src/hkl-pseudoaxis-e6c-psi.c | 1 - src/hkl-pseudoaxis-k4cv-hkl.c | 2 +- src/hkl-pseudoaxis-k4cv-psi.c | 1 - src/hkl-pseudoaxis-k6c-hkl.c | 2 +- src/hkl-pseudoaxis-k6c-psi.c | 1 - src/hkl-pseudoaxis.c | 32 +++++++++++++++++++++++--------- src/wscript_build | 2 +- 17 files changed, 39 insertions(+), 30 deletions(-) commit af9976834c8df28cee39078957d757041ed93984 Author: Frédéric-Emmanuel PICCA Date: Fri Jan 23 16:59:14 2009 +0100 * now all pseudoAxes are usable after construction. src/hkl-pseudoaxis-e4cv-hkl.c | 2 ++ src/hkl-pseudoaxis-e4cv-psi.c | 2 ++ src/hkl-pseudoaxis-e6c-hkl.c | 2 ++ src/hkl-pseudoaxis-e6c-psi.c | 2 ++ src/hkl-pseudoaxis-k4cv-hkl.c | 2 ++ src/hkl-pseudoaxis-k4cv-psi.c | 2 ++ src/hkl-pseudoaxis-k6c-hkl.c | 2 ++ 7 files changed, 14 insertions(+), 0 deletions(-) commit 0641359ca13bff057f330d645319e7a1d34bfaf8 Author: Frédéric-Emmanuel PICCA Date: Fri Jan 23 16:48:48 2009 +0100 * use the HklParameter in the HklAxis include/hkl/hkl-axis.h | 31 ++---------- include/hkl/hkl-parameter.h | 2 + src/hkl-axis.c | 66 +++++++----------------- src/hkl-geometry.c | 35 ++++++------- src/hkl-holder.c | 5 +- src/hkl-parameter.c | 7 +++ src/hkl-pseudoaxis-auto.c | 17 +++--- src/hkl-pseudoaxis-common-eulerians.c | 6 +- src/hkl-pseudoaxis-common-hkl.c | 14 ++---- src/hkl-pseudoaxis-common-psi.c | 7 +-- src/hkl-pseudoaxis.c | 26 +++++++--- test/hkl-test-axis.c | 88 +++++++-------------------------- test/hkl-test-detector.c | 7 +-- test/hkl-test-geometry.c | 15 ++--- test/hkl-test-sample.c | 67 ++++++------------------- 15 files changed, 130 insertions(+), 263 deletions(-) commit 4cdb573258f14fa4cf5a601bd76fb10eec356bd0 Author: Frédéric-Emmanuel PICCA Date: Fri Jan 23 14:46:00 2009 +0100 * add the changed member to HklParameter include/hkl/hkl-parameter.h | 5 ++- src/hkl-lattice.c | 18 +++++++++----- src/hkl-parameter.c | 11 +++++--- src/hkl-pseudoaxis-common-eulerians.c | 6 ++-- src/hkl-pseudoaxis-common-hkl.c | 6 ++-- src/hkl-pseudoaxis-common-psi.c | 2 +- src/hkl-pseudoaxis.c | 2 +- test/hkl-test-parameter.c | 41 ++++++++++++++++++++++---------- 8 files changed, 58 insertions(+), 33 deletions(-) commit 47a75c86a39efeb641406c688d3fb3b30205f0af Author: Frédéric-Emmanuel PICCA Date: Fri Jan 23 14:27:24 2009 +0100 * factorize the "psi" HklPseudoAxisEngine construction. include/hkl/hkl-pseudoaxis-common-psi.h | 2 ++ src/hkl-pseudoaxis-common-psi.c | 16 ++++++++++++++++ src/hkl-pseudoaxis-e4cv-psi.c | 9 +-------- src/hkl-pseudoaxis-e6c-psi.c | 9 +-------- src/hkl-pseudoaxis-k4cv-psi.c | 9 +-------- src/hkl-pseudoaxis-k6c-psi.c | 9 +-------- 6 files changed, 22 insertions(+), 32 deletions(-) commit e7eb9ef5d2574016a3b151aed00c7706e36798e9 Author: Frédéric-Emmanuel PICCA Date: Fri Jan 23 14:23:25 2009 +0100 * factorize the "hkl" HklPseudoAxisEngine construction include/hkl/hkl-pseudoaxis-common-hkl.h | 2 ++ src/hkl-pseudoaxis-common-hkl.c | 28 ++++++++++++++++++++++++++++ src/hkl-pseudoaxis-e4cv-hkl.c | 21 +-------------------- src/hkl-pseudoaxis-e6c-hkl.c | 21 +-------------------- src/hkl-pseudoaxis-k4cv-hkl.c | 21 +-------------------- src/hkl-pseudoaxis-k6c-hkl.c | 21 +-------------------- 6 files changed, 34 insertions(+), 80 deletions(-) commit 2b7b1fc085f44a69dd93826a673a94c146127def Author: Frédéric-Emmanuel PICCA Date: Fri Jan 23 14:22:35 2009 +0100 * use directly pointers for the PseudoAxes in the HklPseudoAxisEngine. include/hkl/hkl-parameter.h | 8 +++--- include/hkl/hkl-pseudoaxis.h | 9 ++++++- src/hkl-parameter.c | 10 +++++--- src/hkl-pseudoaxis-common-eulerians.c | 38 ++++++++++++++++++++++---------- src/hkl-pseudoaxis-common-hkl.c | 18 ++++++--------- src/hkl-pseudoaxis-common-psi.c | 4 +- src/hkl-pseudoaxis-e4cv-hkl.c | 23 +++++++++++++++---- src/hkl-pseudoaxis-e4cv-psi.c | 11 +++++---- src/hkl-pseudoaxis-e6c-hkl.c | 25 ++++++++++++++++----- src/hkl-pseudoaxis-e6c-psi.c | 11 +++++---- src/hkl-pseudoaxis-k4cv-hkl.c | 23 +++++++++++++++---- src/hkl-pseudoaxis-k4cv-psi.c | 11 +++++---- src/hkl-pseudoaxis-k6c-hkl.c | 23 +++++++++++++++---- src/hkl-pseudoaxis-k6c-psi.c | 11 +++++---- src/hkl-pseudoaxis.c | 31 ++++++++++++++++++++++---- test/hkl-test-parameter.c | 32 +++++++++++++------------- test/hkl-test-pseudoaxis-E4CV.c | 16 +++++++------- test/hkl-test-pseudoaxis-E6C.c | 12 +++++----- test/hkl-test-pseudoaxis-K4CV.c | 18 +++++++------- test/hkl-test-pseudoaxis-K6C.c | 19 ++++++++------- test/hkl-test-pseudoaxis.c | 6 ++-- 21 files changed, 227 insertions(+), 132 deletions(-) commit d20a530dcccc739a8ebeb467912c14a25ae4a322 Author: Frédéric-Emmanuel PICCA Date: Fri Jan 23 10:38:55 2009 +0100 * remove a bug in the HklParameter fprintf method the unit and punit can be NULL so we need to take this into account. src/hkl-parameter.c | 19 +++++++++++++------ 1 files changed, 13 insertions(+), 6 deletions(-) commit 5608c8c6e0d2b5b442fee2a497192e8447d1708a Author: Frédéric-Emmanuel PICCA Date: Fri Jan 23 10:30:07 2009 +0100 * use HklParameter in the HklPseudoAxis include/hkl/hkl-pseudoaxis.h | 7 +- src/hkl-pseudoaxis-common-eulerians.c | 23 ++++---- src/hkl-pseudoaxis-common-hkl.c | 27 +++++---- src/hkl-pseudoaxis-common-psi.c | 4 +- src/hkl-pseudoaxis-e4cv-hkl.c | 4 +- src/hkl-pseudoaxis-e4cv-psi.c | 4 +- src/hkl-pseudoaxis-e6c-hkl.c | 4 +- src/hkl-pseudoaxis-e6c-psi.c | 4 +- src/hkl-pseudoaxis-k4cv-hkl.c | 4 +- src/hkl-pseudoaxis-k4cv-psi.c | 4 +- src/hkl-pseudoaxis-k6c-hkl.c | 4 +- src/hkl-pseudoaxis-k6c-psi.c | 4 +- src/hkl-pseudoaxis.c | 21 +++---- src/hkl-unit.c | 104 +++++++++++++++++---------------- test/hkl-test-pseudoaxis-E4CV.c | 28 +++++----- test/hkl-test-pseudoaxis-E6C.c | 24 ++++---- test/hkl-test-pseudoaxis-K4CV.c | 30 +++++----- test/hkl-test-pseudoaxis-K6C.c | 18 +++--- test/hkl-test-pseudoaxis.c | 11 ++-- 19 files changed, 166 insertions(+), 163 deletions(-) commit 988dcb204ac34aa77b19b22ded4ae9b85817ff88 Author: Frédéric-Emmanuel PICCA Date: Thu Jan 22 16:37:12 2009 +0100 * print also the range with the right unit src/hkl-parameter.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) commit 4b390fdc3b75ba1832cb98c97fe227bc9700d9f1 Author: Frédéric-Emmanuel PICCA Date: Thu Jan 22 14:19:39 2009 +0100 * first version of the unit system include/hkl/hkl-parameter.h | 12 +++++- include/hkl/hkl-unit.h | 35 +++++++++++++++++++ src/hkl-lattice.c | 25 ++++++++++--- src/hkl-parameter.c | 20 +++++++--- src/hkl-unit.c | 80 +++++++++++++++++++++++++++++++++++++++++++ test/hkl-test-parameter.c | 45 ++++++++++++++++++------ 6 files changed, 191 insertions(+), 26 deletions(-) commit 9e9522ff4fec38bf7063e36faa45429e06195ddc Author: Frédéric-Emmanuel PICCA Date: Thu Jan 22 11:27:06 2009 +0100 * update the gitignore file .gitignore | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit c84bd9aafdd1b0578256fd1816ec69df6d3b8ab5 Author: Frédéric-Emmanuel PICCA Date: Thu Jan 22 11:17:58 2009 +0100 * add the eulerians test method but unactive them for now. test/hkl-test-pseudoaxis-K4CV.c | 1 + test/hkl-test-pseudoaxis-K6C.c | 137 +++++++++++++++++++++++++++++++++++++++ test/hkl-test-pseudoaxis.c | 4 +- 3 files changed, 141 insertions(+), 1 deletions(-) commit 7d85c97fe5601be288363228b8cb48f404a7d858 Author: Frédéric-Emmanuel PICCA Date: Thu Jan 22 10:49:02 2009 +0100 * add the common eulerians pseudo axes include/hkl/hkl-pseudoaxis-common-eulerians.h | 12 +++ src/hkl-pseudoaxis-common-eulerians.c | 121 +++++++++++++++++++++++++ src/hkl-pseudoaxis-k4cv-eulerians.c | 120 ------------------------ test/hkl-test-pseudoaxis-K4CV.c | 2 +- 4 files changed, 134 insertions(+), 121 deletions(-) commit 6a5ba8be5f9230125987559ea81158309432239f Author: Frédéric-Emmanuel PICCA Date: Wed Jan 21 15:36:40 2009 +0100 * rename the hkl get set include/hkl/hkl-pseudoaxis-common-hkl.h | 16 ++++++++-------- src/hkl-pseudoaxis-common-hkl.c | 16 ++++++++-------- src/hkl-pseudoaxis-e4cv-hkl.c | 16 ++++++++-------- src/hkl-pseudoaxis-e6c-hkl.c | 24 ++++++++++++------------ src/hkl-pseudoaxis-k4cv-hkl.c | 10 +++++----- src/hkl-pseudoaxis-k6c-hkl.c | 22 +++++++++++----------- 6 files changed, 52 insertions(+), 52 deletions(-) commit 3b49422eb08cdf0a32b96be5c126ef64b694fdb5 Author: Frédéric-Emmanuel PICCA Date: Wed Jan 21 15:27:02 2009 +0100 * add the vertical and horizontal double diffraction. include/hkl/hkl-pseudoaxis-common-hkl.h | 30 ++++++---- src/hkl-pseudoaxis-common-hkl.c | 73 ++++++---------------- src/hkl-pseudoaxis-e4cv-hkl.c | 13 +++- src/hkl-pseudoaxis-e6c-hkl.c | 27 +++++++-- src/hkl-pseudoaxis-k4cv-hkl.c | 13 +++- src/hkl-pseudoaxis-k6c-hkl.c | 101 +++++++++++++++++++++++++++++-- src/hkl-pseudoaxis.c | 5 +- 7 files changed, 179 insertions(+), 83 deletions(-) commit dc58d486193f1e579672794598e9a8b123d2f52a Author: Frédéric-Emmanuel PICCA Date: Wed Jan 21 13:14:37 2009 +0100 * now the k6c psi pseudoaxes is working even if not initialized. src/hkl-pseudoaxis-k6c-psi.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit a3c2939ba23053134e03ab40b048b9331db7e07c Author: Frédéric-Emmanuel PICCA Date: Wed Jan 21 13:13:52 2009 +0100 * remove a bug in the double_diffraction_func src/hkl-pseudoaxis-common-hkl.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 10629f5da40a96622214c77d3ff0c23a2b0f3081 Author: Frédéric-Emmanuel PICCA Date: Wed Jan 21 13:12:51 2009 +0100 add the -g flag to build with the debug symbols src/wscript_build | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit 0fa594896944c45efc99b304f4aaf72d076c1f9e Author: Frédéric-Emmanuel PICCA Date: Wed Jan 21 13:12:22 2009 +0100 * remove a bug in the sample_set_lattice method The UB matrix was not updated. src/hkl-sample.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 18db4171124eea3dd61d98b1f74436160a8a598b Author: Frédéric-Emmanuel PICCA Date: Wed Jan 21 13:11:31 2009 +0100 * add a bunch of fprintf methods NEWS | 3 +++ TODO | 7 +++++++ include/hkl/hkl-lattice.h | 2 ++ include/hkl/hkl-sample.h | 2 ++ include/hkl/hkl-source.h | 2 ++ src/hkl-lattice.c | 16 ++++++++++++++++ src/hkl-sample.c | 26 ++++++++++++++++++++------ src/hkl-source.c | 7 +++++++ 8 files changed, 59 insertions(+), 6 deletions(-) commit 2017043c6c42d89e761af551283c6a555817f7bf Author: Frédéric-Emmanuel PICCA Date: Tue Jan 13 15:54:56 2009 +0100 * use the HklPseudoAxisEgnineList in the tests test/hkl-test-pseudoaxis.c | 77 ++++++++++++++++---------------------------- 1 files changed, 28 insertions(+), 49 deletions(-) commit 432290d96a33da1476fe600f967890be3fbb3ab6 Author: Frédéric-Emmanuel PICCA Date: Tue Jan 13 15:54:30 2009 +0100 * add the HklPseudoAxisEngineList include/hkl/hkl-pseudoaxis.h | 30 ++++++++++++++ src/hkl-pseudoaxis.c | 89 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 119 insertions(+), 0 deletions(-) commit 35a124fcbb06b3fe772920002306c0917b09a58e Author: Frédéric-Emmanuel PICCA Date: Tue Jan 13 14:43:40 2009 +0100 * typo include/hkl/hkl-pseudoaxis.h | 1 + src/hkl-pseudoaxis.c | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) commit a09625afcd6e2e8f6f13c5911802a41081a8b511 Author: Frédéric-Emmanuel PICCA Date: Tue Jan 13 13:19:11 2009 +0100 * update the wscript to let the test run (hugly hack) wscript | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-) commit 932422f06c1e4b998f6d0f964d0810096e92e2fc Author: Frédéric-Emmanuel PICCA Date: Mon Jan 12 16:44:32 2009 +0100 * better gestion of the VERSION number VERSION | 1 - hkl.pc.in | 2 +- src/wscript_build | 2 +- wscript | 5 ++--- 4 files changed, 4 insertions(+), 6 deletions(-) commit c243a721edc390ef13680f687132577e21b4bbb4 Author: Frédéric-Emmanuel PICCA Date: Mon Jan 12 15:40:54 2009 +0100 * add the pkgconfig file hkl.pc.in | 12 ++++++++++++ wscript | 15 +++++++++++++++ 2 files changed, 27 insertions(+), 0 deletions(-) commit 61e437f35363aa0be45a80abeaa33e1d45b3b4ab Author: Frédéric-Emmanuel PICCA Date: Mon Jan 12 15:40:37 2009 +0100 * update the waf script with the 1.5.2 version src/wscript_build | 1 + waf | Bin 76581 -> 75487 bytes 2 files changed, 1 insertions(+), 0 deletions(-) commit 4050f4a2dbde9e999295dba6606d7653aa47988f Author: Picca Frédéric-Emmanuel Date: Sun Jan 11 23:49:21 2009 +0100 * first waf build version CMakeLists.txt | 7 -- SConstruct | 147 ------------------------------------------------- src/CMakeLists.txt | 5 -- src/README-compil.txt | 6 -- src/SConscript | 40 ------------- src/wscript_build | 8 +++ test/CMakeLists.txt | 6 -- test/SConscript | 46 --------------- test/wscript_build | 11 ++++ waf | Bin 0 -> 76581 bytes wscript | 32 +++++++++++ 11 files changed, 51 insertions(+), 257 deletions(-) commit 7982ac2b32c3fee16655ec82fb111174fb4bdf47 Author: Picca Frédéric-Emmanuel Date: Sun Jan 11 12:51:09 2009 +0100 * rename hkl-pseudoaxis-common -> hkl-pseudoaxis-common-hkl include/hkl/hkl-pseudoaxis-common-hkl.h | 52 +++++++ include/hkl/hkl-pseudoaxis-common.h | 52 ------- src/hkl-pseudoaxis-common-hkl.c | 255 +++++++++++++++++++++++++++++++ src/hkl-pseudoaxis-common.c | 255 ------------------------------- src/hkl-pseudoaxis-e4cv-hkl.c | 2 +- src/hkl-pseudoaxis-e6c-hkl.c | 2 +- src/hkl-pseudoaxis-k4cv-eulerians.c | 6 +- src/hkl-pseudoaxis-k4cv-hkl.c | 2 +- src/hkl-pseudoaxis-k6c-hkl.c | 2 +- 9 files changed, 314 insertions(+), 314 deletions(-) commit 94743046909a70c00e6ce7fc8746c3e5624871cf Author: Picca Frédéric-Emmanuel Date: Sun Jan 11 12:39:10 2009 +0100 * refactor a part of the double_diffraction include/hkl/hkl-pseudoaxis-common.h | 26 ++---- src/hkl-pseudoaxis-common.c | 160 ++++++++++++++++++++++------------ src/hkl-pseudoaxis-e4cv-hkl.c | 13 +-- src/hkl-pseudoaxis-e6c-hkl.c | 15 +--- src/hkl-pseudoaxis-k4cv-hkl.c | 13 +-- src/hkl-pseudoaxis-k6c-hkl.c | 13 +-- 6 files changed, 126 insertions(+), 114 deletions(-) commit 1da570b3127a08ec9a7c714ba25bb024fe4b14a0 Author: Picca Frédéric-Emmanuel Date: Sun Jan 11 12:06:29 2009 +0100 * add the double diffraction mode to all geoemtries VERSION | 2 +- include/hkl/hkl-pseudoaxis-common.h | 22 +++++++++++- include/hkl/hkl-vector.h | 2 + src/hkl-pseudoaxis-common.c | 63 +++++++++++++++++++++++++++++++++++ src/hkl-pseudoaxis-e4cv-hkl.c | 14 ++++++++ src/hkl-pseudoaxis-e6c-hkl.c | 14 ++++++++ src/hkl-pseudoaxis-k4cv-hkl.c | 14 ++++++++ src/hkl-pseudoaxis-k6c-hkl.c | 14 ++++++++ src/hkl-vector.c | 7 ++++ 9 files changed, 149 insertions(+), 3 deletions(-) commit 0f541101e104da19c1771c91a8933074d2522dc9 Author: Picca Frédéric-Emmanuel Date: Sat Jan 10 10:59:28 2009 +0100 * reduce the number of headers for the pseudoAxisengines include/hkl/hkl-pseudoaxis-e4cv-hkl.h | 12 ------------ include/hkl/hkl-pseudoaxis-e4cv-psi.h | 12 ------------ include/hkl/hkl-pseudoaxis-e4cv.h | 13 +++++++++++++ include/hkl/hkl-pseudoaxis-e6c-hkl.h | 12 ------------ include/hkl/hkl-pseudoaxis-e6c-psi.h | 12 ------------ include/hkl/hkl-pseudoaxis-e6c.h | 13 +++++++++++++ include/hkl/hkl-pseudoaxis-k4cv-eulerians.h | 12 ------------ include/hkl/hkl-pseudoaxis-k4cv-hkl.h | 12 ------------ include/hkl/hkl-pseudoaxis-k4cv-psi.h | 12 ------------ include/hkl/hkl-pseudoaxis-k4cv.h | 14 ++++++++++++++ include/hkl/hkl-pseudoaxis-k6c-hkl.h | 12 ------------ include/hkl/hkl-pseudoaxis-k6c-psi.h | 12 ------------ include/hkl/hkl-pseudoaxis-k6c.h | 13 +++++++++++++ src/hkl-pseudoaxis-e4cv-hkl.c | 2 +- src/hkl-pseudoaxis-e4cv-psi.c | 2 +- src/hkl-pseudoaxis-e6c-hkl.c | 2 +- src/hkl-pseudoaxis-e6c-psi.c | 2 +- src/hkl-pseudoaxis-k4cv-eulerians.c | 2 +- src/hkl-pseudoaxis-k4cv-hkl.c | 2 +- src/hkl-pseudoaxis-k4cv-psi.c | 2 +- src/hkl-pseudoaxis-k6c-hkl.c | 2 +- src/hkl-pseudoaxis-k6c-psi.c | 2 +- test/hkl-test-pseudoaxis-E4CV.c | 3 +-- test/hkl-test-pseudoaxis-E6C.c | 2 +- test/hkl-test-pseudoaxis-K4CV.c | 3 +-- test/hkl-test-pseudoaxis-K6C.c | 2 +- test/hkl-test-pseudoaxis.c | 13 ++++--------- 27 files changed, 70 insertions(+), 132 deletions(-) commit 4b55504dd4b564bdf1392eb430d8d9d972010379 Author: Picca Frédéric-Emmanuel Date: Fri Jan 9 21:29:31 2009 +0100 * function name consistency in the pseudo axes part include/hkl/hkl-pseudoaxis-auto.h | 4 +- include/hkl/hkl-pseudoaxis-e6c-hkl.h | 2 +- include/hkl/hkl-pseudoaxis-k4cv-hkl.h | 2 +- include/hkl/hkl-pseudoaxis-k6c-hkl.h | 2 +- src/hkl-pseudoaxis-auto.c | 6 +- src/hkl-pseudoaxis-common-psi.c | 6 +- src/hkl-pseudoaxis-common.c | 6 +- src/hkl-pseudoaxis-e4cv-hkl.c | 8 ++-- src/hkl-pseudoaxis-e4cv-psi.c | 4 +- src/hkl-pseudoaxis-e6c-hkl.c | 31 +++++++------ src/hkl-pseudoaxis-e6c-psi.c | 4 +- src/hkl-pseudoaxis-k4cv-eulerians.c | 16 +++--- src/hkl-pseudoaxis-k4cv-hkl.c | 66 +++++++++------------------- src/hkl-pseudoaxis-k4cv-psi.c | 4 +- src/hkl-pseudoaxis-k6c-hkl.c | 76 ++++++++++++++++---------------- src/hkl-pseudoaxis-k6c-psi.c | 4 +- src/hkl-pseudoaxis.c | 40 +++++++++--------- test/hkl-test-pseudoaxis-E4CV.c | 68 +++++++++++++++--------------- test/hkl-test-pseudoaxis-E6C.c | 34 +++++++------- test/hkl-test-pseudoaxis-K4CV.c | 28 ++++++------ test/hkl-test-pseudoaxis-K6C.c | 18 ++++---- test/hkl-test-pseudoaxis.c | 36 ++++++++-------- 22 files changed, 222 insertions(+), 243 deletions(-) commit a169da5f6c5bd130803af7e83d12b43a86b7c2ec Author: Picca Frédéric-Emmanuel Date: Mon Jan 5 09:35:10 2009 +0100 * update the CMakeList.txt file CMakeLists.txt | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 5250d22489a21d5f99d6ff674676b523cdd544e0 Author: Picca Frédéric-Emmanuel Date: Fri Dec 5 14:48:42 2008 +0100 * remove a bug in the psi pseudo axis method. src/hkl-pseudoaxis-common-psi.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit 4bef14134f62fe1e0280c6d88b440d3294e52c9d Author: Picca Frédéric-Emmanuel Date: Fri Dec 5 13:00:01 2008 +0100 * add a kphi and phi constant mode. src/hkl-pseudoaxis-k6c-hkl.c | 179 ++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 179 insertions(+), 0 deletions(-) commit b0be5acd46bef5e682daca66b824e6b3b201419f Author: Picca Frédéric-Emmanuel Date: Wed Dec 3 14:08:32 2008 +0100 * only add a solution to the pseudoAxes geometries if it is different. src/hkl-pseudoaxis.c | 38 ++++++++++++++++++++++++-------------- 1 files changed, 24 insertions(+), 14 deletions(-) commit 090fa9651fafe17630ff57045328e5e41e582c24 Author: Picca Frédéric-Emmanuel Date: Wed Dec 3 13:46:29 2008 +0100 * use and update the set_values_v geometry method. src/hkl-geometry.c | 6 ++++-- test/hkl-test-pseudoaxis-E4CV.c | 29 +++++++++-------------------- test/hkl-test-pseudoaxis-E6C.c | 33 ++++++++------------------------- test/hkl-test-pseudoaxis-K4CV.c | 25 +++++++------------------ test/hkl-test-pseudoaxis-K6C.c | 10 ++++++++++ 5 files changed, 38 insertions(+), 65 deletions(-) commit 580d38baf59f0a2bb0c5a1d09fb0e28e4d583932 Author: Picca Frédéric-Emmanuel Date: Tue Dec 2 13:55:02 2008 +0100 * the set_values_v and distance method to the geometry. include/hkl/hkl-geometry.h | 6 +++- src/hkl-geometry.c | 38 +++++++++++++++++++++++- test/hkl-test-geometry.c | 71 ++++++++++++++++++++++++++++++++++++------- 3 files changed, 101 insertions(+), 14 deletions(-) commit 053359a203feaedf3bc85b2265f54158611c1d97 Author: Picca Frédéric-Emmanuel Date: Tue Dec 2 10:56:20 2008 +0100 * indent the geometry part include/hkl/hkl-geometry.h | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit e5651705af8f98436dbf7990bb7378fa5b21e843 Author: Picca Frédéric-Emmanuel Date: Tue Dec 2 10:54:59 2008 +0100 * ensure all sample operations. include/hkl/hkl-sample.h | 6 ++- src/hkl-sample.c | 106 +++++++++++++++++++++++++++++++--------------- 2 files changed, 77 insertions(+), 35 deletions(-) commit 5fc495bf546eba65f1fe1b248386459ff5c7f201 Author: Frédéric-Emmanuel PICCA Date: Fri Jan 9 17:40:57 2009 +0100 * work in progress include/hkl/hkl-pseudoaxis-auto.h | 4 +- include/hkl/hkl-pseudoaxis-e4cv-hkl.h | 2 +- include/hkl/hkl-pseudoaxis-e6c-hkl.h | 2 +- include/hkl/hkl-pseudoaxis-factory.h | 6 ++-- include/hkl/hkl-pseudoaxis.h | 48 ++++++++++++++++---------------- src/hkl-pseudoaxis-e4cv-hkl.c | 12 ++++---- 6 files changed, 37 insertions(+), 37 deletions(-) commit 0f5cb6efc3fa97635a6078604902dcfe51e4e01a Author: Frédéric-Emmanuel PICCA Date: Fri Nov 28 17:47:26 2008 +0100 * first version of the eulerians pseudo axes. include/hkl/hkl-pseudoaxis-k4cv-eulerians.h | 12 +++ src/hkl-pseudoaxis-k4cv-eulerians.c | 120 +++++++++++++++++++++++++++ test/hkl-test-pseudoaxis-K4CV.c | 61 +++++++++++++- test/hkl-test-pseudoaxis.c | 8 ++ 4 files changed, 200 insertions(+), 1 deletions(-) commit dc67f5082dd51be73f17a1d91edecbe6efe1116d Author: Frédéric-Emmanuel PICCA Date: Wed Nov 26 15:10:33 2008 +0100 * remove non necessary method in the k4cv hkl pseudo axis. include/hkl/hkl-pseudoaxis-k4cv-hkl.h | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) commit 0c3a5f5aa293da1aa06784de33394a99e419f4c6 Author: Frédéric-Emmanuel PICCA Date: Wed Nov 26 14:28:23 2008 +0100 * update the psi pseudo axis engine test test/hkl-test-pseudoaxis-E4CV.c | 43 ++++++++++++++++++++------------------ 1 files changed, 23 insertions(+), 20 deletions(-) commit ea1a653ae3d860b8304afd10bb4fb29775c10d0b Author: Frédéric-Emmanuel PICCA Date: Wed Nov 26 11:08:47 2008 +0100 * refactor the psi pseudo axes engine. include/hkl/hkl-pseudoaxis-common-psi.h | 17 +------- src/hkl-pseudoaxis-common-psi.c | 65 +++++++++++++++++++++++++------ src/hkl-pseudoaxis-e4cv-psi.c | 42 +------------------- src/hkl-pseudoaxis-e6c-psi.c | 42 +------------------- src/hkl-pseudoaxis-k4cv-psi.c | 42 +------------------- src/hkl-pseudoaxis-k6c-psi.c | 42 +------------------- 6 files changed, 64 insertions(+), 186 deletions(-) commit 3ae4d7033610db98f3807116ec23e69e69aa217b Author: Frédéric-Emmanuel PICCA Date: Tue Nov 25 17:07:23 2008 +0100 * rename the "psi e4cv" -> "psi vertical" pseudo axis engine src/hkl-pseudoaxis-e6c-psi.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit ffc9a49669e0435f9df6a7889aad8d7f4230005c Author: Frédéric-Emmanuel PICCA Date: Tue Nov 25 17:01:37 2008 +0100 * add to k6c the "psi vertical" pseudo axis engine include/hkl/hkl-pseudoaxis-k6c-psi.h | 12 ++++++ src/hkl-pseudoaxis-k6c-psi.c | 66 ++++++++++++++++++++++++++++++++++ test/hkl-test-pseudoaxis.c | 8 ++++ 3 files changed, 86 insertions(+), 0 deletions(-) commit 9e9d69b2b4dce5504f7ef9f355836e840d8f6bab Author: Frédéric-Emmanuel PICCA Date: Tue Nov 25 16:52:49 2008 +0100 * add to e6c the "psi e4cv" pseudo axis engine include/hkl/hkl-pseudoaxis-e6c-psi.h | 12 ++++++ src/SConscript | 1 + src/hkl-pseudoaxis-e6c-psi.c | 66 ++++++++++++++++++++++++++++++++++ test/hkl-test-pseudoaxis.c | 10 +++++- 4 files changed, 88 insertions(+), 1 deletions(-) commit ab3b1fd02340070d945442bd9b175c0f9185ec0e Author: Frédéric-Emmanuel PICCA Date: Tue Nov 25 16:37:14 2008 +0100 * now add the K4C psi pseudo axis engine include/hkl/hkl-pseudoaxis-common-psi.h | 38 ++++++ include/hkl/hkl-pseudoaxis-k4cv-psi.h | 12 ++ src/SConscript | 2 + src/hkl-pseudoaxis-common-psi.c | 201 ++++++++++++++++++++++++++++ src/hkl-pseudoaxis-e4cv-psi.c | 216 +------------------------------ src/hkl-pseudoaxis-k4cv-psi.c | 66 ++++++++++ test/hkl-test-pseudoaxis.c | 10 ++- 7 files changed, 334 insertions(+), 211 deletions(-) commit e623473a01cdfd0e98b13cf3e3ecf02429d7ccd8 Author: Frédéric-Emmanuel PICCA Date: Tue Nov 25 15:57:21 2008 +0100 * refactor the file names. include/hkl/hkl-pseudoaxis-E4CV.h | 13 - include/hkl/hkl-pseudoaxis-E6C.h | 12 - include/hkl/hkl-pseudoaxis-K4CV.h | 13 - include/hkl/hkl-pseudoaxis-K6C.h | 12 - include/hkl/hkl-pseudoaxis-e4cv-hkl.h | 12 + include/hkl/hkl-pseudoaxis-e4cv-psi.h | 12 + include/hkl/hkl-pseudoaxis-e6c-hkl.h | 12 + include/hkl/hkl-pseudoaxis-k4cv-hkl.h | 13 + include/hkl/hkl-pseudoaxis-k6c-hkl.h | 12 + src/SConscript | 9 +- src/hkl-pseudoaxis-E4CV.c | 363 --------------------------- src/hkl-pseudoaxis-E6C.c | 149 ----------- src/hkl-pseudoaxis-K4CV.c | 371 --------------------------- src/hkl-pseudoaxis-K6C.c | 441 --------------------------------- src/hkl-pseudoaxis-e4cv-hkl.c | 94 +++++++ src/hkl-pseudoaxis-e4cv-psi.c | 270 ++++++++++++++++++++ src/hkl-pseudoaxis-e6c-hkl.c | 149 +++++++++++ src/hkl-pseudoaxis-k4cv-hkl.c | 371 +++++++++++++++++++++++++++ src/hkl-pseudoaxis-k6c-hkl.c | 441 +++++++++++++++++++++++++++++++++ test/hkl-test-pseudoaxis-E4CV.c | 7 +- test/hkl-test-pseudoaxis-E6C.c | 2 +- test/hkl-test-pseudoaxis-K4CV.c | 2 +- test/hkl-test-pseudoaxis-K6C.c | 2 +- test/hkl-test-pseudoaxis.c | 11 +- 24 files changed, 1404 insertions(+), 1389 deletions(-) commit 89c7a9f58fa2e1930bee9dc37da1bc0a27a8f165 Author: Frédéric-Emmanuel PICCA Date: Tue Nov 25 13:44:21 2008 +0100 * typo src/hkl-pseudoaxis-E4CV.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 95a8a33ee43195a700adc23df91b9d61077fade3 Author: Frédéric-Emmanuel PICCA Date: Mon Nov 24 17:08:38 2008 +0100 * now psi seems to work correctly src/hkl-pseudoaxis-E4CV.c | 111 ++++++++++++++++++++++++--------------------- 1 files changed, 60 insertions(+), 51 deletions(-) commit 76279d34ee16edbdd9c2cc33809caa9e3a759e26 Author: Frédéric-Emmanuel PICCA Date: Mon Nov 24 16:15:48 2008 +0100 * better psi initialization and getter src/hkl-pseudoaxis-E4CV.c | 59 ++++++++++++++++++++++++++------------------- 1 files changed, 34 insertions(+), 25 deletions(-) commit ca174ba55becfc8e1da160a3f17da1ceae67037f Author: Picca Frédéric-Emmanuel Date: Sat Nov 22 22:18:07 2008 +0100 * set the random test for the psi pseudoaxe src/hkl-pseudoaxis-E4CV.c | 11 +++++++++++ test/hkl-test-pseudoaxis.c | 20 +++++++++++++++----- test/main.c | 2 +- 3 files changed, 27 insertions(+), 6 deletions(-) commit 81b2dac096a76f27a999db1b935fa03f6958a7b3 Author: Picca Frédéric-Emmanuel Date: Sat Nov 22 17:56:21 2008 +0100 * first version of psi for e4c include/hkl/hkl-pseudoaxis-E4CV.h | 1 + include/hkl/hkl-pseudoaxis.h | 17 ++- src/hkl-pseudoaxis-E4CV.c | 254 +++++++++++++++++++++++++++++++++++-- src/hkl-pseudoaxis-common.c | 28 ++++ src/hkl-pseudoaxis.c | 71 ++++++++++- test/hkl-test-pseudoaxis-E4CV.c | 144 ++++++++++++++++++++- test/main.c | 2 +- 7 files changed, 495 insertions(+), 22 deletions(-) commit c9923fb4aa08dcffe176aefa15562cc362c2ef72 Author: Picca Frédéric-Emmanuel Date: Sat Nov 22 17:07:00 2008 +0100 * add the vector oriented_angle method TODO | 1 + include/hkl/hkl-vector.h | 4 ++++ src/hkl-vector.c | 19 +++++++++++++++++++ test/hkl-test-vector.c | 25 +++++++++++++++++++++++++ 4 files changed, 49 insertions(+), 0 deletions(-) commit 3f6a8af31129497083122584edce11e13aa168d0 Author: Picca Frédéric-Emmanuel Date: Sat Nov 22 16:04:41 2008 +0100 * add the vector project_on_plan method include/hkl/hkl-vector.h | 3 +++ src/hkl-vector.c | 11 +++++++++++ test/hkl-test-vector.c | 15 +++++++++++++++ 3 files changed, 29 insertions(+), 0 deletions(-) commit ff394f5cd27e87836a2b4e7d27d4e4b11693165b Author: Picca Frédéric-Emmanuel Date: Sat Nov 22 15:32:16 2008 +0100 * update the TODO list TODO | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) commit 5c668bb12ad5e5743d9751b2c6f8b1d0a4decb0a Author: Picca Frédéric-Emmanuel Date: Sat Nov 22 15:31:35 2008 +0100 * update the vector angle test test/hkl-test-vector.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-) commit 2933142c18370fcd45d6e8416725a904b75648b4 Author: Frédéric-Emmanuel PICCA Date: Tue Nov 4 11:49:42 2008 +0100 * update the TODO liste TODO | 11 +++++------ 1 files changed, 5 insertions(+), 6 deletions(-) commit c7774f9e8507707f528de8ef21cbdfc5fa607da6 Author: Frédéric-Emmanuel PICCA Date: Tue Nov 4 11:49:32 2008 +0100 * add the init infracstructure for the pseudoAxes engines. include/hkl/hkl-pseudoaxis.h | 10 ++++++++++ src/hkl-pseudoaxis-E4CV.c | 4 ++++ src/hkl-pseudoaxis-E6C.c | 6 ++++++ src/hkl-pseudoaxis-K4CV.c | 4 ++++ src/hkl-pseudoaxis-K6C.c | 6 ++++++ src/hkl-pseudoaxis.c | 29 +++++++++++++++++++++++++++-- 6 files changed, 57 insertions(+), 2 deletions(-) commit 41de52319b0f0e2ed59069225778a0b8b4b4ac71 Author: Frédéric-Emmanuel PICCA Date: Tue Nov 4 11:02:40 2008 +0100 * update the TODO liste TODO | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) commit c42474726338390342a17373e95bb31e9a4595d5 Author: Frédéric-Emmanuel PICCA Date: Tue Nov 4 09:40:44 2008 +0100 * remove the fprintf from the degenerated tests. test/hkl-test-pseudoaxis-E4CV.c | 2 +- test/hkl-test-pseudoaxis-K6C.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) commit 3249774a4b8da0a693454a35688d20ba9ad9fead Author: Frédéric-Emmanuel PICCA Date: Tue Nov 4 09:38:25 2008 +0100 * add a degenerated case for the E6CV pseudoAxes. test/hkl-test-pseudoaxis-E6C.c | 59 ++++++++++++++++++++++++++++++++++++++++ 1 files changed, 59 insertions(+), 0 deletions(-) commit 1a600718805e7e8805179a93b9f18f7d3c60ac02 Author: Frédéric-Emmanuel PICCA Date: Tue Nov 4 09:28:12 2008 +0100 * add a degenerated case for the E4CV geometry. test/hkl-test-pseudoaxis-E4CV.c | 59 +++++++++++++++++++++++++++++++++++++++ 1 files changed, 59 insertions(+), 0 deletions(-) commit 82a46e0502cd3df01fc35f93518b6af157ac8217 Author: Frédéric-Emmanuel PICCA Date: Mon Nov 3 18:36:49 2008 +0100 * now degenerated axes are not used during the permutations. src/hkl-pseudoaxis-auto.c | 48 ++++++++++++++++++++++++++++++--------------- 1 files changed, 32 insertions(+), 16 deletions(-) commit 71f9c9ef8e0b262a64b6bbfc8c37ba3c9727eb2a Author: Picca Frédéric-Emmanuel Date: Sat Oct 25 16:01:23 2008 +0200 * the vector part include/hkl/hkl-vector.h | 58 +++++++++++------- src/hkl-vector.c | 147 ++++++++++++++++++++++++---------------------- 2 files changed, 112 insertions(+), 93 deletions(-) commit e6c89b340c7b4b9d4c99c29d54c8b8847efcc47b Author: Picca Frédéric-Emmanuel Date: Sat Oct 25 15:38:27 2008 +0200 * the source part was reindent include/hkl/hkl-source.h | 2 +- src/hkl-source.c | 16 +++++----------- 2 files changed, 6 insertions(+), 12 deletions(-) commit f604d42204b03cac6403892f0539c63aa85255e9 Author: Frédéric-Emmanuel PICCA Date: Fri Oct 24 18:26:53 2008 +0200 * the sample part include/hkl/hkl-sample.h | 23 +++++----- src/hkl-sample.c | 101 +++++++++++++++++++++++----------------------- 2 files changed, 62 insertions(+), 62 deletions(-) commit 83f7801416989188ea3f5dc18eeef4ac6b5da85d Author: Frédéric-Emmanuel PICCA Date: Fri Oct 24 18:17:55 2008 +0200 * now the quaternion part include/hkl/hkl-quaternion.h | 45 ++++++++++++----------- src/hkl-quaternion.c | 81 +++++++++++++++++++++-------------------- 2 files changed, 65 insertions(+), 61 deletions(-) commit 4bb227fea5784d8e8fef77425beaaa057664e2ba Author: Frédéric-Emmanuel PICCA Date: Fri Oct 24 18:14:27 2008 +0200 * now the pseudoAxes and add an Init method include/hkl/hkl-pseudoaxis.h | 45 +++++++++++++++++++++++++++-------------- src/hkl-pseudoaxis.c | 12 +++++----- 2 files changed, 35 insertions(+), 22 deletions(-) commit fa40963ce2ad341dfe3fbc422eb59f631009434f Author: Frédéric-Emmanuel PICCA Date: Fri Oct 24 18:04:30 2008 +0200 * all remaining pseudoaxes classes. src/hkl-pseudoaxis-E4CV.c | 47 +++++++++++----------- src/hkl-pseudoaxis-K6C.c | 95 +++++++++++++++++++++++--------------------- 2 files changed, 74 insertions(+), 68 deletions(-) commit e6b2f939adbd06276f860aba94020756246769a2 Author: Frédéric-Emmanuel PICCA Date: Fri Oct 24 18:02:36 2008 +0200 * now the K4C part src/hkl-pseudoaxis-K4CV.c | 106 +++++++++++++++++++++++--------------------- 1 files changed, 55 insertions(+), 51 deletions(-) commit da19220525f23e72552a9baf0538f14a6336d411 Author: Frédéric-Emmanuel PICCA Date: Fri Oct 24 18:00:21 2008 +0200 * update the E6C pseudoAxes part. src/hkl-pseudoaxis-E6C.c | 72 +++++++++++++++++++++++----------------------- 1 files changed, 36 insertions(+), 36 deletions(-) commit acb77019e986ef29bce3d909f01b236c95b4cd1e Author: Frédéric-Emmanuel PICCA Date: Fri Oct 24 17:58:08 2008 +0200 * now the common part include/hkl/hkl-pseudoaxis-common.h | 10 ++++++---- src/hkl-pseudoaxis-common.c | 21 +++++++++++---------- 2 files changed, 17 insertions(+), 14 deletions(-) commit e2d69bce0993e22edb7f854154b0f9667deb7f0d Author: Frédéric-Emmanuel PICCA Date: Fri Oct 24 17:55:47 2008 +0200 * update the pseudoAxis auto part. include/hkl/hkl-pseudoaxis-auto.h | 2 +- src/hkl-pseudoaxis-auto.c | 62 ++++++++++++++++++------------------ 2 files changed, 32 insertions(+), 32 deletions(-) commit ab5be360f38bb68757b2e6a1a98abb3fa44e96ca Author: Frédéric-Emmanuel PICCA Date: Fri Oct 24 17:52:56 2008 +0200 * update HklParameter class. include/hkl/hkl-parameter.h | 13 +++++---- src/hkl-parameter.c | 54 ++++++++++++++++++++++-------------------- 2 files changed, 35 insertions(+), 32 deletions(-) commit 4507c791459bc95901ebeb5cd7fce6fd13f310f1 Author: Frédéric-Emmanuel PICCA Date: Fri Oct 24 17:47:24 2008 +0200 * update the HklMatrix class include/hkl/hkl-matrix.h | 38 ++++++++++++------------ src/hkl-matrix.c | 74 +++++++++++++++++++++++----------------------- 2 files changed, 56 insertions(+), 56 deletions(-) commit d572e585c6920fde5da31f2fc5d915b2e7b4c092 Author: Frédéric-Emmanuel PICCA Date: Fri Oct 24 17:36:55 2008 +0200 * update the list class include/hkl/hkl-list.h | 18 ++++---- src/hkl-list.c | 96 ++++++++++++++++++++++++------------------------ test/hkl-test-list.c | 20 +++++----- 3 files changed, 67 insertions(+), 67 deletions(-) commit c5c4ef2ae2348a9887af6ea6651d784c8fb1a958 Author: Frédéric-Emmanuel PICCA Date: Fri Oct 24 17:24:15 2008 +0200 * update the lattice class include/hkl/hkl-lattice.h | 17 ++- src/hkl-lattice.c | 313 +++++++++++++++++++++++---------------------- 2 files changed, 168 insertions(+), 162 deletions(-) commit ee47835c8ba94ddab171e5e60f870510ec6c5f5a Author: Frédéric-Emmanuel PICCA Date: Fri Oct 24 17:13:55 2008 +0200 * indentation src/hkl-axis.c | 4 ++-- src/hkl-detector.c | 2 +- src/hkl-geometry.c | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) commit de802720ed6cbb3a5ea3f5465b780b02a4017090 Author: Frédéric-Emmanuel PICCA Date: Fri Oct 24 17:13:43 2008 +0200 * update the interval class include/hkl/hkl-interval.h | 30 ++-- src/hkl-interval.c | 547 ++++++++++++++++++++++---------------------- 2 files changed, 288 insertions(+), 289 deletions(-) commit 6bbd6810c790c40559252cf94979059e971ce220 Author: Frédéric-Emmanuel PICCA Date: Fri Oct 24 16:29:47 2008 +0200 * just typo and indentation src/hkl-axis.c | 1 - src/hkl-pseudoaxis.c | 39 ++++++++++++++++++++------------------- test/hkl-test-pseudoaxis-K6C.c | 2 +- 3 files changed, 21 insertions(+), 21 deletions(-) commit 4d9fcb2f23b4aaed651596b19790ac082c617f50 Author: Frédéric-Emmanuel PICCA Date: Thu Oct 23 18:28:42 2008 +0200 * separate test printout for each geometry. test/hkl-test-pseudoaxis.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit a2932b156ffbcad4bc55a4a1fcf4e59488901341 Author: Frédéric-Emmanuel PICCA Date: Thu Oct 23 18:27:51 2008 +0200 * add all the default range for the hkl pseudoAxes. src/hkl-pseudoaxis-E4CV.c | 7 +++++++ src/hkl-pseudoaxis-E6C.c | 7 +++++++ src/hkl-pseudoaxis-K4CV.c | 7 +++++++ 3 files changed, 21 insertions(+), 0 deletions(-) commit 59f65ba2a7ff730cb7b9d931bb7aa2576010ca88 Author: Frédéric-Emmanuel PICCA Date: Thu Oct 23 17:44:39 2008 +0200 * do the random tests on only 100 iterations. test/hkl-test-pseudoaxis.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 228bbaf89de83530b81b16d026498c1139cd9c58 Author: Frédéric-Emmanuel PICCA Date: Thu Oct 23 16:59:08 2008 +0200 * put a default range for the K6C_HKL pseudo axis. src/hkl-pseudoaxis-K6C.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) commit 3723a3fcf3a321708080daeb5680e4ba0cd22bd9 Author: Frédéric-Emmanuel PICCA Date: Thu Oct 23 16:49:23 2008 +0200 * add the hkl_pseudo_axis_init and hkl_pseudo_axis_fprintf method use the fprintf method in the hkl_pseudoAxisEngine_fprintf include/hkl/hkl-pseudoaxis.h | 11 ++++++++++- src/hkl-pseudoaxis.c | 38 +++++++++++++++++++++++++++++++------- 2 files changed, 41 insertions(+), 8 deletions(-) commit b7ea0130392db7796d07be4e16c25e9c4dbfdf19 Author: Frédéric-Emmanuel PICCA Date: Thu Oct 23 16:45:14 2008 +0200 * add the hkl_parameter_fprintf method include/hkl/hkl-parameter.h | 3 +++ src/hkl-parameter.c | 9 +++++++++ 2 files changed, 12 insertions(+), 0 deletions(-) commit c733540c9f817cd8e73ab38c299c151a367ac278 Author: Frédéric-Emmanuel PICCA Date: Thu Oct 23 16:44:39 2008 +0200 * add the hkl_axis_config_fprintf method include/hkl/hkl-axis.h | 6 ++++-- src/hkl-axis.c | 6 ++++++ 2 files changed, 10 insertions(+), 2 deletions(-) commit 58da4becd54354dbe0832a181fbc647931a336e8 Author: Frédéric-Emmanuel PICCA Date: Wed Oct 22 15:02:43 2008 +0200 * use the parameter randomize method in the pseudoAxis tests. test/hkl-test-pseudoaxis.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit f5d545b44444757df2fdbb4b7daf4e7a8bb43066 Author: Frédéric-Emmanuel PICCA Date: Wed Oct 22 14:53:30 2008 +0200 * add the "lifting_detector" mode for E6C and K6C src/hkl-pseudoaxis-E6C.c | 9 +++++++++ src/hkl-pseudoaxis-K6C.c | 9 +++++++++ test/hkl-test-pseudoaxis-K6C.c | 2 +- 3 files changed, 19 insertions(+), 1 deletions(-) commit 958b658012de849038f935714eab0a2deda59fb9 Author: Frédéric-Emmanuel PICCA Date: Mon Oct 20 17:18:01 2008 +0200 * now the getter of the pseudoAxesEngine must also set the min and max. This min and max is used in the random test. so put a dummy min and max for the hkl getter. include/hkl/hkl-axis.h | 3 +++ src/hkl-axis.c | 9 +++++++++ src/hkl-pseudoaxis-common.c | 18 ++++++++++++++---- test/hkl-test-pseudoaxis.c | 7 +++++-- 4 files changed, 31 insertions(+), 6 deletions(-) commit 2ad1283a8e8aa4972dcead9a471483e31fe2d0d4 Author: Frédéric-Emmanuel PICCA Date: Mon Oct 20 16:03:35 2008 +0200 * add the hkl_geometry_randomize method. This methode randomize all axis of a geometry. include/hkl/hkl-axis.h | 10 ++++++++++ include/hkl/hkl-geometry.h | 2 ++ src/hkl-axis.c | 15 +++++++++++++++ src/hkl-geometry.c | 9 +++++++++ test/hkl-test-pseudoaxis.c | 4 +--- 5 files changed, 37 insertions(+), 3 deletions(-) commit 3d2ebf580e70ed6bfa168a7bc1926c1283a4d728 Author: Frédéric-Emmanuel PICCA Date: Mon Oct 20 15:20:32 2008 +0200 * update the README for cmake README | 56 ++++++++++++++++++++------------------------------------ 1 files changed, 20 insertions(+), 36 deletions(-) commit 757e6ce924ae77bdd67ac98edbabb2d0e368af80 Author: Frédéric-Emmanuel PICCA Date: Mon Oct 20 14:55:38 2008 +0200 * update the test with cmake CMakeLists.txt | 3 ++- test/CMakeLists.txt | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) commit 6a6f925dea36b51797782609352d90ccf3a9c495 Author: Frédéric-Emmanuel PICCA Date: Mon Oct 20 13:52:52 2008 +0200 * remove config files from scons config-linux2.py | 1 - config-win32.py | 2 -- 2 files changed, 0 insertions(+), 3 deletions(-) commit 1080eb819a7f027747c93ab61dc5381e3659f0fc Author: Frédéric-Emmanuel PICCA Date: Mon Oct 20 13:27:38 2008 +0200 * start working on the eulerian pseudoaxes include/hkl/hkl-pseudoaxis-K4CV.h | 1 + src/hkl-pseudoaxis-K4CV.c | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 0 deletions(-) commit a089f651520261576e9048b3c4bda55c8af00df5 Author: Frédéric-Emmanuel PICCA Date: Mon Oct 20 13:19:37 2008 +0200 * add comments src/hkl-pseudoaxis-K4CV.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit 732715b3ce66da01bd5686a9ef3b7dd677f76c37 Author: Picca Frédéric-Emmanuel Date: Sun Oct 19 18:15:46 2008 +0200 * factorize all the random pseudoAxes tests include/hkl/hkl-geometry-factory.h | 5 ++ include/hkl/hkl-geometry.h | 1 + src/hkl-geometry.c | 2 + test/SConscript | 1 + test/hkl-test-pseudoaxis-E4CV.c | 63 ------------------- test/hkl-test-pseudoaxis-E6C.c | 62 ------------------ test/hkl-test-pseudoaxis-K4CV.c | 62 ------------------ test/hkl-test-pseudoaxis-K6C.c | 64 ------------------- test/hkl-test-pseudoaxis.c | 121 ++++++++++++++++++++++++++++++++++++ test/main.c | 1 + 10 files changed, 131 insertions(+), 251 deletions(-) commit 704e0d021675926e7f6da2cdf53e3c3813465975 Author: Picca Frédéric-Emmanuel Date: Sun Oct 19 16:47:14 2008 +0200 * build a share lib with cmake CMakeLists.txt | 1 - src/CMakeLists.txt | 4 +++- test/CMakeLists.txt | 1 - 3 files changed, 3 insertions(+), 3 deletions(-) commit 2815f66e89a9372a2c7384a54c43b2c944231c48 Author: Picca Frédéric-Emmanuel Date: Sun Oct 19 15:41:26 2008 +0200 * add the cmake build system CMakeLists.txt | 5 +++++ src/CMakeLists.txt | 3 +++ test/CMakeLists.txt | 6 ++++++ 3 files changed, 14 insertions(+), 0 deletions(-) commit 6b59f9efa971da03eff2939d167ea75004a536ee Author: Picca Frédéric-Emmanuel Date: Sat Oct 11 11:14:17 2008 +0200 * update the TODO list TODO | 147 ++++++++++++++++++++++-------------------------------------------- 1 files changed, 49 insertions(+), 98 deletions(-) commit 27f113607d07d9661226139f61fa01e26fa8abc6 Author: Picca Frédéric-Emmanuel Date: Sat Oct 11 10:49:38 2008 +0200 * add and update documentation src/hkl-pseudoaxis.c | 53 ++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 47 insertions(+), 6 deletions(-) commit 51baa88538511145756e4fcc7606092237b74623 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 25 14:53:55 2008 +0200 * add some doc for the pseudoaxis-common part. include/hkl/hkl-pseudoaxis-common.h | 27 +++++++++++++++++++++++++++ 1 files changed, 27 insertions(+), 0 deletions(-) commit 976d9a675801346f6677770006ff825eb96c031d Author: Frédéric-Emmanuel PICCA Date: Thu Sep 25 14:24:43 2008 +0200 * remove all warnings include/hkl/hkl-pseudoaxis-common.h | 4 ++-- src/hkl-pseudoaxis-E4CV.c | 1 - src/hkl-pseudoaxis-E6C.c | 1 - src/hkl-pseudoaxis-common.c | 4 ++-- 4 files changed, 4 insertions(+), 6 deletions(-) commit 4bebd89c88c9ac7584e006acf1bb51ac40d3b88c Author: Frédéric-Emmanuel PICCA Date: Thu Sep 25 13:28:25 2008 +0200 * factorization of the standdard hkl setter. include/hkl/hkl-pseudoaxis-common.h | 4 ++++ src/hkl-pseudoaxis-E4CV.c | 28 +++------------------------- src/hkl-pseudoaxis-E6C.c | 28 +++------------------------- src/hkl-pseudoaxis-common.c | 29 ++++++++++++++++++++++++++--- 4 files changed, 36 insertions(+), 53 deletions(-) commit a7667ec4fcc747556c2066df76a26801d525db57 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 25 13:20:48 2008 +0200 * simplification of the E6C pseudoAxes. src/hkl-pseudoaxis-E6C.c | 80 ++++++---------------------------------- test/hkl-test-pseudoaxis-E6C.c | 3 +- 2 files changed, 13 insertions(+), 70 deletions(-) commit 38f21be94dece5b86706aea6f2f81466bac73e7b Author: Frédéric-Emmanuel PICCA Date: Thu Sep 25 12:13:23 2008 +0200 * simplification of the E4CV modes (faster and less code) src/hkl-pseudoaxis-E4CV.c | 80 ++++++--------------------------------- test/hkl-test-pseudoaxis-E4CV.c | 4 +- 2 files changed, 14 insertions(+), 70 deletions(-) commit 2a75499c2d263c8d14b9500c09aae605792883c2 Author: Frédéric-Emmanuel PICCA Date: Wed Sep 24 17:24:46 2008 +0200 * add the E6C diffractometer. include/hkl/hkl-pseudoaxis-E6C.h | 12 ++ src/SConscript | 1 + src/hkl-pseudoaxis-E6C.c | 206 ++++++++++++++++++++++++++++++++++++++ test/SConscript | 1 + test/hkl-test-pseudoaxis-E6C.c | 167 ++++++++++++++++++++++++++++++ test/main.c | 1 + 6 files changed, 388 insertions(+), 0 deletions(-) commit a5c32b134959b2670bbfb3b278e254d8db4dd253 Author: Frédéric-Emmanuel PICCA Date: Wed Sep 17 12:01:20 2008 +0200 * add the constant mode to the K4CV diffractometer. src/hkl-pseudoaxis-K4CV.c | 224 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 224 insertions(+), 0 deletions(-) commit 33e5a6f397b6e3d6d7efaba052d938fa1807ef0b Author: Frédéric-Emmanuel PICCA Date: Wed Sep 17 11:49:40 2008 +0200 * rework the K4C bissector mode equations src/hkl-pseudoaxis-K4CV.c | 14 ++++++-------- 1 files changed, 6 insertions(+), 8 deletions(-) commit 605b8f7dbc9db13aacf50372bf5ab1cfdc7a6e3b Author: Frédéric-Emmanuel PICCA Date: Tue Sep 16 17:08:46 2008 +0200 * add the constant phi vertical mode to the K6C geometry. src/hkl-pseudoaxis-K6C.c | 75 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 75 insertions(+), 0 deletions(-) commit e6f35e119ad9ceea80a15cf9d1d247396bdcdc25 Author: Frédéric-Emmanuel PICCA Date: Tue Sep 16 17:02:49 2008 +0200 * add the constant chi vertical mode to the K6C diffractometer. src/hkl-pseudoaxis-K6C.c | 73 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 73 insertions(+), 0 deletions(-) commit 34c5514074b764b0d97a955ed58862a174043d36 Author: Frédéric-Emmanuel PICCA Date: Tue Sep 16 08:56:42 2008 +0200 * add the constant omega vertical mode to the K6C diffractometer. src/hkl-pseudoaxis-K6C.c | 84 +++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 80 insertions(+), 4 deletions(-) commit b9bce4641aba35e10c60c6201dead3b467129af8 Author: Frédéric-Emmanuel PICCA Date: Mon Sep 15 15:22:20 2008 +0200 * add the bissector vertical mode. src/hkl-pseudoaxis-K6C.c | 95 ++++++++++++++++++++++++++++++++++++--- test/hkl-test-pseudoaxis-K6C.c | 4 +- 2 files changed, 89 insertions(+), 10 deletions(-) commit 3eec3944db4fc247fed43b44c0e6dd76a5beaf84 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 4 18:25:43 2008 +0200 * no more gsl_vector_prt function use the data member of gsl_vector. src/hkl-pseudoaxis-K6C.c | 8 ++++---- src/hkl-pseudoaxis-auto.c | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) commit 8982c2feead9ee0230f40294f3b28a56decea485 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 4 18:06:09 2008 +0200 * better E4CV bissector mode function. src/hkl-pseudoaxis-E4CV.c | 7 +++---- 1 files changed, 3 insertions(+), 4 deletions(-) commit ea788d5ce0cefaa006728e1bd0a74d7768cef911 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 4 17:04:09 2008 +0200 * typo src/hkl-pseudoaxis-auto.c | 6 +----- 1 files changed, 1 insertions(+), 5 deletions(-) commit 48672b6efa87d67f1fbd85cba81022972407bc06 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 4 17:03:59 2008 +0200 * better K6C bissector horizontal function src/hkl-pseudoaxis-K6C.c | 6 ++---- 1 files changed, 2 insertions(+), 4 deletions(-) commit 97e77a1d5db8f8d11ac48221c75cceb0e5f7e2c8 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 4 17:03:27 2008 +0200 * do not restrict the angle after the search. src/hkl-pseudoaxis-auto.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 60a136dd38bb5bbcd136644a0d79149d42b3b676 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 4 16:59:11 2008 +0200 * fprintf of a pseudoAxes also return the restricted symm angle src/hkl-pseudoaxis.c | 12 +++++++++--- 1 files changed, 9 insertions(+), 3 deletions(-) commit c14e22930a719af90270306b58d106300818ca4a Author: Frédéric-Emmanuel PICCA Date: Thu Sep 4 14:37:23 2008 +0200 * remove un unnecessary variable in the test_sector function. src/hkl-pseudoaxis-auto.c | 8 ++------ 1 files changed, 2 insertions(+), 6 deletions(-) commit e58f8a4cecb8a207cfe91c124678a58cd89456d6 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 4 08:33:51 2008 +0200 * small documentation improvement. src/hkl-pseudoaxis.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) commit 1ad5ec21c3cf78cac779f4a47db48da8cc11e370 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 4 08:24:58 2008 +0200 * no more miss computation of the missed mode computation during tests src/hkl-pseudoaxis-K6C.c | 8 ++++---- src/hkl-pseudoaxis-auto.c | 24 ++++++++++++++++++------ test/hkl-test-pseudoaxis-E4CV.c | 2 +- test/hkl-test-pseudoaxis-K4CV.c | 4 ++-- test/hkl-test-pseudoaxis-K6C.c | 3 ++- 5 files changed, 27 insertions(+), 14 deletions(-) commit 4437886435c231aa51bcd63bf2a5c15ea121bccb Author: Frédéric-Emmanuel PICCA Date: Thu Sep 4 08:02:27 2008 +0200 * use op_len instead of op_max in the perm_r It seems easier to understrand. src/hkl-pseudoaxis-auto.c | 12 ++++++++---- 1 files changed, 8 insertions(+), 4 deletions(-) commit 82a2ad63d3dea403c956017949025cf9227aeb91 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 4 08:00:16 2008 +0200 * small bug in the permutation calculation. src/hkl-pseudoaxis-auto.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit dc8c0b8d1ceca59bfb19ef6c7b441dc2a14f25a9 Author: Frédéric-Emmanuel PICCA Date: Wed Sep 3 17:45:41 2008 +0200 * print the miss calculated pseudoAxes for each mode. test/hkl-test-pseudoaxis-E4CV.c | 3 ++- test/hkl-test-pseudoaxis-K4CV.c | 3 ++- test/hkl-test-pseudoaxis-K6C.c | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) commit 468aff0f9daaf360f09c9af967bb99ba0aaff9aa Author: Frédéric-Emmanuel PICCA Date: Wed Sep 3 17:19:18 2008 +0200 * first kappa6C pseudoAxeEngine. include/hkl/hkl-pseudoaxis-K6C.h | 12 +++ src/SConscript | 1 + src/hkl-pseudoaxis-K6C.c | 113 +++++++++++++++++++++++++++++ src/hkl-pseudoaxis.c | 3 +- test/SConscript | 1 + test/hkl-test-pseudoaxis-K6C.c | 145 ++++++++++++++++++++++++++++++++++++++ test/main.c | 1 + 7 files changed, 275 insertions(+), 1 deletions(-) commit d84ab9d6a1f790b7befa206693dd6f57537f1359 Author: Frédéric-Emmanuel PICCA Date: Wed Sep 3 09:57:32 2008 +0200 * use the right mode in the kappa pseudoAxesEngine src/hkl-pseudoaxis-K4CV.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 849392b81bc461bed8c1e65882d59f8e0a0f8f8a Author: Frédéric-Emmanuel PICCA Date: Tue Sep 2 16:51:57 2008 +0200 * no more HklPseudoAxeEngineFunc use only getter and setter. split the pseudoAxeEngine.c in an auto part use only for numerical pseudoAxes. As self->geometry is set each time we call the setter, the solver is slover. include/hkl/hkl-pseudoaxis-E4CV.h | 125 +---------- include/hkl/hkl-pseudoaxis-K4CV.h | 91 +------- include/hkl/hkl-pseudoaxis-auto.h | 14 + include/hkl/hkl-pseudoaxis.h | 49 +--- src/SConscript | 3 + src/hkl-pseudoaxis-E4CV.c | 170 +++++++++++++ src/hkl-pseudoaxis-K4CV.c | 108 +++++++++ src/hkl-pseudoaxis-auto.c | 250 ++++++++++++++++++++ src/hkl-pseudoaxis-common.c | 4 + src/hkl-pseudoaxis.c | 472 ++++++------------------------------- test/hkl-test-pseudoaxis-E4CV.c | 8 +- test/hkl-test-pseudoaxis-K4CV.c | 18 +- 12 files changed, 649 insertions(+), 663 deletions(-) commit 4a9cb31dd474dda40135528009e1be029986c1f5 Author: Frédéric-Emmanuel PICCA Date: Tue Sep 2 09:04:04 2008 +0200 * remove the to_pseudoAxes from PseudoAxesEngine. include/hkl/hkl-pseudoaxis-K4CV.h | 10 +++++++ include/hkl/hkl-pseudoaxis.h | 2 - src/hkl-pseudoaxis.c | 30 ----------------------- test/hkl-test-pseudoaxis-E4CV.c | 3 +- test/hkl-test-pseudoaxis-K4CV.c | 48 +++--------------------------------- 5 files changed, 16 insertions(+), 77 deletions(-) commit 40d89e587d47577e75627bd74c0c32ce589e4279 Author: Frédéric-Emmanuel PICCA Date: Tue Sep 2 08:53:46 2008 +0200 * no more crash of fprintf if the geometry was no set in PseudoAxesEngine. src/hkl-pseudoaxis.c | 44 ++++++++++++++++++++++---------------- test/hkl-test-pseudoaxis-E4CV.c | 26 +++++++++++----------- 2 files changed, 38 insertions(+), 32 deletions(-) commit 5f342e4330da4452c6e88027fe4905a47de83d4c Author: Frédéric-Emmanuel PICCA Date: Tue Sep 2 08:10:05 2008 +0200 * start to use the get set in the E4CV pseudoAxeEngine. include/hkl/hkl-pseudoaxis-E4CV.h | 10 ++++++++++ include/hkl/hkl-pseudoaxis.h | 4 ++-- src/hkl-pseudoaxis.c | 11 +++++------ 3 files changed, 17 insertions(+), 8 deletions(-) commit b004305209632113451d5f2d5cbff2daf0ea3992 Author: Frédéric-Emmanuel PICCA Date: Fri Aug 29 17:57:44 2008 +0200 * create a common part for the pseudoAxeEngine. include/hkl/hkl-pseudoaxis-E4CV.h | 1 + include/hkl/hkl-pseudoaxis-K4CV.h | 1 + include/hkl/hkl-pseudoaxis-common.h | 7 +++ include/hkl/hkl-pseudoaxis.h | 4 +- src/SConscript | 1 + src/hkl-pseudoaxis-common.c | 80 +++++++++++++++++++++++++++++++++++ src/hkl-pseudoaxis.c | 45 ------------------- 7 files changed, 91 insertions(+), 48 deletions(-) commit 95cb64e01583e346302b40027fd160f1e5e3bc57 Author: Frédéric-Emmanuel PICCA Date: Fri Aug 29 17:31:30 2008 +0200 * refactor the getset part of the pseudoAxesEngine include/hkl/hkl-pseudoaxis.h | 51 ++++++++------------ src/hkl-pseudoaxis.c | 104 +++++++++++++++++++++++++++++++---------- 2 files changed, 99 insertions(+), 56 deletions(-) commit 7feb06b7d190f1b9032e71446f6356839562df5e Author: Frédéric-Emmanuel PICCA Date: Fri Aug 29 16:54:29 2008 +0200 * start to add the Getter and Setter in the PseudoAxisEngine. also refactoring of the PseudoAxis geometry specific constructors. include/hkl/hkl-pseudoaxis-E4CV.h | 85 ++++++------ include/hkl/hkl-pseudoaxis-K4CV.h | 30 ++--- include/hkl/hkl-pseudoaxis.h | 84 +++++++++++-- src/hkl-pseudoaxis.c | 256 +++++++++++++++++++++++++++++-------- test/hkl-test-pseudoaxis-E4CV.c | 2 +- test/hkl-test-pseudoaxis-K4CV.c | 4 +- 6 files changed, 335 insertions(+), 126 deletions(-) commit d0aca04cc00766f8ece48497d29887776f2f7976 Author: Frédéric-Emmanuel PICCA Date: Fri Aug 29 10:51:09 2008 +0200 * revert all inlining till I understand well the inlining... include/hkl/hkl-axis.h | 7 +------ include/hkl/hkl-quaternion.h | 41 +++-------------------------------------- include/hkl/hkl-vector.h | 6 +----- src/hkl-axis.c | 7 +++++++ src/hkl-quaternion.c | 38 ++++++++++++++++++++++++++++++++++++++ src/hkl-vector.c | 5 +++++ 6 files changed, 55 insertions(+), 49 deletions(-) commit c00fc96aaadd7b4a3b094843916c14674b72a2c0 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 15:03:47 2008 +0200 * documentation. src/hkl-pseudoaxis.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) commit 8d7c11a002ca19931d2543d3152c1139358abc28 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 14:31:36 2008 +0200 * inline a few more methods to speed calculation. include/hkl/hkl-axis.h | 15 +++++++++++- include/hkl/hkl-quaternion.h | 53 +++++++++++++++++++++++++++++++++++++++-- include/hkl/hkl-vector.h | 7 ++++- src/hkl-axis.c | 6 ---- src/hkl-quaternion.c | 40 ------------------------------- src/hkl-vector.c | 6 ---- 6 files changed, 70 insertions(+), 57 deletions(-) commit 811236af9a8b3006b3f65418192a8234abbe5c76 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 11:48:56 2008 +0200 * the geometry_init_geometry now also copy the holders no more dirty axes. src/hkl-geometry.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit 742b8b08a46e0fd4f33ed399006f24db9cf4ff2d Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 11:02:31 2008 +0200 * use the x[] instead of *x notation in the method decalrations. src/hkl-pseudoaxis.c | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-) commit 8b829b7d80ec7f0c89e95ff5f6f4aaa96abb5762 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 10:50:06 2008 +0200 * comments updated src/hkl-pseudoaxis.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) commit 92e18ce57b340078df0b5aead6ab8bc106034a55 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 10:46:04 2008 +0200 * add the find_first_geometry documentation src/hkl-pseudoaxis.c | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 deletions(-) commit 8b4358a346d33151c8395577987424b54bdc27f6 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 10:39:52 2008 +0200 * add documentation src/hkl-pseudoaxis.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) commit 2b2c2d5d7074a1b4d4c0fdf1b47d3be2adc7be5c Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 10:39:29 2008 +0200 * use self instead of engine in the add_geometry method. src/hkl-pseudoaxis.c | 22 +++++++++++----------- 1 files changed, 11 insertions(+), 11 deletions(-) commit b3f24cec4a1519bade3abd839225bef38f420ba2 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 10:31:20 2008 +0200 * use the variable array length of C99 in the to_geometry. src/hkl-pseudoaxis.c | 9 +++------ 1 files changed, 3 insertions(+), 6 deletions(-) commit b44e9b99e983450d5826f82561275e70a7c8f0d6 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 10:21:02 2008 +0200 * fix indentation src/hkl-pseudoaxis.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 4f40c28710b151fc33ecfb1c59c1c73341bec3f9 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 10:20:35 2008 +0200 * rename jacobian into find_degenerated src/hkl-pseudoaxis.c | 28 +++++++++++++++++++++------- 1 files changed, 21 insertions(+), 7 deletions(-) commit 46df53194eb957bc33652ac69748603fa02e6e74 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 09:36:55 2008 +0200 rename the find_geoemtry method to be more explicite src/hkl-pseudoaxis.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit b3d22b2e0c53478bc9d8c86cafd35d73587807fd Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 09:36:34 2008 +0200 * use the right signature for the compute_jacobian function src/hkl-pseudoaxis.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit 0c93e56099932a3da1bc43b87e24c74247ee0d46 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 08:57:52 2008 +0200 * add a degenerated case in the K4CV pseudoAxesEngine. test/hkl-test-pseudoaxis-K4CV.c | 65 ++++++++++++++++++++++++++++++++++---- 1 files changed, 58 insertions(+), 7 deletions(-) commit 7fa62fdb8bf540981ac097630231a519327c25c5 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 08:49:23 2008 +0200 * add a compute_jacobian method to work on degenerated axes. src/hkl-pseudoaxis.c | 55 ++++++++++++++++++++++++++++++++----------------- 1 files changed, 36 insertions(+), 19 deletions(-) commit 563378cd78bb1fe252a9089b0292cc350f067ab1 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 08:30:34 2008 +0200 * use fprintf to stderr instead of stdout in the test methods test/hkl-test.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 112b986c20506d2299e55e8cf75907c0e4cc48cf Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 08:30:08 2008 +0200 * print the number of missed calculated pseudoAxes. test/hkl-test-pseudoaxis-E4CV.c | 5 ++++- test/hkl-test-pseudoaxis-K4CV.c | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) commit bd9d6010ecab0c53a7751b2831a2cef81754e2c9 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 08:29:42 2008 +0200 *small optimisation of the solver src/hkl-pseudoaxis.c | 7 ++----- 1 files changed, 2 insertions(+), 5 deletions(-) commit b94a3b99c558a1ecb71790f0963efca861c06598 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 08:17:12 2008 +0200 * update the fdjacobian in the test sector method. src/hkl-pseudoaxis.c | 32 ++++++++++++++++---------------- 1 files changed, 16 insertions(+), 16 deletions(-) commit 4fbe97da009f017c1c385d1ccd9587110808def6 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 28 08:16:38 2008 +0200 * remove a memory leak from the PseudoAxisengine solver. leak when the solution could not be found -> status = GSL_CONTINUE return without deallocating the memory. src/hkl-pseudoaxis.c | 26 ++++++++++++++------------ 1 files changed, 14 insertions(+), 12 deletions(-) commit 1528f75b705605ce9c8e9a52902e4587c51a3ef1 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 27 17:43:54 2008 +0200 * remove un-needed method src/hkl-holder.c | 6 ------ test/hkl-test-holder.c | 6 +++--- 2 files changed, 3 insertions(+), 9 deletions(-) commit acfa0f8bb65c121d2a226cd76c1eea6ce195b36c Author: Frédéric-Emmanuel PICCA Date: Wed Aug 27 17:38:18 2008 +0200 * first kappa4C working HKL pseudoAxesEngine. include/hkl/hkl-pseudoaxis-K4CV.h | 90 +++++++++++++++++++++ src/hkl-pseudoaxis.c | 26 +++---- test/SConscript | 3 +- test/hkl-test-pseudoaxis-E4CV.c | 154 +++++++++++++++++++++++++++++++++++ test/hkl-test-pseudoaxis-K4CV.c | 161 +++++++++++++++++++++++++++++++++++++ test/hkl-test-pseudoaxis.c | 154 ----------------------------------- test/main.c | 3 +- 7 files changed, 419 insertions(+), 172 deletions(-) commit 4030c3a55495d2e408536fecb814ad6fcfa922fd Author: Frédéric-Emmanuel PICCA Date: Wed Aug 27 15:11:49 2008 +0200 * compact the E4CV pseudoAxes initialization include/hkl/hkl-pseudoaxis-E4CV.h | 44 +++++++----------------------------- 1 files changed, 9 insertions(+), 35 deletions(-) commit 4cfa20f3cc15727a5390a7ed0054827826f3de45 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 27 15:00:33 2008 +0200 * now use directly the right function instead of a copy include/hkl/hkl-pseudoaxis-E4CV.h | 6 +++--- include/hkl/hkl-pseudoaxis.h | 2 +- src/hkl-pseudoaxis.c | 6 +++--- test/hkl-test-pseudoaxis.c | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) commit 0d61c9b9cb8b8c0dc3f73f4ad1aadc5a57149cf3 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 27 14:55:38 2008 +0200 * add a name to the pseudoAxesEngineFunc and most of the E4CV functions. also reduce the number of iteration before stopping looking for a solution. include/hkl/hkl-pseudoaxis-E4CV.h | 105 +++++++++++++++++++++++++++++-------- include/hkl/hkl-pseudoaxis.h | 1 + src/hkl-pseudoaxis.c | 2 +- test/hkl-test-pseudoaxis.c | 53 ++++++++++-------- 4 files changed, 113 insertions(+), 48 deletions(-) commit 1b13f88466aa89d32e1071622abe2eba9ef72480 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 27 13:00:26 2008 +0200 * better fprintf in the PseudoAxesengine. src/hkl-pseudoaxis.c | 13 +++++++++---- 1 files changed, 9 insertions(+), 4 deletions(-) commit 13e0866b82136ab35c962ba4eea8b7ee62036065 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 27 11:46:21 2008 +0200 refactoring of the PseudoAxesEngien test test/hkl-test-pseudoaxis.c | 29 +++++++++++------------------ 1 files changed, 11 insertions(+), 18 deletions(-) commit e0eacc5049c48fa1b93abe01bb343f2c46d69c83 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 27 11:42:31 2008 +0200 * remove a bug in the new hkl_geometry_init_geometry add also the pseudoAxes fprintf method. include/hkl/hkl-pseudoaxis-E4CV.h | 17 +++++++++------ include/hkl/hkl-pseudoaxis.h | 4 ++- src/hkl-geometry.c | 6 +++- src/hkl-pseudoaxis.c | 38 +++++++++++++++++++++++++++++------- test/hkl-test-pseudoaxis.c | 25 +++++++++++++---------- 5 files changed, 61 insertions(+), 29 deletions(-) commit 2d62bdd073a1e35cd43e32a3eb8f4280b85fc70a Author: Frédéric-Emmanuel PICCA Date: Wed Aug 27 10:39:49 2008 +0200 * optimization src/hkl-pseudoaxis.c | 64 +++++++++++++++++++++++++------------------------ 1 files changed, 33 insertions(+), 31 deletions(-) commit 9bbc2206e4df3aec6d36aa75df63a1349a6aea88 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 27 10:00:21 2008 +0200 * optimization of the geometries allocation in the pseudoAxeEngine We now allocate everything in the add_geometry method then we just copy the axes config part from the engine->geometry to the engine->geometries with the new hkl_geometry_init_geometry method. include/hkl/hkl-geometry.h | 3 ++ include/hkl/hkl-pseudoaxis.h | 1 + src/hkl-geometry.c | 16 ++++++++++++++ src/hkl-pseudoaxis.c | 45 +++++++++++++++++++++++------------------ 4 files changed, 45 insertions(+), 20 deletions(-) commit d9f14f10cffff3b03f26afe7e5fd934a1c0e01b5 Author: Frédéric-Emmanuel PICCA Date: Wed Aug 27 09:22:49 2008 +0200 * now all geometries are provided. src/hkl-pseudoaxis.c | 465 ++++++++++++++++++++++---------------------- test/hkl-test-pseudoaxis.c | 2 +- 2 files changed, 231 insertions(+), 236 deletions(-) commit bbbb9105b407efb0145d3fe9975f42f0502d1696 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 26 14:48:16 2008 +0200 * refactoring of all the PseudoAxes SConstruct | 2 +- config-linux2.py | 1 + include/hkl/hkl-geometry.h | 3 + include/hkl/hkl-pseudoaxis-E4CV.h | 38 +++- include/hkl/hkl-pseudoaxis.h | 91 +++----- src/SConscript | 1 - src/hkl-geometry.c | 13 + src/hkl-pseudoaxis-auto.c | 339 --------------------------- src/hkl-pseudoaxis.c | 466 +++++++++++++++++++++++++----------- test/hkl-test-pseudoaxis.c | 200 ++++------------- test/main.c | 2 +- 11 files changed, 452 insertions(+), 704 deletions(-) commit acfd67299960d732b457f75f24d97280ca3e6c91 Author: Frédéric-Emmanuel PICCA Date: Mon Aug 25 18:06:49 2008 +0200 * reorganize a little bit the geometry + holder to improve speed. include/hkl/hkl-geometry.h | 8 -------- src/hkl-geometry.c | 35 +++++++++++++++++++++++++++++------ src/hkl-holder.c | 24 ------------------------ test/hkl-test-geometry.c | 4 ++++ test/hkl-test-holder.c | 36 ------------------------------------ 5 files changed, 33 insertions(+), 74 deletions(-) commit a91150cd8c10e17df16786b42362ed64cf20cd4e Author: Frédéric-Emmanuel PICCA Date: Mon Aug 25 17:45:12 2008 +0200 * now Detector is normal struct no more new/free include/hkl/hkl-detector.h | 7 +---- include/hkl/hkl-sample.h | 2 +- src/hkl-detector.c | 33 ++---------------------- src/hkl-pseudoaxis-auto.c | 2 +- src/hkl-pseudoaxis.c | 2 +- src/hkl-sample.c | 5 +-- test/hkl-test-detector.c | 35 +++----------------------- test/hkl-test-pseudoaxis.c | 21 ++++----------- test/hkl-test-sample.c | 59 ++++++++++++++----------------------------- 9 files changed, 38 insertions(+), 128 deletions(-) commit fb019aa91616bf61cb04e50959d3605126464149 Author: Frédéric-Emmanuel PICCA Date: Mon Aug 25 17:42:44 2008 +0200 * optimization in the holder part. src/hkl-holder.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) commit 1fe5c074edaa948556984f93af3b588ecdfeb3c5 Author: Frédéric-Emmanuel PICCA Date: Mon Aug 25 14:09:19 2008 +0200 * small refactoring of the geometry add holder class src/hkl-geometry.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) commit 30d0f50331b1d04e8fdee6d79beae442f210b633 Author: Frédéric-Emmanuel PICCA Date: Mon Aug 25 14:08:40 2008 +0200 * just a refactoring of the geometry factory include/hkl/hkl-geometry-factory.h | 40 ++++++++++++++++++------------------ 1 files changed, 20 insertions(+), 20 deletions(-) commit 5b35453ab6735910b26ff84892e27d7c6b04a70a Author: Frédéric-Emmanuel PICCA Date: Mon Aug 25 13:48:15 2008 +0200 * remove a leak in the Geometry. src/hkl-geometry.c | 15 ++++++++++----- 1 files changed, 10 insertions(+), 5 deletions(-) commit 3dc4907085bb73661e5094087a8d6411f1ee4410 Author: Frédéric-Emmanuel PICCA Date: Mon Aug 25 13:33:31 2008 +0200 * use sel fin the geometry class include/hkl/hkl-geometry.h | 23 ++++++++------- src/hkl-geometry.c | 38 +++++++++++++------------- src/hkl-holder.c | 65 +++++++++++++++++++++----------------------- 3 files changed, 62 insertions(+), 64 deletions(-) commit 658e2a265361ce8008f7de7c64edda77ff5eb6ca Author: Picca Frédéric-Emmanuel Date: Fri Aug 22 17:27:58 2008 +0200 * no more list in the Geometry include/hkl/hkl-axis.h | 5 +-- include/hkl/hkl-geometry.h | 7 +--- src/hkl-axis.c | 36 ++------------------- src/hkl-geometry.c | 45 +++++++++----------------- src/hkl-holder.c | 30 ++++++++--------- src/hkl-pseudoaxis-auto.c | 11 +++--- src/hkl-pseudoaxis.c | 2 +- test/hkl-test-axis.c | 75 +++++++++++++++++++------------------------ test/hkl-test-geometry.c | 6 ++-- test/hkl-test-pseudoaxis.c | 8 ++-- test/hkl-test-sample.c | 16 +++++----- 11 files changed, 91 insertions(+), 150 deletions(-) commit 89f2689eeeaad0e0af83c108c0c413500b91d902 Author: Picca Frédéric-Emmanuel Date: Fri Aug 22 16:33:12 2008 +0200 * no more HklList in the holder include/hkl/hkl-geometry.h | 3 ++- src/hkl-holder.c | 34 ++++++++++++++++++---------------- 2 files changed, 20 insertions(+), 17 deletions(-) commit 2687356c7b704469d9c64d60714477bb2274d135 Author: Picca Frédéric-Emmanuel Date: Fri Aug 22 16:07:42 2008 +0200 * now holder and geometry are thigten include/hkl/hkl-geometry.h | 31 ++++++++- include/hkl/hkl-holder.h | 32 --------- src/hkl-geometry.c | 4 +- src/hkl-holder.c | 18 +++--- test/hkl-test-holder.c | 161 +++----------------------------------------- 5 files changed, 50 insertions(+), 196 deletions(-) commit ee6cdb5eee2f161d578ad575d62b59d0c68ad904 Author: Picca Frédéric-Emmanuel Date: Fri Aug 22 14:28:52 2008 +0200 * change the type of the HklHolder list in the HklGeometry include/hkl/hkl-geometry.h | 3 +- include/hkl/hkl-holder.h | 7 ++-- src/hkl-detector.c | 2 +- src/hkl-geometry.c | 40 ++++++++++--------------- src/hkl-holder.c | 46 ++++++++++------------------ src/hkl-pseudoaxis-auto.c | 2 +- src/hkl-pseudoaxis.c | 2 +- src/hkl-sample.c | 4 +- test/hkl-test-geometry.c | 9 ++--- test/hkl-test-holder.c | 70 +++++++++++++++++++++---------------------- test/main.c | 2 +- 11 files changed, 82 insertions(+), 105 deletions(-) commit f601b9cdd4f19bc8924c913d4f72c730f57b56e7 Author: Picca Frédéric-Emmanuel Date: Fri Aug 22 13:41:45 2008 +0200 * idem for the source include/hkl/hkl-geometry.h | 2 +- include/hkl/hkl-source.h | 12 ++----- src/hkl-detector.c | 2 +- src/hkl-geometry.c | 6 +-- src/hkl-pseudoaxis-auto.c | 2 +- src/hkl-pseudoaxis.c | 2 +- src/hkl-sample.c | 2 +- src/hkl-source.c | 75 ++++++++---------------------------------- test/hkl-test-source.c | 77 ++++++++++++++------------------------------ 9 files changed, 48 insertions(+), 132 deletions(-) commit 41c7c35790f7f162483d6ac8e79fae97c5c938f7 Author: Picca Frédéric-Emmanuel Date: Fri Aug 22 10:07:49 2008 +0200 * idem for quaternions include/hkl/hkl-holder.h | 2 +- include/hkl/hkl-quaternion.h | 10 ++-------- src/hkl-detector.c | 2 +- src/hkl-holder.c | 9 ++++----- src/hkl-pseudoaxis-auto.c | 2 +- src/hkl-pseudoaxis.c | 2 +- src/hkl-quaternion.c | 32 +------------------------------- src/hkl-sample.c | 4 ++-- test/hkl-test-holder.c | 16 ++++++++-------- test/hkl-test-quaternion.c | 33 ++++++++------------------------- 10 files changed, 29 insertions(+), 83 deletions(-) commit 0656b8f4b7386dd6ae3b7947758b89f9ff171750 Author: Picca Frédéric-Emmanuel Date: Fri Aug 22 10:00:58 2008 +0200 *idem for the HklMatrix include/hkl/hkl-matrix.h | 11 +------- include/hkl/hkl-sample.h | 4 +- src/hkl-matrix.c | 48 ++++-------------------------------- src/hkl-pseudoaxis-auto.c | 2 +- src/hkl-pseudoaxis.c | 2 +- src/hkl-sample.c | 24 ++++++++---------- test/hkl-test-matrix.c | 59 +++++++++++++------------------------------- test/hkl-test-sample.c | 6 ++-- 8 files changed, 44 insertions(+), 112 deletions(-) commit a2f666a279147533a4af3f32a93457377848fe38 Author: Picca Frédéric-Emmanuel Date: Fri Aug 22 09:36:23 2008 +0200 * use Hklvector as a struct no more pointer in other struct. include/hkl/hkl-source.h | 2 +- include/hkl/hkl-vector.h | 7 +------ src/hkl-detector.c | 2 +- src/hkl-pseudoaxis.c | 2 +- src/hkl-source.c | 13 ++++++------- src/hkl-vector.c | 35 +---------------------------------- test/hkl-test-axis.c | 24 ++++++++---------------- test/hkl-test-holder.c | 10 ++++------ test/hkl-test-source.c | 14 +++++++------- test/hkl-test-vector.c | 40 +++------------------------------------- 10 files changed, 33 insertions(+), 116 deletions(-) commit 4314c1f5b42ed3187a964bd7c682c097773c4d0d Author: Frédéric-Emmanuel PICCA Date: Mon Jun 16 15:30:23 2008 +0200 * move the hkl common part to the pseudoAxis.c file include/hkl/hkl-pseudoaxis-E4CV.h | 56 +----------------------------------- include/hkl/hkl-pseudoaxis.h | 2 + src/hkl-pseudoaxis-auto.c | 6 ++-- src/hkl-pseudoaxis.c | 52 ++++++++++++++++++++++++++++++++++ 4 files changed, 59 insertions(+), 57 deletions(-) commit 1495158d7f152769ff977850ca25d6f705075f0d Author: Frédéric-Emmanuel PICCA Date: Fri Jun 13 15:46:28 2008 +0200 * add the pseudoAxisEngineFunc class to help deal with more pseudoAxes. include/hkl/hkl-pseudoaxis-E4CV.h | 109 ++++++++++++++++++++++++++++ include/hkl/hkl-pseudoaxis.h | 27 ++++++-- src/hkl-pseudoaxis-auto.c | 143 +++++++------------------------------ src/hkl-pseudoaxis.c | 15 +++-- test/hkl-test-pseudoaxis.c | 14 +++- 5 files changed, 175 insertions(+), 133 deletions(-) commit 999a74ed397bb2cc32573f77f5aa01357f3a3eb5 Author: Frédéric-Emmanuel PICCA Date: Fri Jun 13 13:53:26 2008 +0200 * split the auto_equiv_geometries in 4 functions. src/hkl-pseudoaxis-auto.c | 252 ++++++++++++++++++++++++++++----------------- 1 files changed, 157 insertions(+), 95 deletions(-) commit c2717261e06481b77c2357d029205de363a3b1ec Author: Frédéric-Emmanuel PICCA Date: Fri Jun 13 11:49:38 2008 +0200 * add a get_axis_const to the HklGeometry class. include/hkl/hkl-geometry.h | 2 ++ src/hkl-geometry.c | 9 +++++++++ 2 files changed, 11 insertions(+), 0 deletions(-) commit 667e007db7162bd6374f3d92b270c6d78d4e3b57 Author: Frédéric-Emmanuel PICCA Date: Fri Jun 13 10:08:53 2008 +0200 * bug in the holder test suite test/hkl-test-holder.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) commit 4bc1df996dfa200dac8e69c9bdd149b30aba6d64 Author: Frédéric-Emmanuel PICCA Date: Fri Jun 13 09:20:29 2008 +0200 * add an equiv_geometry to the pseudoAxeEngine class. Now from one solution the equiv_geometry gives you the other solutions in the different quadrant of [0 2pi] for each axis. include/hkl/hkl-pseudoaxis.h | 3 + src/SConscript | 3 +- src/hkl-pseudoaxis-auto.c | 152 +++++++++++++++++++++++++++++++++++++++-- src/hkl-pseudoaxis.c | 5 ++ test/hkl-test-pseudoaxis.c | 150 +++++++++++++++++++++++++++-------------- 5 files changed, 252 insertions(+), 61 deletions(-) commit e9e449928e3a3e6126c7da9e98c79cada4c5bf5d Author: Frédéric-Emmanuel PICCA Date: Thu Jun 12 17:55:22 2008 +0200 * the fprintf method of the geometry now print the real value of the axes. No more [-pi pi] conversion of the angles. src/hkl-geometry.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) commit 82d18573131af57907dc38996d6f3ab27ef5cd79 Author: Frédéric-Emmanuel PICCA Date: Thu Jun 12 17:53:51 2008 +0200 * correct the kappa geometries include/hkl/hkl-geometry-factory.h | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 232aaa388e9e94edd8b8cdcd059bac9203000864 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 10 13:36:28 2008 +0200 * add a printf method to the Geometry class. include/hkl/hkl-geometry.h | 2 ++ src/hkl-geometry.c | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 1 deletions(-) commit 3423efbc9ce2807c52dfdf72350e5e4bfefc12de Author: Frédéric-Emmanuel PICCA Date: Tue Jun 10 09:43:28 2008 +0200 * remove an unneeded part in the pseudoAxis src/hkl-pseudoaxis-auto.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) commit 92c8bf89b4020498d845e355964498ca3e797756 Merge: 6da710f 7b690cb Author: Frédéric-Emmanuel PICCA Date: Fri Jun 6 18:20:32 2008 +0200 Merge branch 'next' of /media/sdb1/hkl into next commit 6da710f4324990c8929d858728536972c0492d7f Author: Frédéric-Emmanuel PICCA Date: Fri Jun 6 15:27:58 2008 +0200 *remove useless method in the PseudoAxesEngine class include/hkl/hkl-pseudoaxis.h | 5 ----- 1 files changed, 0 insertions(+), 5 deletions(-) commit 5e3bace68d4ec7b4747244a1e537715c336e8e39 Author: Frédéric-Emmanuel PICCA Date: Fri Jun 6 14:48:20 2008 +0200 * instead of a current and consign part use only a value. now the library is only a sort of calculator for diffractometers. If you have de current and consign part you need to use two different geometry to store the current value and the consign values. include/hkl/hkl-axis.h | 6 +--- include/hkl/hkl-detector.h | 2 +- include/hkl/hkl-holder.h | 4 +-- src/hkl-axis.c | 9 ++---- src/hkl-detector.c | 6 +--- src/hkl-holder.c | 21 +++----------- src/hkl-pseudoaxis-auto.c | 60 +++++++++++------------------------------- test/hkl-test-axis.c | 32 ++++++---------------- test/hkl-test-detector.c | 10 ++----- test/hkl-test-geometry.c | 3 +- test/hkl-test-holder.c | 62 +------------------------------------------- test/hkl-test-pseudoaxis.c | 46 +++++++++----------------------- test/hkl-test-sample.c | 16 +++++----- 13 files changed, 65 insertions(+), 212 deletions(-) commit ab6a91e74cc7b6a734179b02f3616e6f16746663 Author: Frédéric-Emmanuel PICCA Date: Fri Jun 6 14:23:36 2008 +0200 * remove useless files binding/python/SConscript | 21 - binding/python/diffractometer.gazpacho | 2016 ------------ binding/python/diffractometer.glade | 3423 --------------------- binding/python/diffractometer.py | 680 ---- binding/python/diffractometer2.py | 736 ----- binding/python/diffractometer_eulerian4C_wrap.cpp | 39 - binding/python/diffractometer_eulerian4C_wrap.h | 18 - binding/python/diffractometer_kappa4C_wrap.cpp | 45 - binding/python/diffractometer_kappa4C_wrap.h | 18 - binding/python/diffractometer_kappa_wrap.cpp | 8 - binding/python/diffractometer_kappa_wrap.h | 18 - binding/python/diffractometer_wrap.cpp | 309 -- binding/python/diffractometer_wrap.h | 91 - binding/python/hkl_wrap.cpp | 76 - binding/python/reflection_wrap.h | 18 - include/hkl/HKLException.h | 76 - include/hkl/affinement.h | 95 - include/hkl/affinement_simplex.h | 48 - include/hkl/affinementlist.h | 147 - include/hkl/convenience.h | 37 - include/hkl/derived_mode.h | 95 - include/hkl/derived_pseudoaxeengine.h | 527 ---- include/hkl/diffractometerfactory.h | 49 - include/hkl/eulerian4C_vertical_diffractometer.h | 33 - include/hkl/eulerian4C_vertical_geometry.h | 161 - include/hkl/eulerian4C_vertical_mode.h | 148 - include/hkl/eulerian4C_vertical_pseudoaxeengine.h | 156 - include/hkl/eulerian6C_diffractometer.h | 60 - include/hkl/eulerian6C_geometry.h | 191 -- include/hkl/eulerian6C_mode.h | 29 - include/hkl/eulerian6C_pseudoaxeengine.h | 236 -- include/hkl/fitparameterlist.h | 136 - include/hkl/geometry_kappa.h | 47 - include/hkl/hklobject.h | 61 - include/hkl/kappa4C_vertical_diffractometer.h | 123 - include/hkl/kappa4C_vertical_geometry.h | 297 -- include/hkl/kappa4C_vertical_mode.h | 34 - include/hkl/kappa4C_vertical_pseudoaxeengine.h | 150 - include/hkl/kappa6C_diffractometer.h | 28 - include/hkl/kappa6C_geometry.h | 192 -- include/hkl/kappa6C_mode.h | 29 - include/hkl/kappa6C_pseudoaxeengine.h | 30 - include/hkl/mode.h | 207 -- include/hkl/modelist.h | 147 - include/hkl/mymap.h | 243 -- include/hkl/object.h | 155 - include/hkl/observer.h | 69 - include/hkl/parameterlist.h | 104 - include/hkl/portability.h | 19 - include/hkl/pseudoaxe.h | 150 - include/hkl/pseudoaxeengine.h | 353 --- include/hkl/pseudoaxeenginelist.h | 57 - include/hkl/pseudoaxelist.h | 79 - include/hkl/quaternion.h | 79 - include/hkl/range.h | 181 -- include/hkl/reflection.h | 15 - include/hkl/reflection_monocrystal.h | 68 - include/hkl/reflectionfactory.h | 47 - include/hkl/reflectionlist.h | 153 - include/hkl/sample.h | 122 - include/hkl/sample_monocrystal.h | 127 - include/hkl/samplefactory.h | 48 - include/hkl/samplelist.h | 176 -- include/hkl/strbuf.h | 19 - include/hkl/twoC_vertical_diffractometer.h | 97 - include/hkl/twoC_vertical_geometry.h | 127 - include/hkl/twoC_vertical_mode.h | 74 - include/hkl/twoC_vertical_pseudoaxeengine.h | 128 - include/hkl/value.h | 127 - src/HKLException.cpp | 132 - src/affinement.cpp | 57 - src/affinement_simplex.cpp | 321 -- src/affinementlist.cpp | 249 -- src/convenience.cpp | 50 - src/diffractometerfactory.cpp | 54 - src/eulerian4C_vertical_diffractometer.cpp | 46 - src/eulerian4C_vertical_geometry.cpp | 350 --- src/eulerian4C_vertical_mode.cpp | 290 -- src/eulerian4C_vertical_pseudoaxeengine.cpp | 271 -- src/eulerian6C_diffractometer.cpp | 35 - src/eulerian6C_geometry.cpp | 392 --- src/eulerian6C_pseudoaxeengine.cpp | 399 --- src/fitparameter.cpp | 120 - src/fitparameterlist.cpp | 138 - src/geometry.cpp | 347 --- src/geometry_kappa.cpp | 35 - src/gui/SConscript | 30 - src/gui/axespinbutton.cpp | 155 - src/gui/axespinbutton.h | 53 - src/gui/diffractometer2.glade | 2798 ----------------- src/gui/hklwindow.cpp | 2108 ------------- src/gui/hklwindow.h | 209 -- src/gui/main.cpp | 76 - src/gui/modelcolumns.h | 112 - src/gui/pseudoaxespinbutton.cpp | 156 - src/gui/pseudoaxespinbutton.h | 47 - src/hklobject.cpp | 47 - src/kappa4C_vertical_diffractometer.cpp | 47 - src/kappa4C_vertical_geometry.cpp | 357 --- src/kappa4C_vertical_pseudoaxeengine.cpp | 129 - src/kappa6C_diffractometer.cpp | 41 - src/kappa6C_geometry.cpp | 388 --- src/mode.cpp | 23 - src/modelist.cpp | 251 -- src/object.cpp | 193 -- src/observer.cpp | 91 - src/parameterlist.cpp | 147 - src/pseudoaxe.cpp | 215 -- src/pseudoaxeengine.cpp | 37 - src/pseudoaxeenginelist.cpp | 83 - src/pseudoaxelist.cpp | 107 - src/range.cpp | 197 -- src/reflection.c | 123 - src/reflection.cpp | 123 - src/reflection_monocrystal.cpp | 61 - src/reflectionfactory.cpp | 45 - src/reflectionlist.cpp | 278 -- src/sample.cpp | 169 - src/sample_monocrystal.cpp | 316 -- src/samplefactory.cpp | 48 - src/samplelist.cpp | 307 -- src/source.cpp | 157 - src/strbuf.cpp | 27 - src/twoC_vertical_diffractometer.cpp | 43 - src/twoC_vertical_geometry.cpp | 280 -- src/twoC_vertical_mode.cpp | 74 - src/twoC_vertical_pseudoaxeengine.cpp | 286 -- src/value.cpp | 142 - test/affinement_simplex_test.cpp | 165 - test/affinement_simplex_test.h | 36 - test/diffractometer_eulerian4C_test.cpp | 456 --- test/diffractometer_eulerian4C_test.h | 60 - test/diffractometer_kappa4C_test.cpp | 46 - test/diffractometer_kappa4C_test.h | 21 - test/diffractometer_kappa6C_test.cpp | 85 - test/diffractometer_kappa6C_test.h | 30 - test/diffractometer_test.cpp | 364 --- test/diffractometer_test.h | 55 - test/fitparameter_test.cpp | 42 - test/fitparameter_test.h | 26 - test/geometry_eulerian4C_test.cpp | 201 -- test/geometry_eulerian4C_test.h | 40 - test/geometry_eulerian6C_test.cpp | 300 -- test/geometry_eulerian6C_test.h | 44 - test/geometry_kappa4C_test.cpp | 280 -- test/geometry_kappa4C_test.h | 43 - test/geometry_kappa6C_test.cpp | 222 -- test/geometry_kappa6C_test.h | 39 - test/geometry_test.cpp | 63 - test/geometry_test.h | 29 - test/hklobject_test.cpp | 27 - test/hklobject_test.h | 24 - test/holderlist_test.cpp | 68 - test/holderlist_test.h | 34 - test/mode_eulerian4C_test.cpp | 260 -- test/mode_eulerian4C_test.h | 37 - test/mode_kappa4C_test.cpp | 246 -- test/mode_kappa4C_test.h | 37 - test/mode_kappa6C_test.cpp | 266 -- test/mode_kappa6C_test.h | 37 - test/object_test.cpp | 55 - test/object_test.h | 32 - test/pseudoaxe_eulerian4C_test.cpp | 301 -- test/pseudoaxe_eulerian4C_test.h | 38 - test/pseudoaxe_eulerian6C_test.cpp | 331 -- test/pseudoaxe_eulerian6C_test.h | 33 - test/pseudoaxe_kappa4C_test.cpp | 612 ---- test/pseudoaxe_kappa4C_test.h | 41 - test/pseudoaxe_kappa6C_test.cpp | 508 --- test/pseudoaxe_kappa6C_test.h | 41 - test/range_test.cpp | 67 - test/range_test.h | 30 - test/reflection_test.cpp | 117 - test/reflection_test.h | 44 - test/reflectionlist_test.cpp | 104 - test/reflectionlist_test.h | 39 - test/sample_test.cpp | 152 - test/sample_test.h | 38 - test/samplelist_test.cpp | 32 - test/samplelist_test.h | 27 - test/twoC_vertical_diffractometer_test.cpp | 368 --- test/twoC_vertical_diffractometer_test.h | 58 - test/twoC_vertical_geometry_test.cpp | 246 -- test/twoC_vertical_geometry_test.h | 44 - test/twoC_vertical_mode_test.cpp | 125 - test/twoC_vertical_mode_test.h | 34 - test/twoC_vertical_pseudoaxeengine_test.cpp | 289 -- test/twoC_vertical_pseudoaxeengine_test.h | 32 - test/value_test.cpp | 105 - test/value_test.h | 39 - 190 files changed, 0 insertions(+), 35429 deletions(-) commit f22e9f09857904521d6f4a17a121979090692110 Author: Frédéric-Emmanuel PICCA Date: Thu Jun 5 16:53:10 2008 +0200 * split the bissector mode in two parts hkl + mode src/hkl-pseudoaxis-auto.c | 161 +++++++++++++++++++++++---------------------- 1 files changed, 81 insertions(+), 80 deletions(-) commit 3b2b4b28ad6d143d9678b2af2c75f3c01ad0a4d9 Author: Frédéric-Emmanuel PICCA Date: Thu Jun 5 15:18:29 2008 +0200 * now the pseudoAxes works for on the current and consign part. src/hkl-pseudoaxis-auto.c | 60 +++++++++++++++++++++++++++++++++++-------- test/hkl-test-pseudoaxis.c | 22 ++++++++++++++- 2 files changed, 69 insertions(+), 13 deletions(-) commit 784ec30dcdec2c3ee17105c274d81f0ac2403cd4 Author: Frédéric-Emmanuel PICCA Date: Thu Jun 5 13:46:48 2008 +0200 * next refactoring part fuzion of set and set_pseudoAxes in the HklPseudoAxesEngine class. include/hkl/hkl-pseudoaxis.h | 4 +-- src/hkl-pseudoaxis.c | 44 ++++++++++++++++++++--------------------- test/hkl-test-pseudoaxis.c | 7 ++--- 3 files changed, 25 insertions(+), 30 deletions(-) commit e5b404294127c44068eaf0e48613d361c809839b Author: Frédéric-Emmanuel PICCA Date: Thu Jun 5 10:42:09 2008 +0200 * start refactoring the pseudoAxes code. include/hkl/hkl-pseudoaxis.h | 49 +++++--- src/SConscript | 1 + src/hkl-pseudoaxis-auto.c | 223 ++++++++++++++++++++++++++++++++++ src/hkl-pseudoaxis.c | 272 +++++++++--------------------------------- test/hkl-test-pseudoaxis.c | 53 +++++---- 5 files changed, 336 insertions(+), 262 deletions(-) commit 220d4461fc1e8bc7f3d24d915deee320ee0c4f03 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 3 10:57:48 2008 +0200 * add a todo for optimizing the quaternion to matrix. src/hkl-quaternion.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit d201fa3a264b57b85036c3e98c0ca317363848c4 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 3 10:52:34 2008 +0200 * trivial refactoring in the quaternion class src/hkl-quaternion.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) commit 632aef6586d54304a06b575ad464f3551a3320a1 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 3 09:37:27 2008 +0200 * more readable quaternin to matrix method src/hkl-quaternion.c | 22 +++++++++++++--------- 1 files changed, 13 insertions(+), 9 deletions(-) commit 86812ee058cb5dde446209be2c73b2b8f6ffec05 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 3 09:32:28 2008 +0200 * modification of the quaternion times quaternion method to be readable. src/hkl-quaternion.c | 20 +++++++++++--------- 1 files changed, 11 insertions(+), 9 deletions(-) commit 5bc9efbd69efaa0357f593fdad2d8435b25d464e Author: Frédéric-Emmanuel PICCA Date: Mon Jun 2 18:21:24 2008 +0200 * small optimization in the quaternion class src/hkl-quaternion.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit 62ade124087dc34efcfa5c1cf3b8661fe92cef08 Author: Frédéric-Emmanuel PICCA Date: Mon Jun 2 17:54:05 2008 +0200 * first working version of the pseudoAxeEngine set method. src/hkl-pseudoaxis.c | 52 +++++++++++++++++++++++++++----------------- test/hkl-test-pseudoaxis.c | 2 +- 2 files changed, 33 insertions(+), 21 deletions(-) commit 7b690cbb90a247db980b3935d749fdc7986ef524 Author: Frédéric-Emmanuel PICCA Date: Thu May 8 11:21:25 2008 +0200 * add the path options for the gsl libraries gsl_inc_path and gsl_lib_path SConstruct | 18 +++++++++++------- 1 files changed, 11 insertions(+), 7 deletions(-) commit 56094b1c338b85aae82fb98e05e854e23e7c4dbe Author: Frédéric-Emmanuel PICCA Date: Thu May 8 11:09:08 2008 +0200 * remove unneeded part of the Sconsfiles and build a shared library SConstruct | 15 +++---------- src/SConscript | 57 ++---------------------------------------------------- test/SConscript | 6 +--- 3 files changed, 9 insertions(+), 69 deletions(-) commit ee71ea3938c3c6d7508b379bd7043e1ba0dff9a0 Author: Frédéric-Emmanuel PICCA Date: Mon May 5 17:22:44 2008 +0200 * first "working" version of the new pseudoAxes. it seems that the hybrid version of the gsl multiroots works better than the hybrids one. The algo is not robust enought for now. If I take 1000 instead of 100 random test they fail. Need to find a better algo. include/hkl/hkl-pseudoaxis.h | 5 +- src/hkl-pseudoaxis.c | 103 +++++++++++++++++++++-------------------- test/hkl-test-pseudoaxis.c | 105 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 160 insertions(+), 53 deletions(-) commit aaf2e6309abf9ca76123b8fe34b5b5f13ab1982a Author: Frédéric-Emmanuel PICCA Date: Thu May 1 12:51:48 2008 +0200 * add the doc sconscript Documentation/SConscript | 10 +++++++++- SConstruct | 6 ++++-- include/SConscript | 27 --------------------------- include/hkl/SConscript | 26 ++++++++++++++++++++++++++ 4 files changed, 39 insertions(+), 30 deletions(-) commit 522188b4dbd4a20c2c8da398f3ac55bdef195e1c Author: Frédéric-Emmanuel PICCA Date: Thu May 1 12:22:57 2008 +0200 * now the package part seems to work. need more work to install files at the right place SConstruct | 22 +++++- include/SConscript | 27 +++++++ src/SConscript | 2 +- test/SConscript | 40 +---------- tool/doxygen.py | 203 ---------------------------------------------------- 5 files changed, 48 insertions(+), 246 deletions(-) commit 4238087b43024b756a44357108bd0ceb83254cbb Author: Frédéric-Emmanuel PICCA Date: Tue Apr 29 17:41:53 2008 +0200 * now the update part of the pseudoAxis seems to work. I added the test for the hkl pseudoAxes. README | 3 +- include/hkl/hkl-pseudoaxis-factory.h | 8 +- include/hkl/hkl-pseudoaxis.h | 38 +++++-- src/hkl-pseudoaxis.c | 217 +++++++++++++++++++++++++++++++++- test/hkl-test-pseudoaxis.c | 96 +++++++++++++++ 5 files changed, 344 insertions(+), 18 deletions(-) commit 745edd33148a0d9d3758e5b146a4f9d6c169eacb Author: Frédéric-Emmanuel PICCA Date: Tue Apr 29 16:26:17 2008 +0200 * add a HKL_ASSERT_POINTER_EQUAL and print the result of the failed test. test/hkl-test-axis.c | 68 ++++++++++++++++++++++---------------------- test/hkl-test-geometry.c | 10 +++--- test/hkl-test-holder.c | 4 +- test/hkl-test-lattice.c | 2 +- test/hkl-test-list.c | 12 ++++---- test/hkl-test-matrix.c | 36 +++++++++++----------- test/hkl-test-parameter.c | 22 +++++++------- test/hkl-test-quaternion.c | 18 ++++++------ test/hkl-test-sample.c | 2 +- test/hkl-test-source.c | 28 ++++++++--------- test/hkl-test-vector.c | 18 ++++++------ test/hkl-test.h | 17 +++++++++- 12 files changed, 124 insertions(+), 113 deletions(-) commit 0d30f6d95868a70a09d3f2134743b877b680a473 Author: Frédéric-Emmanuel PICCA Date: Sun Mar 23 16:17:00 2008 +0100 * first version of the HklPseudoAxisEngine include/hkl/hkl-pseudoaxis-factory.h | 42 +++++++++++++++ include/hkl/hkl-pseudoaxis.h | 56 ++++++++++++++++++++ src/SConscript | 1 + src/hkl-pseudoaxis.c | 93 ++++++++++++++++++++++++++++++++++ test/SConscript | 1 + test/hkl-test-pseudoaxis.c | 27 ++++++++++ test/main.c | 1 + 7 files changed, 221 insertions(+), 0 deletions(-) commit a27341b1f4aea7adbb3a36a5dcb6ab1913170fa7 Author: Frédéric-Emmanuel PICCA Date: Sun Mar 23 15:33:26 2008 +0100 * remove un-needed files include/hkl/hkl-diffractometer.h | 33 ----------------------- include/hkl/hkl-diffractometer_2C.h | 30 --------------------- src/SConscript | 1 - src/hkl-diffractometer.c | 49 ----------------------------------- 4 files changed, 0 insertions(+), 113 deletions(-) commit 33283de9e18eb2caece98323f386637e474072cf Author: Frédéric-Emmanuel PICCA Date: Fri Mar 21 20:59:39 2008 +0100 * better stop condition in the simplex affinement for now the default simplex method works when the setarting point is not to far from the solution. src/hkl-sample.c | 18 +----------------- test/hkl-test-sample.c | 6 +++--- 2 files changed, 4 insertions(+), 20 deletions(-) commit 8f4855b291865203e346f57635ee96b08a2203ee Author: Frédéric-Emmanuel PICCA Date: Sun Mar 16 21:50:45 2008 +0100 * change the meaning of HKL_FAIL add the affine method now the HKL_FAIL = -1 and HKL_SUCCESS = 0, the affinement do not handle the case of a wrong lattice computation during the simplex affinement. include/hkl/hkl-macros.h | 4 +- src/hkl-lattice.c | 13 +++++-- src/hkl-parameter.c | 8 ++-- src/hkl-sample.c | 77 +++++++++++++++++++++++++++++++++------------ test/hkl-test-sample.c | 33 ++++++++++++++++++- 5 files changed, 102 insertions(+), 33 deletions(-) commit 98dfdc59ae9b72784f9c6a759914d0c791cf4a44 Author: Frédéric-Emmanuel PICCA Date: Sun Mar 16 14:23:06 2008 +0100 * add the first affinement method using GSL (simplex method) include/hkl/hkl-sample.h | 2 +- src/hkl-sample.c | 90 +++++++++++++++++++++++----------------------- test/SConscript | 2 +- test/hkl-test-sample.c | 56 ++++++++++++++++++++++++++++ 4 files changed, 103 insertions(+), 47 deletions(-) commit 782780d56c8991efd6699732e28bd91bbbe14288 Author: Frédéric-Emmanuel PICCA Date: Sun Mar 16 12:47:14 2008 +0100 * remove some warnings include/hkl/hkl-diffractometer_2C.h | 12 ++++++------ src/hkl-diffractometer.c | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) commit bd3e167f77c7380a098c35ba34ea8d98a823f067 Author: Frédéric-Emmanuel PICCA Date: Sat Mar 15 13:22:44 2008 +0100 * hkl_smatrix -> hkl_matrix include/hkl/hkl-matrix.h | 30 +++++++++++++++--------------- src/hkl-matrix.c | 34 +++++++++++++++++----------------- src/hkl-sample.c | 32 ++++++++++++++++---------------- test/hkl-test-lattice.c | 2 +- test/hkl-test-matrix.c | 38 +++++++++++++++++++------------------- test/hkl-test-quaternion.c | 2 +- test/hkl-test-sample.c | 4 ++-- 7 files changed, 71 insertions(+), 71 deletions(-) commit b502da0fddd6e72e41ac129d256d4bce260d9eba Author: Frédéric-Emmanuel PICCA Date: Fri Mar 14 17:04:32 2008 +0100 * refactoring of the HklMatrix struct clearer to read. src/hkl-matrix.c | 161 +++++++++++++++++++++++++++++++----------------------- 1 files changed, 92 insertions(+), 69 deletions(-) commit 4f21544482b1b2d1cdd56a4351e8fbf982244c0e Author: Frédéric-Emmanuel PICCA Date: Fri Mar 14 15:10:21 2008 +0100 * now the busing et levy computation is working include/hkl/hkl-sample.h | 10 ++- src/hkl-sample.c | 157 +++++++++++++++++++++++++++++++--------------- test/hkl-test-sample.c | 70 ++++++++++++++++++++- 3 files changed, 183 insertions(+), 54 deletions(-) commit 244374b573bbef69fe5b43d48f9e7bf8d161f119 Author: Frédéric-Emmanuel PICCA Date: Thu Mar 13 16:59:11 2008 +0100 * remove a bad bug in HklHolder src/hkl-holder.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 9f210900302ffacd34c5eac9d89a35d06058ce72 Author: Frédéric-Emmanuel PICCA Date: Thu Mar 13 12:04:57 2008 +0100 * add the new/free/copy method to the HklMatric struct. add also the test functions, and some refactoring. include/hkl/hkl-matrix.h | 24 ++++++++++++++++--- src/hkl-matrix.c | 47 ++++++++++++++++++++++++++++++++++++++ test/hkl-test-matrix.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 123 insertions(+), 4 deletions(-) commit ea8a14de604703fa07691582e8127b1ae7153dad Author: Frédéric-Emmanuel PICCA Date: Wed Mar 12 14:46:02 2008 +0100 * add the first HklSample structure. include/hkl/hkl-sample.h | 45 ++++++---- src/hkl-sample.c | 200 +++++++++++++++++++++++++++++++++++++++++----- test/SConscript | 1 + test/hkl-test-sample.c | 106 ++++++++++++++++++++++++ test/main.c | 1 + 5 files changed, 316 insertions(+), 37 deletions(-) commit 61992ee06ad1b4491a2ec61f8f9ab32d8d44dc4d Author: Frédéric-Emmanuel PICCA Date: Thu Mar 6 15:47:34 2008 +0100 * add the hkl_list_get_by_idx method include/hkl/hkl-list.h | 2 ++ src/hkl-list.c | 7 +++++++ test/hkl-test-list.c | 28 ++++++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 0 deletions(-) commit 8c29b7d9c05451979a6e84079dbe19c3ed6660a3 Author: Frédéric-Emmanuel PICCA Date: Thu Mar 6 15:32:24 2008 +0100 * modification of the managed list to allow easy new_copy. include/hkl/hkl-list.h | 5 +++- src/hkl-list.c | 24 ++++++++++++++++++++- test/hkl-test-list.c | 53 +++++++++++++++++++++++++++++++++++++++++++---- 3 files changed, 75 insertions(+), 7 deletions(-) commit 148843ad1bea637a7f0193809a973e1c4366874a Author: Frédéric-Emmanuel PICCA Date: Thu Mar 6 13:42:05 2008 +0100 * the new_copy method to the HklDetector structure include/hkl/hkl-detector.h | 1 + src/hkl-detector.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 0 deletions(-) commit b5b48196313238f6eae61423e226255cf4686ab4 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 5 16:21:49 2008 +0100 * add all geometry in a factory header. use the hkl_geometry_factory_new(type, ...) to create the proper geometry. you can use the type: HKL_GEOMETRY_TWOC_VERTICAL, HKL_GEOMETRY_EULERIAN4C_VERTICAL, HKL_GEOMETRY_KAPPA4C_VERTICAL, HKL_GEOMETRY_EULERIAN6C, HKL_GEOMETRY_KAPPA6C include/hkl/hkl-geometry-factory.h | 124 ++++++++++++++++++++++++++++++++++++ 1 files changed, 124 insertions(+), 0 deletions(-) commit f61000fcd3c9ea4e0c75c353d15ba7840acd5939 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 5 14:49:59 2008 +0100 * add the HklDetector class with test methods only 0D detector now. include/hkl/hkl-detector.h | 24 ++++++++++++++ src/SConscript | 2 +- src/hkl-detector.c | 37 +++++++++++++++++++++ test/SConscript | 2 +- test/hkl-test-detector.c | 76 ++++++++++++++++++++++++++++++++++++++++++++ test/main.c | 2 +- 6 files changed, 140 insertions(+), 3 deletions(-) commit 3485666cd6ccd0481b0ccb2f14dfbda3f3da9366 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 5 14:10:12 2008 +0100 * add get_axis and update to the HklGeometry struct with test methods include/hkl/hkl-geometry.h | 6 +++- src/hkl-geometry.c | 20 ++++++++++++++ test/hkl-test-geometry.c | 60 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 85 insertions(+), 1 deletions(-) commit d40b4429052124fa61b9153d1d676e998abae4a6 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 5 13:48:05 2008 +0100 * complete the holder test suite. hkl_vector_cmp return 0 is both vector are equals 1 otherwise include/hkl/hkl-holder.h | 7 +++ src/hkl-holder.c | 50 +++++++++++++++++- src/hkl-vector.c | 8 ++-- test/hkl-test-holder.c | 118 ++++++++++++++++++++++++++++++++++++------- test/hkl-test-matrix.c | 2 +- test/hkl-test-quaternion.c | 4 +- test/hkl-test-source.c | 2 +- test/hkl-test-vector.c | 12 ++-- 8 files changed, 166 insertions(+), 37 deletions(-) commit 7147a7f14b2d8269a10d358ae631032d9a5d0016 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 5 11:21:06 2008 +0100 * indentation src/usage.c | 32 ++++++++++++++++---------------- 1 files changed, 16 insertions(+), 16 deletions(-) commit 307a972dd1fecb5503a5df14d4b0bf6c917c4dc4 Author: Frédéric-Emmanuel PICCA Date: Wed Mar 5 11:20:28 2008 +0100 lest hkl-macros.h be compatible with c++ include/hkl/hkl-macros.h | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit cd34319de875c55a7d068fe65a319717b02887be Author: Frédéric-Emmanuel PICCA Date: Wed Mar 5 11:15:23 2008 +0100 * add the hkl-axis test methods now an axis config contain a dirty flag that set by the set_config method. this flag is used to recompute or not the holders quaternions. include/hkl/hkl-axis.h | 10 +++ src/hkl-axis.c | 28 +++++++++- test/SConscript | 1 + test/hkl-test-axis.c | 146 ++++++++++++++++++++++++++++++++++++++++++++++++ test/main.c | 1 + 5 files changed, 185 insertions(+), 1 deletions(-) commit f2e19227d85247d9aad32f3a96141458193f705c Author: Frédéric-Emmanuel PICCA Date: Wed Feb 20 17:27:18 2008 +0100 * add the new new_copy and set method to the Hklquaternion include/hkl/hkl-quaternion.h | 9 +++++++++ src/hkl-quaternion.c | 42 ++++++++++++++++++++++++++++++++++++++++++ test/hkl-test-quaternion.c | 31 +++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+), 0 deletions(-) commit 2a3bd9739f85661ff4e19b3bc835f734abd6c951 Author: Frédéric-Emmanuel PICCA Date: Mon Feb 11 17:32:00 2008 +0100 * add a get_holder method to the geometry include/hkl/hkl-geometry.h | 1 + src/SConscript | 3 ++- src/hkl-geometry.c | 9 +++++++++ test/SConscript | 1 + test/hkl-test-geometry.c | 3 +++ test/main.c | 1 + 6 files changed, 17 insertions(+), 1 deletions(-) commit 755158dd5431598bc71d1ccc061ede35bccef7e8 Author: Frédéric-Emmanuel PICCA Date: Tue Feb 5 15:35:14 2008 +0100 * remove the HklHolders an put directly in the HklGeometry include/hkl/hkl-geometry.h | 15 ++++++--- include/hkl/hkl-holders.h | 24 -------------- src/SConscript | 1 - src/hkl-geometry.c | 73 +++++++++++++++++++++++++++++++++++++------ src/hkl-holders.c | 63 -------------------------------------- test/SConscript | 2 +- test/hkl-test-geometry.c | 39 +++++++++++++++++++++++ test/hkl-test-holders.c | 39 ----------------------- test/main.c | 2 +- 9 files changed, 113 insertions(+), 145 deletions(-) commit 62efc16c24039ca5b38df67624104275f34d686c Author: Frédéric-Emmanuel PICCA Date: Tue Feb 5 15:08:35 2008 +0100 * add the copy constructor for HklHolder and HklHolders include/hkl/hkl-holder.h | 1 + include/hkl/hkl-holders.h | 5 ++- src/hkl-holder.c | 50 ++++++++++++++++++++++++++++++++++--------- src/hkl-holders.c | 33 +++++++++++++++++++++++++--- src/usage.c | 22 ++++++++++++++++++- test/hkl-test-holder.c | 51 +++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 144 insertions(+), 18 deletions(-) commit 72e02496a62b0404dd4f5a24f3e5f4e8c8105a7c Author: Frédéric-Emmanuel PICCA Date: Tue Feb 5 13:54:57 2008 +0100 * add get_idx in the HklList + test include/hkl/hkl-list.h | 2 ++ src/hkl-list.c | 11 +++++++++++ test/hkl-test-list.c | 18 ++++++++++++++++++ 3 files changed, 31 insertions(+), 0 deletions(-) commit b90077da68d58d8d208a603d00e8d2a89d915181 Author: Frédéric-Emmanuel PICCA Date: Tue Feb 5 13:45:58 2008 +0100 * add a copy contructor to HklAxis include/hkl/hkl-axis.h | 1 + src/hkl-axis.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 0 deletions(-) commit ab6a17715499959f1ce43e5ae55c72eb4ccc6cc2 Author: Frédéric-Emmanuel PICCA Date: Tue Feb 5 09:07:09 2008 +0100 * add the gitignore file .gitignore | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit 1c208475db11937a574c49639e655cb3f1c9f316 Author: Frédéric-Emmanuel PICCA Date: Mon Feb 4 17:28:17 2008 +0100 * now the managed list take a deallocator pointer function include/hkl/hkl-list.h | 4 ++-- src/hkl-list.c | 14 +++++++------- test/hkl-test-list.c | 6 +++--- 3 files changed, 12 insertions(+), 12 deletions(-) commit 7a8e32b4a39ebab38d167c0c313f64b6ca596e69 Author: Frédéric-Emmanuel PICCA Date: Mon Feb 4 14:33:43 2008 +0100 * remove the HklAxes struct include/hkl/hkl-axes.h | 25 -------- include/hkl/hkl-holder.h | 11 ++- include/hkl/hkl-holders.h | 3 +- src/SConscript | 5 +- src/hkl-axes.c | 55 ------------------ src/hkl-holder.c | 54 +++++++++++++++-- src/hkl-holders.c | 8 +- test/SConscript | 1 - test/hkl-test-axis.c | 140 --------------------------------------------- test/hkl-test-holder.c | 107 ++++++++++++++++++++++++++++++++-- test/main.c | 1 - 11 files changed, 162 insertions(+), 248 deletions(-) commit 01c0e705098639320a1da1cf44bb4266cf689758 Author: Frédéric-Emmanuel PICCA Date: Mon Feb 4 13:58:07 2008 +0100 * use HklList in the HklHolder and HklHolders struct. include/hkl/hkl-holder.h | 8 +------- include/hkl/hkl-holders.h | 5 ++--- src/hkl-holder.c | 39 ++++++++------------------------------- src/hkl-holders.c | 35 ++++++++++------------------------- test/hkl-test-holders.c | 6 +++--- 5 files changed, 24 insertions(+), 69 deletions(-) commit 4e4d869d9498549380719006f5e58d1a7011eaac Author: Frédéric-Emmanuel PICCA Date: Mon Feb 4 13:35:04 2008 +0100 * refactoring of axes using the HklList The aim of this refactoring is to supress HklAxes. include/hkl/hkl-axes.h | 12 +++------- include/hkl/hkl-axis.h | 4 ++- include/hkl/hkl-holder.h | 5 ++- include/hkl/hkl-holders.h | 6 +---- src/hkl-axes.c | 51 ++++++++++++-------------------------------- src/hkl-axis.c | 16 +++++++++++++- src/hkl-holders.c | 25 ++++++++------------- test/hkl-test-axis.c | 31 +++++++++++++++------------ test/hkl-test-holder.c | 3 ++ 9 files changed, 70 insertions(+), 83 deletions(-) commit ed89e10b8217b898b352e198afe3cd54cfb32f7e Author: Frédéric-Emmanuel PICCA Date: Fri Feb 1 17:18:25 2008 +0100 * [Hklsource] change the set signature. Now return 0 if success -1 otherwise. include/hkl/hkl-source.h | 9 +++++---- src/hkl-source.c | 11 ++++++++--- 2 files changed, 13 insertions(+), 7 deletions(-) commit 19ac276128bae56edfc41a63af2dbb2fb442948f Author: Frédéric-Emmanuel PICCA Date: Fri Feb 1 17:08:40 2008 +0100 * HklSource add new / new_copy now the direction member is a pointer. include/hkl/hkl-source.h | 10 +++-- src/hkl-source.c | 74 ++++++++++++++++++++++++++---------------- test/hkl-test-source.c | 82 ++++++++++++++++++++++++++++++++++++--------- 3 files changed, 117 insertions(+), 49 deletions(-) commit d342aa0eb04e735f07fb05a6ef059fe1f1360dbe Author: Frédéric-Emmanuel PICCA Date: Fri Feb 1 14:28:40 2008 +0100 * update the HklLattice struct now it use HklParameters* instead of HklParameter. include/hkl/hkl-lattice.h | 28 +++-- src/hkl-lattice.c | 310 +++++++++++++++++++++++++++------------------ test/SConscript | 2 +- test/hkl-test-lattice.c | 199 ++++++++++++++++++----------- test/main.c | 2 +- 5 files changed, 325 insertions(+), 216 deletions(-) commit 38eb424e1536c766c82c7e3b289234820075ac4c Author: Frédéric-Emmanuel PICCA Date: Fri Feb 1 11:37:37 2008 +0100 * svector -> vector normalization include/hkl/hkl-matrix.h | 4 +- include/hkl/hkl-quaternion.h | 4 +- include/hkl/hkl-vector.h | 49 ++++++++++-------- src/SConscript | 2 +- src/hkl-axes.c | 2 +- src/hkl-matrix.c | 14 +++--- src/hkl-quaternion.c | 8 ++-- src/hkl-source.c | 10 ++-- src/hkl-vector.c | 114 +++++++++++++++++++++++++++--------------- test/SConscript | 2 +- test/hkl-test-matrix.c | 14 +++--- test/hkl-test-quaternion.c | 12 ++-- test/hkl-test-source.c | 2 +- test/hkl-test-vector.c | 104 ++++++++++++++++++++++++++++---------- test/main.c | 4 +- 15 files changed, 215 insertions(+), 130 deletions(-) commit 768f2403b92c34f39544a8d975f3a4a78eb6180d Author: Frédéric-Emmanuel PICCA Date: Fri Feb 1 11:12:19 2008 +0100 * add a new_copy method to the HklParameter struct include/hkl/hkl-parameter.h | 13 +++++---- src/hkl-parameter.c | 58 ++++++++++++++++++++++++++---------------- test/hkl-test-parameter.c | 48 ++++++++++++++++++++++++++--------- 3 files changed, 79 insertions(+), 40 deletions(-) commit 0af0377c2714a6162cd9ef12d55ccac5e9886bc4 Author: Frédéric-Emmanuel PICCA Date: Fri Feb 1 10:35:02 2008 +0100 * HklList can manage or not the memory, add a foreach method For now the HklList can only managed memory that must be release with a simple free. include/hkl/hkl-list.h | 9 +++++++++ src/hkl-list.c | 31 +++++++++++++++++++++++++++---- test/hkl-test-list.c | 37 +++++++++++++++++++++++++++++++++++-- 3 files changed, 71 insertions(+), 6 deletions(-) commit 792c1634693c14e2214bc0c284dcda6b6637d149 Author: Frédéric-Emmanuel PICCA Date: Thu Jan 31 17:40:47 2008 +0100 * add the hklList struct include/hkl/hkl-list.h | 28 ++++++++++++++++ src/SConscript | 2 + src/hkl-list.c | 63 +++++++++++++++++++++++++++++++++++++ test/SConscript | 1 + test/hkl-test-list.c | 81 ++++++++++++++++++++++++++++++++++++++++++++++++ test/main.c | 1 + 6 files changed, 176 insertions(+), 0 deletions(-) commit af1efa92f594a8e8e9c32dc7905f34542b249dbf Author: Frédéric-Emmanuel PICCA Date: Thu Jan 31 13:23:10 2008 +0100 * update the README file to explain the compilation procedure README | 40 ++++++++++------------------------------ 1 files changed, 10 insertions(+), 30 deletions(-) commit 0eead3f93fd48ed362aa582186e45b5f890a7dc7 Author: Frédéric-Emmanuel PICCA Date: Thu Jan 31 11:56:59 2008 +0100 * switch to 2008 year in the copyright include/hkl/HKLException.h | 2 +- include/hkl/HolderList.h | 2 +- include/hkl/affinement.h | 2 +- include/hkl/affinement_simplex.h | 2 +- include/hkl/affinementlist.h | 2 +- include/hkl/axe.h | 2 +- include/hkl/axe_rotation.h | 2 +- include/hkl/axefactory.h | 2 +- include/hkl/constant.h | 2 +- include/hkl/convenience.h | 2 +- include/hkl/derived_mode.h | 2 +- include/hkl/derived_pseudoaxeengine.h | 2 +- include/hkl/diffractometer.h | 2 +- include/hkl/diffractometerfactory.h | 2 +- include/hkl/eulerian4C_vertical_diffractometer.h | 2 +- include/hkl/eulerian4C_vertical_geometry.h | 2 +- include/hkl/eulerian4C_vertical_mode.h | 2 +- include/hkl/eulerian4C_vertical_pseudoaxeengine.h | 2 +- include/hkl/eulerian6C_diffractometer.h | 2 +- include/hkl/eulerian6C_geometry.h | 2 +- include/hkl/eulerian6C_mode.h | 2 +- include/hkl/eulerian6C_pseudoaxeengine.h | 2 +- include/hkl/fitparameter.h | 2 +- include/hkl/fitparameterlist.h | 2 +- include/hkl/geometry.h | 2 +- include/hkl/geometry_kappa.h | 2 +- include/hkl/hklobject.h | 2 +- include/hkl/holder.h | 2 +- include/hkl/interval.h | 2 +- include/hkl/kappa4C_vertical_diffractometer.h | 2 +- include/hkl/kappa4C_vertical_geometry.h | 2 +- include/hkl/kappa4C_vertical_mode.h | 2 +- include/hkl/kappa4C_vertical_pseudoaxeengine.h | 2 +- include/hkl/kappa6C_diffractometer.h | 2 +- include/hkl/kappa6C_geometry.h | 2 +- include/hkl/kappa6C_mode.h | 2 +- include/hkl/kappa6C_pseudoaxeengine.h | 2 +- include/hkl/lattice.h | 2 +- include/hkl/mode.h | 2 +- include/hkl/modelist.h | 2 +- include/hkl/mymap.h | 2 +- include/hkl/object.h | 2 +- include/hkl/observer.h | 2 +- include/hkl/parameter.h | 2 +- include/hkl/parameterlist.h | 2 +- include/hkl/portability.h | 2 +- include/hkl/pseudoaxe.h | 2 +- include/hkl/pseudoaxeengine.h | 2 +- include/hkl/pseudoaxeenginelist.h | 2 +- include/hkl/pseudoaxelist.h | 2 +- include/hkl/quaternion.h | 2 +- include/hkl/range.h | 2 +- include/hkl/reflection.h | 2 +- include/hkl/reflection_monocrystal.h | 2 +- include/hkl/reflectionfactory.h | 2 +- include/hkl/reflectionlist.h | 2 +- include/hkl/sample.h | 2 +- include/hkl/sample_monocrystal.h | 2 +- include/hkl/samplefactory.h | 2 +- include/hkl/samplelist.h | 2 +- include/hkl/source.h | 2 +- include/hkl/strbuf.h | 2 +- include/hkl/svector.h | 2 +- include/hkl/twoC_vertical_diffractometer.h | 2 +- include/hkl/twoC_vertical_geometry.h | 2 +- include/hkl/twoC_vertical_mode.h | 2 +- include/hkl/twoC_vertical_pseudoaxeengine.h | 2 +- include/hkl/value.h | 2 +- src/HKLException.cpp | 2 +- src/affinement.cpp | 2 +- src/affinement_simplex.cpp | 2 +- src/affinementlist.cpp | 2 +- src/axe.cpp | 2 +- src/axe_rotation.cpp | 2 +- src/axefactory.cpp | 2 +- src/constant.cpp | 2 +- src/convenience.cpp | 2 +- src/diffractometer.cpp | 2 +- src/diffractometerfactory.cpp | 2 +- src/eulerian4C_vertical_diffractometer.cpp | 2 +- src/eulerian4C_vertical_geometry.cpp | 2 +- src/eulerian4C_vertical_mode.cpp | 2 +- src/eulerian4C_vertical_pseudoaxeengine.cpp | 2 +- src/eulerian6C_diffractometer.cpp | 2 +- src/eulerian6C_geometry.cpp | 2 +- src/eulerian6C_pseudoaxeengine.cpp | 2 +- src/fitparameter.cpp | 2 +- src/fitparameterlist.cpp | 2 +- src/geometry.cpp | 2 +- src/geometry_kappa.cpp | 2 +- src/hklobject.cpp | 2 +- src/holder.cpp | 2 +- src/interval.cpp | 2 +- src/kappa4C_vertical_diffractometer.cpp | 2 +- src/kappa4C_vertical_geometry.cpp | 2 +- src/kappa4C_vertical_pseudoaxeengine.cpp | 2 +- src/kappa6C_diffractometer.cpp | 2 +- src/kappa6C_geometry.cpp | 2 +- src/lattice.cpp | 2 +- src/mode.cpp | 2 +- src/modelist.cpp | 2 +- src/object.cpp | 2 +- src/observer.cpp | 2 +- src/parameter.cpp | 2 +- src/parameterlist.cpp | 2 +- src/pseudoaxe.cpp | 2 +- src/pseudoaxeengine.cpp | 2 +- src/pseudoaxeenginelist.cpp | 2 +- src/pseudoaxelist.cpp | 2 +- src/quaternion.cpp | 2 +- src/range.cpp | 2 +- src/reflection.cpp | 2 +- src/reflection_monocrystal.cpp | 2 +- src/reflectionfactory.cpp | 2 +- src/reflectionlist.cpp | 2 +- src/sample.cpp | 2 +- src/sample_monocrystal.cpp | 2 +- src/samplefactory.cpp | 2 +- src/samplelist.cpp | 2 +- src/source.cpp | 2 +- src/strbuf.cpp | 2 +- src/svector.cpp | 2 +- src/twoC_vertical_diffractometer.cpp | 2 +- src/twoC_vertical_geometry.cpp | 2 +- src/twoC_vertical_mode.cpp | 2 +- src/twoC_vertical_pseudoaxeengine.cpp | 2 +- src/value.cpp | 2 +- test/affinement_simplex_test.cpp | 2 +- test/affinement_simplex_test.h | 2 +- test/axe_rotation_test.cpp | 2 +- test/axe_rotation_test.h | 2 +- test/diffractometer_eulerian4C_test.cpp | 2 +- test/diffractometer_eulerian4C_test.h | 2 +- test/diffractometer_kappa4C_test.cpp | 2 +- test/diffractometer_kappa4C_test.h | 2 +- test/diffractometer_kappa6C_test.cpp | 2 +- test/diffractometer_kappa6C_test.h | 2 +- test/diffractometer_test.cpp | 2 +- test/diffractometer_test.h | 2 +- test/diffractometer_twoC_test.cpp | 2 +- test/diffractometer_twoC_test.h | 2 +- test/fitparameter_test.cpp | 2 +- test/fitparameter_test.h | 2 +- test/geometry_eulerian4C_test.cpp | 2 +- test/geometry_eulerian4C_test.h | 2 +- test/geometry_eulerian6C_test.cpp | 2 +- test/geometry_eulerian6C_test.h | 2 +- test/geometry_kappa4C_test.cpp | 2 +- test/geometry_kappa4C_test.h | 2 +- test/geometry_kappa6C_test.cpp | 2 +- test/geometry_kappa6C_test.h | 2 +- test/geometry_test.cpp | 2 +- test/geometry_test.h | 2 +- test/geometry_twoC_test.cpp | 2 +- test/geometry_twoC_test.h | 2 +- test/hklobject_test.cpp | 2 +- test/hklobject_test.h | 2 +- test/holder_test.cpp | 2 +- test/holder_test.h | 2 +- test/holderlist_test.cpp | 2 +- test/holderlist_test.h | 2 +- test/interval_test.cpp | 2 +- test/interval_test.h | 2 +- test/lattice_test.cpp | 2 +- test/lattice_test.h | 2 +- test/libHKL_test.cpp | 2 +- test/main.cpp | 2 +- test/mode_eulerian4C_test.cpp | 2 +- test/mode_eulerian4C_test.h | 2 +- test/mode_kappa4C_test.cpp | 2 +- test/mode_kappa4C_test.h | 2 +- test/mode_kappa6C_test.cpp | 2 +- test/mode_kappa6C_test.h | 2 +- test/mode_twoC_test.cpp | 2 +- test/mode_twoC_test.h | 2 +- test/object_test.cpp | 2 +- test/object_test.h | 2 +- test/parameter_test.cpp | 2 +- test/parameter_test.h | 2 +- test/pseudoaxe_eulerian4C_test.cpp | 2 +- test/pseudoaxe_eulerian4C_test.h | 2 +- test/pseudoaxe_eulerian6C_test.cpp | 2 +- test/pseudoaxe_eulerian6C_test.h | 2 +- test/pseudoaxe_kappa4C_test.cpp | 2 +- test/pseudoaxe_kappa4C_test.h | 2 +- test/pseudoaxe_kappa6C_test.cpp | 2 +- test/pseudoaxe_kappa6C_test.h | 2 +- test/pseudoaxe_twoC_test.cpp | 2 +- test/pseudoaxe_twoC_test.h | 2 +- test/quaternion_test.cpp | 2 +- test/quaternion_test.h | 2 +- test/range_test.cpp | 2 +- test/range_test.h | 2 +- test/reflection_test.cpp | 2 +- test/reflection_test.h | 2 +- test/reflectionlist_test.cpp | 2 +- test/reflectionlist_test.h | 2 +- test/sample_test.cpp | 2 +- test/sample_test.h | 2 +- test/samplelist_test.cpp | 2 +- test/samplelist_test.h | 2 +- test/source_test.cpp | 2 +- test/source_test.h | 2 +- test/svecmat_test.cpp | 2 +- test/svecmat_test.h | 2 +- test/value_test.cpp | 2 +- test/value_test.h | 2 +- 207 files changed, 207 insertions(+), 207 deletions(-) commit cb0e45c867e5cb8322a064d1c94c8060c186d6b4 Author: Frédéric-Emmanuel PICCA Date: Thu Jan 31 11:45:47 2008 +0100 * add GPL 3 or + licence include/hkl/HKLException.h | 21 +++++++++++++++++++++ include/hkl/HolderList.h | 21 +++++++++++++++++++++ include/hkl/affinement.h | 21 +++++++++++++++++++++ include/hkl/affinement_simplex.h | 21 +++++++++++++++++++++ include/hkl/affinementlist.h | 21 +++++++++++++++++++++ include/hkl/axe.h | 21 +++++++++++++++++++++ include/hkl/axe_rotation.h | 21 +++++++++++++++++++++ include/hkl/axefactory.h | 21 +++++++++++++++++++++ include/hkl/constant.h | 21 +++++++++++++++++++++ include/hkl/convenience.h | 21 +++++++++++++++++++++ include/hkl/derived_mode.h | 21 +++++++++++++++++++++ include/hkl/derived_pseudoaxeengine.h | 21 +++++++++++++++++++++ include/hkl/diffractometer.h | 21 +++++++++++++++++++++ include/hkl/diffractometerfactory.h | 21 +++++++++++++++++++++ include/hkl/eulerian4C_vertical_diffractometer.h | 21 +++++++++++++++++++++ include/hkl/eulerian4C_vertical_geometry.h | 21 +++++++++++++++++++++ include/hkl/eulerian4C_vertical_mode.h | 21 +++++++++++++++++++++ include/hkl/eulerian4C_vertical_pseudoaxeengine.h | 21 +++++++++++++++++++++ include/hkl/eulerian6C_diffractometer.h | 21 +++++++++++++++++++++ include/hkl/eulerian6C_geometry.h | 21 +++++++++++++++++++++ include/hkl/eulerian6C_mode.h | 21 +++++++++++++++++++++ include/hkl/eulerian6C_pseudoaxeengine.h | 21 +++++++++++++++++++++ include/hkl/fitparameter.h | 21 +++++++++++++++++++++ include/hkl/fitparameterlist.h | 21 +++++++++++++++++++++ include/hkl/geometry.h | 21 +++++++++++++++++++++ include/hkl/geometry_kappa.h | 21 +++++++++++++++++++++ include/hkl/hklobject.h | 21 +++++++++++++++++++++ include/hkl/holder.h | 21 +++++++++++++++++++++ include/hkl/interval.h | 21 +++++++++++++++++++++ include/hkl/kappa4C_vertical_diffractometer.h | 21 +++++++++++++++++++++ include/hkl/kappa4C_vertical_geometry.h | 21 +++++++++++++++++++++ include/hkl/kappa4C_vertical_mode.h | 21 +++++++++++++++++++++ include/hkl/kappa4C_vertical_pseudoaxeengine.h | 21 +++++++++++++++++++++ include/hkl/kappa6C_diffractometer.h | 21 +++++++++++++++++++++ include/hkl/kappa6C_geometry.h | 21 +++++++++++++++++++++ include/hkl/kappa6C_mode.h | 21 +++++++++++++++++++++ include/hkl/kappa6C_pseudoaxeengine.h | 21 +++++++++++++++++++++ include/hkl/lattice.h | 21 +++++++++++++++++++++ include/hkl/mode.h | 21 +++++++++++++++++++++ include/hkl/modelist.h | 21 +++++++++++++++++++++ include/hkl/mymap.h | 21 +++++++++++++++++++++ include/hkl/object.h | 21 +++++++++++++++++++++ include/hkl/observer.h | 21 +++++++++++++++++++++ include/hkl/parameter.h | 21 +++++++++++++++++++++ include/hkl/parameterlist.h | 21 +++++++++++++++++++++ include/hkl/portability.h | 21 +++++++++++++++++++++ include/hkl/pseudoaxe.h | 21 +++++++++++++++++++++ include/hkl/pseudoaxeengine.h | 21 +++++++++++++++++++++ include/hkl/pseudoaxeenginelist.h | 21 +++++++++++++++++++++ include/hkl/pseudoaxelist.h | 21 +++++++++++++++++++++ include/hkl/quaternion.h | 21 +++++++++++++++++++++ include/hkl/range.h | 21 +++++++++++++++++++++ include/hkl/reflection.h | 21 +++++++++++++++++++++ include/hkl/reflection_monocrystal.h | 21 +++++++++++++++++++++ include/hkl/reflectionfactory.h | 21 +++++++++++++++++++++ include/hkl/reflectionlist.h | 21 +++++++++++++++++++++ include/hkl/sample.h | 21 +++++++++++++++++++++ include/hkl/sample_monocrystal.h | 21 +++++++++++++++++++++ include/hkl/samplefactory.h | 21 +++++++++++++++++++++ include/hkl/samplelist.h | 21 +++++++++++++++++++++ include/hkl/source.h | 21 +++++++++++++++++++++ include/hkl/strbuf.h | 21 +++++++++++++++++++++ include/hkl/svector.h | 21 +++++++++++++++++++++ include/hkl/twoC_vertical_diffractometer.h | 21 +++++++++++++++++++++ include/hkl/twoC_vertical_geometry.h | 21 +++++++++++++++++++++ include/hkl/twoC_vertical_mode.h | 21 +++++++++++++++++++++ include/hkl/twoC_vertical_pseudoaxeengine.h | 21 +++++++++++++++++++++ include/hkl/value.h | 21 +++++++++++++++++++++ src/HKLException.cpp | 21 +++++++++++++++++++++ src/affinement.cpp | 21 +++++++++++++++++++++ src/affinement_simplex.cpp | 21 +++++++++++++++++++++ src/affinementlist.cpp | 21 +++++++++++++++++++++ src/axe.cpp | 21 +++++++++++++++++++++ src/axe_rotation.cpp | 21 +++++++++++++++++++++ src/axefactory.cpp | 21 +++++++++++++++++++++ src/constant.cpp | 21 +++++++++++++++++++++ src/convenience.cpp | 21 +++++++++++++++++++++ src/diffractometer.cpp | 21 +++++++++++++++++++++ src/diffractometerfactory.cpp | 21 +++++++++++++++++++++ src/eulerian4C_vertical_diffractometer.cpp | 21 +++++++++++++++++++++ src/eulerian4C_vertical_geometry.cpp | 21 +++++++++++++++++++++ src/eulerian4C_vertical_mode.cpp | 21 +++++++++++++++++++++ src/eulerian4C_vertical_pseudoaxeengine.cpp | 21 +++++++++++++++++++++ src/eulerian6C_diffractometer.cpp | 21 +++++++++++++++++++++ src/eulerian6C_geometry.cpp | 21 +++++++++++++++++++++ src/eulerian6C_pseudoaxeengine.cpp | 21 +++++++++++++++++++++ src/fitparameter.cpp | 21 +++++++++++++++++++++ src/fitparameterlist.cpp | 21 +++++++++++++++++++++ src/geometry.cpp | 21 +++++++++++++++++++++ src/geometry_kappa.cpp | 21 +++++++++++++++++++++ src/hklobject.cpp | 21 +++++++++++++++++++++ src/holder.cpp | 21 +++++++++++++++++++++ src/interval.cpp | 21 +++++++++++++++++++++ src/kappa4C_vertical_diffractometer.cpp | 21 +++++++++++++++++++++ src/kappa4C_vertical_geometry.cpp | 21 +++++++++++++++++++++ src/kappa4C_vertical_pseudoaxeengine.cpp | 21 +++++++++++++++++++++ src/kappa6C_diffractometer.cpp | 21 +++++++++++++++++++++ src/kappa6C_geometry.cpp | 21 +++++++++++++++++++++ src/lattice.cpp | 21 +++++++++++++++++++++ src/mode.cpp | 21 +++++++++++++++++++++ src/modelist.cpp | 21 +++++++++++++++++++++ src/object.cpp | 21 +++++++++++++++++++++ src/observer.cpp | 21 +++++++++++++++++++++ src/parameter.cpp | 21 +++++++++++++++++++++ src/parameterlist.cpp | 21 +++++++++++++++++++++ src/pseudoaxe.cpp | 21 +++++++++++++++++++++ src/pseudoaxeengine.cpp | 21 +++++++++++++++++++++ src/pseudoaxeenginelist.cpp | 21 +++++++++++++++++++++ src/pseudoaxelist.cpp | 21 +++++++++++++++++++++ src/quaternion.cpp | 21 +++++++++++++++++++++ src/range.cpp | 21 +++++++++++++++++++++ src/reflection.cpp | 21 +++++++++++++++++++++ src/reflection_monocrystal.cpp | 21 +++++++++++++++++++++ src/reflectionfactory.cpp | 21 +++++++++++++++++++++ src/reflectionlist.cpp | 21 +++++++++++++++++++++ src/sample.cpp | 21 +++++++++++++++++++++ src/sample_monocrystal.cpp | 21 +++++++++++++++++++++ src/samplefactory.cpp | 21 +++++++++++++++++++++ src/samplelist.cpp | 21 +++++++++++++++++++++ src/source.cpp | 21 +++++++++++++++++++++ src/strbuf.cpp | 21 +++++++++++++++++++++ src/svector.cpp | 21 +++++++++++++++++++++ src/twoC_vertical_diffractometer.cpp | 21 +++++++++++++++++++++ src/twoC_vertical_geometry.cpp | 21 +++++++++++++++++++++ src/twoC_vertical_mode.cpp | 21 +++++++++++++++++++++ src/twoC_vertical_pseudoaxeengine.cpp | 21 +++++++++++++++++++++ src/value.cpp | 21 +++++++++++++++++++++ test/affinement_simplex_test.cpp | 21 +++++++++++++++++++++ test/affinement_simplex_test.h | 21 +++++++++++++++++++++ test/axe_rotation_test.cpp | 21 +++++++++++++++++++++ test/axe_rotation_test.h | 21 +++++++++++++++++++++ test/diffractometer_eulerian4C_test.cpp | 21 +++++++++++++++++++++ test/diffractometer_eulerian4C_test.h | 21 +++++++++++++++++++++ test/diffractometer_kappa4C_test.cpp | 21 +++++++++++++++++++++ test/diffractometer_kappa4C_test.h | 21 +++++++++++++++++++++ test/diffractometer_kappa6C_test.cpp | 21 +++++++++++++++++++++ test/diffractometer_kappa6C_test.h | 21 +++++++++++++++++++++ test/diffractometer_test.cpp | 21 +++++++++++++++++++++ test/diffractometer_test.h | 21 +++++++++++++++++++++ test/diffractometer_twoC_test.cpp | 21 +++++++++++++++++++++ test/diffractometer_twoC_test.h | 21 +++++++++++++++++++++ test/fitparameter_test.cpp | 21 +++++++++++++++++++++ test/fitparameter_test.h | 21 +++++++++++++++++++++ test/geometry_eulerian4C_test.cpp | 21 +++++++++++++++++++++ test/geometry_eulerian4C_test.h | 21 +++++++++++++++++++++ test/geometry_eulerian6C_test.cpp | 21 +++++++++++++++++++++ test/geometry_eulerian6C_test.h | 21 +++++++++++++++++++++ test/geometry_kappa4C_test.cpp | 21 +++++++++++++++++++++ test/geometry_kappa4C_test.h | 21 +++++++++++++++++++++ test/geometry_kappa6C_test.cpp | 21 +++++++++++++++++++++ test/geometry_kappa6C_test.h | 21 +++++++++++++++++++++ test/geometry_test.cpp | 21 +++++++++++++++++++++ test/geometry_test.h | 21 +++++++++++++++++++++ test/geometry_twoC_test.cpp | 21 +++++++++++++++++++++ test/geometry_twoC_test.h | 21 +++++++++++++++++++++ test/hklobject_test.cpp | 21 +++++++++++++++++++++ test/hklobject_test.h | 21 +++++++++++++++++++++ test/holder_test.cpp | 21 +++++++++++++++++++++ test/holder_test.h | 21 +++++++++++++++++++++ test/holderlist_test.cpp | 21 +++++++++++++++++++++ test/holderlist_test.h | 21 +++++++++++++++++++++ test/interval_test.cpp | 21 +++++++++++++++++++++ test/interval_test.h | 21 +++++++++++++++++++++ test/lattice_test.cpp | 21 +++++++++++++++++++++ test/lattice_test.h | 21 +++++++++++++++++++++ test/libHKL_test.cpp | 21 +++++++++++++++++++++ test/main.cpp | 21 +++++++++++++++++++++ test/mode_eulerian4C_test.cpp | 21 +++++++++++++++++++++ test/mode_eulerian4C_test.h | 21 +++++++++++++++++++++ test/mode_kappa4C_test.cpp | 21 +++++++++++++++++++++ test/mode_kappa4C_test.h | 21 +++++++++++++++++++++ test/mode_kappa6C_test.cpp | 21 +++++++++++++++++++++ test/mode_kappa6C_test.h | 21 +++++++++++++++++++++ test/mode_twoC_test.cpp | 21 +++++++++++++++++++++ test/mode_twoC_test.h | 21 +++++++++++++++++++++ test/object_test.cpp | 21 +++++++++++++++++++++ test/object_test.h | 21 +++++++++++++++++++++ test/parameter_test.cpp | 21 +++++++++++++++++++++ test/parameter_test.h | 21 +++++++++++++++++++++ test/pseudoaxe_eulerian4C_test.cpp | 21 +++++++++++++++++++++ test/pseudoaxe_eulerian4C_test.h | 21 +++++++++++++++++++++ test/pseudoaxe_eulerian6C_test.cpp | 21 +++++++++++++++++++++ test/pseudoaxe_eulerian6C_test.h | 21 +++++++++++++++++++++ test/pseudoaxe_kappa4C_test.cpp | 21 +++++++++++++++++++++ test/pseudoaxe_kappa4C_test.h | 21 +++++++++++++++++++++ test/pseudoaxe_kappa6C_test.cpp | 21 +++++++++++++++++++++ test/pseudoaxe_kappa6C_test.h | 21 +++++++++++++++++++++ test/pseudoaxe_twoC_test.cpp | 21 +++++++++++++++++++++ test/pseudoaxe_twoC_test.h | 21 +++++++++++++++++++++ test/quaternion_test.cpp | 21 +++++++++++++++++++++ test/quaternion_test.h | 21 +++++++++++++++++++++ test/range_test.cpp | 21 +++++++++++++++++++++ test/range_test.h | 21 +++++++++++++++++++++ test/reflection_test.cpp | 21 +++++++++++++++++++++ test/reflection_test.h | 21 +++++++++++++++++++++ test/reflectionlist_test.cpp | 21 +++++++++++++++++++++ test/reflectionlist_test.h | 21 +++++++++++++++++++++ test/sample_test.cpp | 21 +++++++++++++++++++++ test/sample_test.h | 21 +++++++++++++++++++++ test/samplelist_test.cpp | 21 +++++++++++++++++++++ test/samplelist_test.h | 21 +++++++++++++++++++++ test/source_test.cpp | 21 +++++++++++++++++++++ test/source_test.h | 21 +++++++++++++++++++++ test/svecmat_test.cpp | 21 +++++++++++++++++++++ test/svecmat_test.h | 21 +++++++++++++++++++++ test/value_test.cpp | 21 +++++++++++++++++++++ test/value_test.h | 21 +++++++++++++++++++++ 207 files changed, 4347 insertions(+), 0 deletions(-) commit 0c063b778173c61c57aadc35769f5c191d24097a Author: Frédéric-Emmanuel PICCA Date: Tue Jan 8 16:47:41 2008 +0100 * add the new/free method to the HklParameter struct include/hkl/hkl-parameter.h | 6 ++++++ src/hkl-parameter.c | 24 ++++++++++++++++++++++++ test/hkl-test-parameter.c | 17 +++++++++++++++++ 3 files changed, 47 insertions(+), 0 deletions(-) commit 582eb906fd9db4ec1bd4b61d5716f1440ddb84d1 Author: Frédéric-Emmanuel PICCA Date: Tue Dec 25 18:24:54 2007 +0100 * add new and free method to the HKLSource struct and test methods refactor a part of geometry and diffractometer to use new and free method of most structures. include/hkl/hkl-diffractometer.h | 8 +++++--- include/hkl/hkl-diffractometer_2C.h | 30 +++++++++++++++--------------- include/hkl/hkl-geometry.h | 10 ++++------ include/hkl/hkl-source.h | 4 ++++ src/hkl-diffractometer.c | 16 +++++++++++++--- src/hkl-geometry.c | 18 ++++++++++++++---- src/hkl-source.c | 16 ++++++++++++++++ test/hkl-test-source.c | 12 ++++++++++++ 8 files changed, 83 insertions(+), 31 deletions(-) commit 36650f8c47349bda49e4f6426c1e4e861e7c408c Author: Frédéric-Emmanuel PICCA Date: Tue Dec 25 17:34:40 2007 +0100 * remove unecessary files and small typo include/hkl/hkl-holder.h | 2 - test/hkl-test-holder.c | 1 - test/holder_test.cpp | 78 ---------------------------------------------- test/holder_test.h | 33 ------------------- 4 files changed, 0 insertions(+), 114 deletions(-) commit 73ac85afb08b655480fa8c02dfce3da2b0fad56b Author: Frédéric-Emmanuel PICCA Date: Thu Dec 20 11:27:24 2007 +0100 * add the HklHolders tests. include/hkl/hkl-holders.h | 2 -- src/hkl-holders.c | 13 +++++++++---- test/SConscript | 3 +-- test/hkl-test-holders.c | 39 +++++++++++++++++++++++++++++++++++++++ test/main.c | 1 + 5 files changed, 50 insertions(+), 8 deletions(-) commit b0b46ec7e034b6422abacb843e5ad85934949979 Author: Frédéric-Emmanuel PICCA Date: Thu Dec 20 09:21:40 2007 +0100 * minor typo changes src/hkl-holders.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit 7be4b4fe77a519eb580b8074347ea329911096e8 Author: Frédéric-Emmanuel PICCA Date: Thu Dec 20 00:22:20 2007 +0100 * add the HklHolder tests src/hkl-holder.c | 16 ++++-------- test/SConscript | 1 + test/hkl-test-holder.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++++ test/main.c | 1 + 4 files changed, 69 insertions(+), 10 deletions(-) commit 289ae5d418cb4f060ac300eeb740982831407850 Author: Frédéric-Emmanuel PICCA Date: Thu Dec 20 00:20:24 2007 +0100 *die if you try to add two axis with the same name but a different axis_v. src/hkl-axes.c | 7 +++++-- test/hkl-test-axis.c | 5 ----- 2 files changed, 5 insertions(+), 7 deletions(-) commit c0f0f1ac56ec44a5ec4e1de7bd967a70d339cab5 Author: Frédéric-Emmanuel PICCA Date: Wed Dec 19 23:57:47 2007 +0100 * remove a bug in the Hklholder class src/hkl-holder.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 8e4184f78b44623f4e39b73c963abe9bef4132e2 Author: Frédéric-Emmanuel PICCA Date: Wed Dec 19 23:56:29 2007 +0100 * indentation include/hkl/hkl-macros.h | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit c7845549930f423dfde84e9b9151f987c8be8d7a Author: Frédéric-Emmanuel PICCA Date: Wed Dec 19 21:08:29 2007 +0100 * remove a bug in the axes list and put a test for it src/hkl-axes.c | 2 +- test/hkl-test-axis.c | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) commit 64e5182ac58601fb1d69b40a246e4b1b02192ddb Author: Frédéric-Emmanuel PICCA Date: Wed Dec 19 20:14:08 2007 +0100 * add the new/free axes tests. include/hkl/hkl-axes.h | 2 -- test/hkl-test-axis.c | 16 ++++++++-------- 2 files changed, 8 insertions(+), 10 deletions(-) commit eb6c657ce67645d92f1a31c4ef11dbb287602573 Author: Frédéric-Emmanuel PICCA Date: Wed Dec 19 19:59:25 2007 +0100 * rename all test files with the right convention test/SConscript | 18 ++-- test/axis_test.c | 130 ------------------ test/hkl-test-axis.c | 130 ++++++++++++++++++ test/hkl-test-interval.c | 310 ++++++++++++++++++++++++++++++++++++++++++++ test/hkl-test-lattice.c | 147 +++++++++++++++++++++ test/hkl-test-matrix.c | 118 +++++++++++++++++ test/hkl-test-parameter.c | 29 ++++ test/hkl-test-quaternion.c | 147 +++++++++++++++++++++ test/hkl-test-source.c | 45 +++++++ test/hkl-test-vector.c | 139 ++++++++++++++++++++ test/hkl-test.c | 69 ++++++++++ test/hkl-test.h | 71 ++++++++++ test/interval_test.c | 310 -------------------------------------------- test/lattice_test.c | 147 --------------------- test/main.c | 2 +- test/parameter_test.c | 29 ---- test/quaternion_test.c | 147 --------------------- test/smatrix_test.c | 118 ----------------- test/source_test.c | 45 ------- test/svector_test.c | 139 -------------------- test/test.c | 69 ---------- test/test.h | 71 ---------- 22 files changed, 1215 insertions(+), 1215 deletions(-) commit 62904e51058a456303a8d16b8f8cccf7b0344e9c Author: Frédéric-Emmanuel PICCA Date: Wed Dec 19 19:51:37 2007 +0100 * now all tests are OK. test/axis_test.c | 5 +- test/interval_test.c | 26 ++++++++++++ test/lattice_test.c | 105 +++++++++++++++++++++++++---------------------- test/parameter_test.c | 2 + test/quaternion_test.c | 16 +++++++ test/smatrix_test.c | 12 +++++ test/source_test.c | 30 ++++++++------ test/svector_test.c | 18 ++++++++ test/test.h | 8 +--- 9 files changed, 152 insertions(+), 70 deletions(-) commit c8d26b6c045be29765093335c1ac4f9132f886b5 Author: Frédéric-Emmanuel PICCA Date: Wed Dec 19 16:17:22 2007 +0100 * add the new and free method to the axes holder and holders struct try to find a memory leak but the problem in test suit comes from the HKL_ASSERT_EQUAL macro. It return True if the test pass so I can put only one test per funvtion, this is not good. include/hkl/hkl-axes.h | 6 ++++++ include/hkl/hkl-holder.h | 6 ++++++ src/hkl-axes.c | 18 ++++++++++++++++++ src/hkl-holder.c | 15 +++++++++++++++ src/hkl-holders.c | 15 +++++++++++++++ test/axis_test.c | 45 ++++++++++++++++++++++++--------------------- 6 files changed, 84 insertions(+), 21 deletions(-) commit 15ef7cfedf958161e011f22485a2ace10537dec6 Author: Frédéric-Emmanuel PICCA Date: Wed Dec 19 15:14:38 2007 +0100 * remove the print env.Dump (debugging) test/SConscript | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 5bcd7e3f16e0f5fff048a8dd8ecbe3b47ee9b982 Author: Frédéric-Emmanuel PICCA Date: Wed Dec 19 15:13:24 2007 +0100 use a better convention for file names. It clearer to read hkl-myclass instead of hklmyclass config-win32.py | 2 - include/hkl/hkl-axes.h | 25 ++ include/hkl/hkl-axis.h | 29 +++ include/hkl/hkl-diffractometer.h | 31 +++ include/hkl/hkl-diffractometer_2C.h | 30 +++ include/hkl/hkl-geometry.h | 24 ++ include/hkl/hkl-holder.h | 25 ++ include/hkl/hkl-holders.h | 31 +++ include/hkl/hkl-interval.h | 48 ++++ include/hkl/hkl-lattice.h | 31 +++ include/hkl/hkl-macros.h | 76 ++++++ include/hkl/hkl-matrix.h | 39 +++ include/hkl/hkl-parameter.h | 23 ++ include/hkl/hkl-quaternion.h | 71 ++++++ include/hkl/hkl-sample.h | 45 ++++ include/hkl/hkl-source.h | 26 ++ include/hkl/hkl-vector.h | 64 +++++ include/hkl/hklaxes.h | 25 -- include/hkl/hklaxis.h | 29 --- include/hkl/hkldiffractometer.h | 31 --- include/hkl/hkldiffractometer_2C.h | 30 --- include/hkl/hklgeometry.h | 24 -- include/hkl/hklholder.h | 25 -- include/hkl/hklholders.h | 25 -- include/hkl/hklinterval.h | 48 ---- include/hkl/hkllattice.h | 31 --- include/hkl/hklmacros.h | 76 ------ include/hkl/hklmatrix.h | 39 --- include/hkl/hklparameter.h | 23 -- include/hkl/hklquaternion.h | 71 ------ include/hkl/hklsource.h | 26 -- include/hkl/hklvector.h | 64 ----- src/SConscript | 26 +- src/hkl-axes.c | 57 +++++ src/hkl-axis.c | 12 + src/hkl-diffractometer.c | 39 +++ src/hkl-geometry.c | 12 + src/hkl-holder.c | 52 ++++ src/hkl-holders.c | 38 +++ src/hkl-interval.c | 435 +++++++++++++++++++++++++++++++++++ src/hkl-lattice.c | 235 +++++++++++++++++++ src/hkl-matrix.c | 180 +++++++++++++++ src/hkl-parameter.c | 24 ++ src/hkl-quaternion.c | 164 +++++++++++++ src/hkl-sample.c | 48 ++++ src/hkl-source.c | 51 ++++ src/hkl-vector.c | 256 ++++++++++++++++++++ src/hklaxes.c | 57 ----- src/hklaxis.c | 12 - src/hkldiffractometer.c | 39 --- src/hklgeometry.c | 12 - src/hklholder.c | 52 ---- src/hklholders.c | 38 --- src/hklinterval.c | 435 ----------------------------------- src/hkllattice.c | 235 ------------------- src/hklmatrix.c | 180 --------------- src/hklparameter.c | 24 -- src/hklquaternion.c | 164 ------------- src/hklsource.c | 51 ---- src/hklvector.c | 256 -------------------- src/usage.c | 2 +- test/SConscript | 2 +- test/axis_test.c | 2 +- test/interval_test.c | 2 +- test/lattice_test.c | 2 +- test/main.c | 1 + test/parameter_test.c | 2 +- test/quaternion_test.c | 6 +- test/smatrix_test.c | 4 +- test/source_test.c | 2 +- test/svector_test.c | 4 +- test/test.c | 3 +- 72 files changed, 2251 insertions(+), 2152 deletions(-) commit d8323e8373f81f632d21d4afae3a717aabcc7d19 Author: Frédéric-Emmanuel PICCA Date: Tue Dec 18 17:53:36 2007 +0100 * now compile with VC6. SConstruct | 2 +- test/SConscript | 23 ++++++++++++----------- test/axis_test.c | 2 ++ test/test.h | 9 +++++---- 4 files changed, 20 insertions(+), 16 deletions(-) commit 2e7e05e38a327038184935b541a838a019597f2b Author: Frédéric-Emmanuel PICCA Date: Fri Dec 14 07:38:48 2007 +0100 * juste add the reflection file src/reflection.c | 123 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 123 insertions(+), 0 deletions(-) commit 3d497b2f984cca43e0823568e0d09af468b70c66 Author: Frédéric-Emmanuel PICCA Date: Sun Dec 9 22:40:22 2007 +0100 * use the gtk style for the source files. include/hkl/axes.h | 33 --- include/hkl/axis.h | 31 --- include/hkl/config.h | 66 ------ include/hkl/diffractometer.h | 36 --- include/hkl/diffractometer_2C.h | 38 --- include/hkl/geometry.h | 33 --- include/hkl/hklaxes.h | 25 ++ include/hkl/hklaxis.h | 29 +++ include/hkl/hkldiffractometer.h | 31 +++ include/hkl/hkldiffractometer_2C.h | 30 +++ include/hkl/hklgeometry.h | 24 ++ include/hkl/hklholder.h | 25 ++ include/hkl/hklholders.h | 25 ++ include/hkl/hklinterval.h | 48 ++++ include/hkl/hkllattice.h | 31 +++ include/hkl/hklmacros.h | 76 +++++++ include/hkl/hklmatrix.h | 39 ++++ include/hkl/hklparameter.h | 23 ++ include/hkl/hklquaternion.h | 71 ++++++ include/hkl/hklsource.h | 26 +++ include/hkl/hklvector.h | 64 ++++++ include/hkl/holder.h | 33 --- include/hkl/holders.h | 33 --- include/hkl/interval.h | 50 ---- include/hkl/lattice.h | 38 --- include/hkl/parameter.h | 27 --- include/hkl/reflection.h | 184 +-------------- include/hkl/smatrix.h | 46 ---- include/hkl/source.h | 30 --- include/hkl/svector.h | 71 ------ src/SConscript | 30 ++-- src/axes.c | 59 ----- src/axis.c | 13 - src/diffractometer.c | 39 ---- src/geometry.c | 12 - src/hklaxes.c | 57 +++++ src/hklaxis.c | 12 + src/hkldiffractometer.c | 39 ++++ src/hklgeometry.c | 12 + src/hklholder.c | 52 +++++ src/hklholders.c | 38 +++ src/hklinterval.c | 435 +++++++++++++++++++++++++++++++++++ src/hkllattice.c | 235 +++++++++++++++++++ src/hklmatrix.c | 180 +++++++++++++++ src/hklparameter.c | 24 ++ src/hklquaternion.c | 164 ++++++++++++++ src/hklsource.c | 51 +++++ src/hklvector.c | 256 +++++++++++++++++++++ src/holder.c | 56 ----- src/holders.c | 41 ---- src/interval.c | 436 ------------------------------------ src/lattice.c | 238 -------------------- src/parameter.c | 25 -- src/quaternion.c | 164 -------------- src/smatrix.c | 180 --------------- src/source.c | 52 ----- src/svector.c | 256 --------------------- src/usage.c | 2 +- test/axis_test.c | 23 +- test/interval_test.c | 59 +++--- test/lattice_test.c | 20 +- test/parameter_test.c | 5 +- test/quaternion_test.c | 53 +++--- test/smatrix_test.c | 35 ++-- test/source_test.c | 15 +- test/svector_test.c | 51 ++--- test/test.c | 2 +- 67 files changed, 2277 insertions(+), 2460 deletions(-) commit cb81cfb13de08f368c2d350c5ecca30fc30fec28 Author: Frédéric-Emmanuel PICCA Date: Sun Dec 2 23:22:43 2007 +0100 * add the parameter an lattice C part with tests include/hkl/fitparameter.h | 118 --------- include/hkl/lattice.h | 250 +++----------------- include/hkl/parameter.h | 75 ++----- src/SConscript | 5 +- src/lattice.c | 238 ++++++++++++++++++ src/lattice.cpp | 571 -------------------------------------------- src/parameter.c | 25 ++ src/parameter.cpp | 46 ---- test/SConscript | 4 +- test/lattice_test.c | 142 +++++++++++ test/lattice_test.cpp | 204 ---------------- test/lattice_test.h | 37 --- test/main.c | 14 +- test/parameter_test.c | 28 +++ test/parameter_test.cpp | 22 -- test/parameter_test.h | 24 -- 16 files changed, 493 insertions(+), 1310 deletions(-) commit b8b7db6212989abf427b24155426d99678c0a35a Author: Frédéric-Emmanuel PICCA Date: Sat Dec 1 22:59:46 2007 +0100 * all tests are OK now. src/SConscript | 1 + src/axes.c | 2 +- src/axis.c | 4 +++- src/diffractometer.c | 1 - test/axis_test.c | 9 ++++++--- 5 files changed, 11 insertions(+), 6 deletions(-) commit b48dd2da540a992e22c7b128895d7bf087eb9bdb Author: Frédéric-Emmanuel PICCA Date: Sat Dec 1 00:47:27 2007 +0100 * refactoring of the C version test do not compile. include/hkl/axes.h | 33 ++ include/hkl/axis.h | 55 +-- include/hkl/config.h | 19 +- include/hkl/diffractometer.h | 341 ++-------------- include/hkl/diffractometer_2C.h | 38 ++ include/hkl/geometry.h | 223 +--------- include/hkl/holder.h | 43 +-- include/hkl/holders.h | 33 ++ include/hkl/new_diffractometer.h | 48 --- include/hkl/new_diffractometer_2C.h | 40 -- include/hkl/new_geometry.h | 45 -- include/hkl/source.h | 20 +- src/SConscript | 18 +- src/axes.c | 59 +++ src/axis.c | 165 +------- src/diffractometer.c | 40 ++ src/diffractometer.cpp | 49 --- src/geometry.c | 12 + src/holder.c | 114 ++---- src/holders.c | 41 ++ src/interval.c | 792 ++++++++++++++++------------------- src/new_diffractometer.c | 74 ---- src/new_geometry.c | 36 -- src/quaternion.c | 161 ++++---- src/smatrix.c | 236 +++++------ src/source.c | 56 ++- 26 files changed, 980 insertions(+), 1811 deletions(-) commit cb89c56cb060e63da61134ac9f0385e59b3c85ee Author: Frédéric-Emmanuel PICCA Date: Wed Nov 21 17:15:27 2007 +0100 * add the axis source test test/SConscript | 2 +- test/axis_test.c | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++ test/axis_test.cpp | 120 -------------------------------------------------- test/axis_test.h | 25 ---------- test/main.c | 1 + 5 files changed, 126 insertions(+), 146 deletions(-) commit 144be6c394472ce6a0612ffc8a742f31c51ea906 Author: Frédéric-Emmanuel PICCA Date: Wed Nov 21 17:01:25 2007 +0100 * add more C tests (interval + source) include/hkl/config.h | 1 + test/SConscript | 7 +- test/interval_test.c | 285 +++++++++++++++++++++++++++++++++++++++++++++++ test/interval_test.cpp | 291 ------------------------------------------------ test/interval_test.h | 51 --------- test/libHKL_test.cpp | 16 --- test/main.c | 5 +- test/quaternion_test.c | 42 ++++--- test/quaternion_test.h | 6 - test/smatrix_test.c | 107 ++++++++++++++++++ test/source_test.c | 42 +++++++ test/source_test.cpp | 36 ------ test/source_test.h | 27 ----- test/svecmat_test.c | 207 ---------------------------------- test/svecmat_test.h | 6 - test/svector_test.c | 122 ++++++++++++++++++++ test/test.h | 19 ++- 17 files changed, 600 insertions(+), 670 deletions(-) commit 4d992f063aa068fd159cf4cbecce94d3d4c86ed5 Author: Frédéric-Emmanuel PICCA Date: Tue Nov 20 16:36:47 2007 +0100 * refactor the quaternion tests test/SConscript | 2 +- test/main.c | 2 + test/quaternion_test.c | 128 +++++++++++++++++++++++++++++++++++++++++++++ test/quaternion_test.cpp | 130 ---------------------------------------------- test/quaternion_test.h | 35 +------------ test/svecmat_test.c | 32 ++++++----- test/test.h | 2 +- 7 files changed, 150 insertions(+), 181 deletions(-) commit bcb5b74ed3edc54c2061bfbb392545f0c4b0682a Author: Frédéric-Emmanuel PICCA Date: Tue Nov 20 16:01:13 2007 +0100 * remove the cppunit dependency Add an home made test system. SConstruct | 4 +- src/svector.c | 248 ++++++++++++++++++++++++------------------------ test/SConscript | 32 +++---- test/main.c | 19 ++++ test/main.cpp | 16 --- test/svecmat_test.c | 205 ++++++++++++++++++++++++++++++++++++++++ test/svecmat_test.cpp | 210 ----------------------------------------- test/svecmat_test.h | 54 +----------- test/test.c | 68 ++++++++++++++ test/test.h | 67 +++++++++++++ 10 files changed, 498 insertions(+), 425 deletions(-) commit 67931efdc5dd90a5a05eaef33e8c42d19b5f3274 Author: Frédéric-Emmanuel PICCA Date: Tue Oct 30 22:18:33 2007 +0100 * pass all axis tests include/hkl/axis.h | 4 +- src/geometry.cpp | 4 +- test/axis_test.cpp | 131 ++++++++++++++++++++++++++++------------------------ 3 files changed, 74 insertions(+), 65 deletions(-) commit acd06ff9f217bf1fd422c868a55d6b31bf4e0d2a Author: Frédéric-Emmanuel PICCA Date: Tue Oct 30 21:43:37 2007 +0100 * the first part of the axis test is OK config-linux2.py | 1 - src/axis.c | 7 ++++--- test/SConscript | 7 ++++--- test/axis_test.cpp | 36 ++++++++++++++++++++++-------------- 4 files changed, 30 insertions(+), 21 deletions(-) commit d39479e206a97e98894893e4a137bff5e9707a30 Author: Frédéric-Emmanuel PICCA Date: Mon Oct 29 22:02:57 2007 +0100 * work on the axis test (do not compile) include/hkl/axis.h | 4 +- src/axis.c | 34 +++++++++ test/axis_test.cpp | 189 ++++++++++++++++++++++------------------------------ test/axis_test.h | 12 ++-- 4 files changed, 122 insertions(+), 117 deletions(-) commit 0f17ffcc448678b34bd0cd5fb47165ea7f34db38 Author: Frédéric-Emmanuel PICCA Date: Sun Oct 28 23:07:44 2007 +0100 * start the work on the axis, holder parte. include/hkl/HolderList.h | 34 - include/hkl/axis.h | 4 + include/hkl/derived_pseudoaxeengine.h | 1007 ++++++++++++++------------- include/hkl/eulerian4C_vertical_geometry.h | 331 ++++----- include/hkl/eulerian6C_geometry.h | 391 +++++------ include/hkl/geometry.h | 366 +++++----- include/hkl/holder.h | 208 +----- include/hkl/kappa4C_vertical_geometry.h | 547 +++++++-------- include/hkl/kappa6C_geometry.h | 396 +++++------ include/hkl/new_geometry.h | 4 +- include/hkl/new_holder.h | 41 -- include/hkl/pseudoaxe.h | 270 ++++---- include/hkl/pseudoaxeengine.h | 13 +- include/hkl/twoC_vertical_geometry.h | 263 +++---- include/hkl/twoC_vertical_pseudoaxeengine.h | 187 +++--- src/SConscript | 11 +- src/geometry.cpp | 613 ++++++++-------- src/holder.c | 112 +++ src/holder.cpp | 248 ------- src/new_holder.c | 112 --- src/pseudoaxe.cpp | 4 +- src/reflection.cpp | 232 +++--- src/sample.cpp | 297 ++++---- src/twoC_vertical_geometry.cpp | 564 ++++++++-------- src/twoC_vertical_mode.cpp | 146 ++-- src/twoC_vertical_pseudoaxeengine.cpp | 576 ++++++++-------- test/SConscript | 18 +- test/axe_rotation_test.cpp | 129 ---- test/axe_rotation_test.h | 31 - test/axis_test.cpp | 130 ++++ test/axis_test.h | 27 + test/diffractometer_twoC_test.cpp | 368 ---------- test/diffractometer_twoC_test.h | 58 -- test/geometry_twoC_test.cpp | 246 ------- test/geometry_twoC_test.h | 44 -- test/mode_twoC_test.cpp | 125 ---- test/mode_twoC_test.h | 34 - test/pseudoaxe_twoC_test.cpp | 289 -------- test/pseudoaxe_twoC_test.h | 32 - test/twoC_vertical_diffractometer_test.cpp | 368 ++++++++++ test/twoC_vertical_diffractometer_test.h | 58 ++ test/twoC_vertical_geometry_test.cpp | 246 +++++++ test/twoC_vertical_geometry_test.h | 44 ++ test/twoC_vertical_mode_test.cpp | 125 ++++ test/twoC_vertical_mode_test.h | 34 + test/twoC_vertical_pseudoaxeengine_test.cpp | 289 ++++++++ test/twoC_vertical_pseudoaxeengine_test.h | 32 + 47 files changed, 4517 insertions(+), 5187 deletions(-) commit c3b72d16ef1a97a26e8794253dfea2f994f2b0c2 Author: Frédéric-Emmanuel PICCA Date: Fri Oct 26 16:18:41 2007 +0200 * start working on the axe C++ -> C transition include/hkl/axe.h | 256 ------------------------ include/hkl/axe_rotation.h | 150 -------------- include/hkl/axefactory.h | 34 ---- include/hkl/axis.h | 56 ++++++ include/hkl/holder.h | 424 +++++++++++++++------------------------- include/hkl/new_axe.h | 50 ----- src/SConscript | 5 +- src/axe.cpp | 279 -------------------------- src/axe_rotation.cpp | 149 -------------- src/axefactory.cpp | 34 ---- src/axis.c | 137 +++++++++++++ src/holder.cpp | 465 +++++++++++++++++++++++--------------------- src/new_axe.c | 124 ------------ 13 files changed, 595 insertions(+), 1568 deletions(-) commit 621048230d4eb2041a6c7b394de5b0802c84cb70 Author: Frédéric-Emmanuel PICCA Date: Wed Oct 24 13:54:03 2007 +0200 * working on the C version of the geometry include/hkl/new_axe.h | 51 ++++--- include/hkl/new_diffractometer.h | 48 +++++++ include/hkl/new_diffractometer_2C.h | 40 ++++++ include/hkl/new_geometry.h | 255 +++-------------------------------- include/hkl/new_holder.h | 42 +++--- src/SConscript | 1 + src/new_axe.c | 138 +++++++++++++------ src/new_diffractometer.c | 74 ++++++++++ src/new_geometry.c | 36 +++++ src/new_holder.c | 136 ++++++++++++------- 10 files changed, 449 insertions(+), 372 deletions(-) commit 22cbd15ea9c4d9890f320ed05af1cf12592d8cdd Author: Frédéric-Emmanuel PICCA Date: Thu Oct 4 17:54:49 2007 +0200 * start adding the holder and axe C version include/hkl/config.h | 32 ++++++ include/hkl/new_axe.h | 43 +++++++ include/hkl/new_geometry.h | 264 ++++++++++++++++++++++++++++++++++++++++++++ include/hkl/new_holder.h | 41 +++++++ src/SConscript | 4 + src/new_axe.c | 72 ++++++++++++ src/new_holder.c | 74 ++++++++++++ src/usage.c | 41 +++++++ 8 files changed, 571 insertions(+), 0 deletions(-) commit 601317ef9c914de05f53531b28a4db0fde448af0 Author: Frédéric-Emmanuel PICCA Date: Tue Oct 2 17:09:54 2007 +0200 * remove gcc warnings src/interval.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit 6aafd1c470b22ed7f1f12657521c0d96496f7ef3 Author: Frédéric-Emmanuel PICCA Date: Tue Oct 2 15:53:18 2007 +0200 * source c++ -> source (simpler) win32 compilation is ok now config-linux2.py | 1 + include/hkl/geometry.h | 50 ++----------- include/hkl/mode.h | 5 +- include/hkl/source.h | 130 +++++---------------------------- include/hkl/svector.h | 1 + src/SConscript | 2 +- src/axefactory.cpp | 1 + src/eulerian4C_vertical_geometry.cpp | 18 +++-- src/eulerian6C_geometry.cpp | 14 ++-- src/eulerian6C_pseudoaxeengine.cpp | 8 +- src/geometry.cpp | 61 ++++++++++------ src/holder.cpp | 2 +- src/interval.c | 20 ++++-- src/kappa4C_vertical_geometry.cpp | 14 ++-- src/kappa6C_geometry.cpp | 14 ++-- src/reflection.cpp | 2 +- src/source.c | 44 +++++++++++ src/svector.c | 31 +++++++- src/twoC_vertical_geometry.cpp | 20 +++-- src/twoC_vertical_pseudoaxeengine.cpp | 8 +- test/affinement_simplex_test.cpp | 2 +- test/geometry_eulerian4C_test.cpp | 3 +- test/geometry_eulerian6C_test.cpp | 7 +- test/geometry_kappa4C_test.cpp | 4 +- test/geometry_kappa6C_test.cpp | 4 +- test/geometry_twoC_test.cpp | 5 +- test/mode_eulerian4C_test.cpp | 2 +- test/mode_twoC_test.cpp | 6 +- test/pseudoaxe_eulerian6C_test.cpp | 6 +- test/pseudoaxe_kappa4C_test.cpp | 10 +- test/pseudoaxe_kappa6C_test.cpp | 8 +- test/pseudoaxe_twoC_test.cpp | 4 +- test/reflection_test.cpp | 3 +- test/reflection_test.h | 2 +- test/reflectionlist_test.cpp | 10 +- test/sample_test.cpp | 2 +- test/sample_test.h | 2 +- test/source_test.cpp | 90 ++++------------------ test/source_test.h | 23 +----- 39 files changed, 278 insertions(+), 361 deletions(-) commit ee4bcceeb75ec2fd5c77a2c8ce4bd6ee82f63b45 Author: Frédéric-Emmanuel PICCA Date: Tue Oct 2 13:09:14 2007 +0200 * add forgotten files include/hkl/smatrix.h | 46 +++++ include/hkl/svector.h | 70 +++++++ src/interval.c | 492 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 608 insertions(+), 0 deletions(-) commit 707e123fd2820f379950e5c2b305b45a0a0afe62 Author: Frédéric-Emmanuel PICCA Date: Tue Oct 2 11:56:35 2007 +0200 * rafactoring de interval C++ -> C (cleaner) include/hkl/config.h | 2 +- include/hkl/interval.h | 242 ++---------- include/hkl/kappa4C_vertical_geometry.h | 50 ++- src/SConscript | 2 +- src/eulerian6C_pseudoaxeengine.cpp | 75 ++-- src/interval.cpp | 639 ------------------------------ src/kappa4C_vertical_pseudoaxeengine.cpp | 14 +- src/twoC_vertical_pseudoaxeengine.cpp | 20 +- test/interval_test.cpp | 439 ++++++++------------- test/interval_test.h | 53 ++- 10 files changed, 331 insertions(+), 1205 deletions(-) commit 4b80bee8317c4ce53629f7e29e4b89ad09685653 Author: Frédéric-Emmanuel PICCA Date: Mon Oct 1 16:58:47 2007 +0200 * split svectmat.h in svector.h and smatrix.h try to have a nicer separation beetween svector and smatrix include/hkl/axe_rotation.h | 2 +- include/hkl/derived_mode.h | 2 +- include/hkl/eulerian4C_vertical_pseudoaxeengine.h | 25 +---- include/hkl/eulerian6C_pseudoaxeengine.h | 21 +---- include/hkl/geometry.h | 3 +- include/hkl/kappa4C_vertical_geometry.h | 48 ++--------- include/hkl/lattice.h | 6 +- include/hkl/mode.h | 4 +- include/hkl/quaternion.h | 7 ++- include/hkl/reflection.h | 2 +- include/hkl/sample.h | 14 +-- include/hkl/sample_monocrystal.h | 2 +- include/hkl/source.h | 2 +- include/hkl/svecmat.h | 99 --------------------- src/axe.cpp | 2 +- src/axe_rotation.cpp | 1 + src/eulerian4C_vertical_mode.cpp | 3 +- src/eulerian4C_vertical_pseudoaxeengine.cpp | 2 +- src/eulerian6C_pseudoaxeengine.cpp | 2 +- src/holder.cpp | 2 +- src/lattice.cpp | 2 + src/quaternion.c | 4 + src/reflection.cpp | 2 +- src/reflection_monocrystal.cpp | 4 +- src/reflectionlist.cpp | 2 +- src/sample.cpp | 2 +- src/sample_monocrystal.cpp | 1 + src/smatrix.c | 6 +- src/source.cpp | 1 + src/svector.c | 6 +- src/twoC_vertical_mode.cpp | 2 +- src/twoC_vertical_pseudoaxeengine.cpp | 2 +- test/affinement_simplex_test.cpp | 1 + test/axe_rotation_test.cpp | 3 + test/geometry_kappa6C_test.cpp | 1 + test/holder_test.cpp | 1 + test/lattice_test.cpp | 1 + test/pseudoaxe_eulerian4C_test.cpp | 4 +- test/pseudoaxe_eulerian6C_test.cpp | 4 +- test/pseudoaxe_twoC_test.cpp | 4 +- test/quaternion_test.cpp | 5 + test/reflection_test.cpp | 1 + test/sample_test.cpp | 1 + test/source_test.cpp | 1 + test/svecmat_test.cpp | 24 +++--- test/svecmat_test.h | 2 +- 46 files changed, 110 insertions(+), 226 deletions(-) commit f75f49bad64f0a73205d31160625a058c6c00bfa Author: Frédéric-Emmanuel PICCA Date: Mon Oct 1 16:20:06 2007 +0200 * remove all serialization code include/hkl/affinement.h | 17 +--- include/hkl/affinementlist.h | 17 +--- include/hkl/axe.h | 33 +------ include/hkl/axe_rotation.h | 16 +--- include/hkl/derived_pseudoaxeengine.h | 95 +------------------ include/hkl/diffractometer.h | 16 +--- include/hkl/eulerian4C_vertical_pseudoaxeengine.h | 16 --- include/hkl/eulerian6C_pseudoaxeengine.h | 32 ------ include/hkl/fitparameter.h | 14 --- include/hkl/fitparameterlist.h | 14 --- include/hkl/geometry.h | 16 +--- include/hkl/geometry_kappa.h | 16 +--- include/hkl/hklobject.h | 15 --- include/hkl/holder.h | 31 ------ include/hkl/interval.h | 14 --- include/hkl/kappa4C_vertical_pseudoaxeengine.h | 15 --- include/hkl/lattice.h | 16 --- include/hkl/modelist.h | 15 --- include/hkl/mymap.h | 63 ------------ include/hkl/object.h | 15 --- include/hkl/parameter.h | 14 --- include/hkl/parameterlist.h | 14 --- include/hkl/pseudoaxeengine.h | 48 --------- include/hkl/pseudoaxeenginelist.h | 15 --- include/hkl/range.h | 14 --- include/hkl/reflection.h | 15 --- include/hkl/reflectionlist.h | 15 --- include/hkl/sample.h | 15 --- include/hkl/sample_monocrystal.h | 15 --- include/hkl/samplelist.h | 15 --- include/hkl/twoC_vertical_pseudoaxeengine.h | 45 --------- include/hkl/value.h | 13 --- src/affinement.cpp | 34 ------- src/affinementlist.cpp | 38 ------- src/axe.cpp | 73 -------------- src/axe_rotation.cpp | 25 ----- src/diffractometer.cpp | 40 -------- src/eulerian4C_vertical_pseudoaxeengine.cpp | 27 ----- src/eulerian6C_pseudoaxeengine.cpp | 57 ----------- src/fitparameter.cpp | 31 ------ src/fitparameterlist.cpp | 35 ------- src/geometry.cpp | 26 ----- src/geometry_kappa.cpp | 26 ----- src/hklobject.cpp | 28 ------ src/holder.cpp | 108 --------------------- src/interval.cpp | 25 ----- src/kappa4C_vertical_pseudoaxeengine.cpp | 28 ------ src/lattice.cpp | 42 -------- src/modelist.cpp | 38 ------- src/object.cpp | 27 ----- src/parameter.cpp | 25 ----- src/parameterlist.cpp | 35 ------- src/pseudoaxeenginelist.cpp | 38 ------- src/range.cpp | 31 ------ src/reflection.cpp | 28 ------ src/reflectionlist.cpp | 46 --------- src/sample.cpp | 30 ------ src/sample_monocrystal.cpp | 32 ------ src/samplelist.cpp | 56 ----------- src/twoC_vertical_pseudoaxeengine.cpp | 82 ---------------- src/value.cpp | 24 ----- test/fitparameter_test.cpp | 29 ------ test/fitparameter_test.h | 2 - test/geometry_eulerian6C_test.cpp | 16 --- test/geometry_eulerian6C_test.h | 2 - test/geometry_kappa4C_test.cpp | 20 ---- test/geometry_kappa4C_test.h | 2 - test/geometry_kappa6C_test.cpp | 20 ---- test/geometry_kappa6C_test.h | 2 - test/geometry_test.cpp | 16 --- test/geometry_test.h | 2 - test/geometry_twoC_test.cpp | 16 --- test/geometry_twoC_test.h | 2 - test/hklobject_test.cpp | 19 ---- test/hklobject_test.h | 2 - test/holderlist_test.cpp | 2 - test/interval_test.cpp | 19 ---- test/interval_test.h | 2 - test/lattice_test.cpp | 18 ---- test/lattice_test.h | 2 - test/object_test.cpp | 18 ---- test/object_test.h | 2 - test/parameter_test.cpp | 18 ---- test/parameter_test.h | 2 - test/range_test.cpp | 19 ---- test/range_test.h | 2 - test/samplelist_test.cpp | 16 --- test/samplelist_test.h | 2 - test/value_test.cpp | 19 ---- test/value_test.h | 3 - 90 files changed, 9 insertions(+), 2144 deletions(-) commit 8cd30e8a7ff4c9ab59f3a10227946b0e9c17d6cf Author: Frédéric-Emmanuel PICCA Date: Mon Oct 1 15:42:54 2007 +0200 * pass all tests include/hkl/svecmat.h | 2 + src/eulerian4C_vertical_pseudoaxeengine.cpp | 54 ++-- src/eulerian6C_pseudoaxeengine.cpp | 7 +- src/quaternion.c | 68 ++++-- src/quaternion.cpp | 374 --------------------------- src/svector.c | 34 ++- test/SConscript | 10 +- test/diffractometer_eulerian4C_test.cpp | 169 ++++-------- test/diffractometer_eulerian4C_test.h | 2 - test/diffractometer_kappa4C_test.cpp | 65 +----- test/diffractometer_kappa4C_test.h | 2 - test/diffractometer_kappa6C_test.cpp | 75 +----- test/diffractometer_kappa6C_test.h | 2 - test/diffractometer_twoC_test.cpp | 107 ++------ test/diffractometer_twoC_test.h | 2 - test/pseudoaxe_eulerian4C_test.cpp | 182 ++++++-------- test/pseudoaxe_eulerian4C_test.h | 2 - test/pseudoaxe_eulerian6C_test.cpp | 263 +++++++++---------- test/pseudoaxe_eulerian6C_test.h | 2 - test/pseudoaxe_kappa4C_test.cpp | 370 ++++++++++++--------------- test/pseudoaxe_kappa4C_test.h | 2 - test/pseudoaxe_kappa6C_test.cpp | 303 ++++++++++------------ test/pseudoaxe_kappa6C_test.h | 2 - test/pseudoaxe_twoC_test.cpp | 149 +++++------ test/pseudoaxe_twoC_test.h | 2 - test/quaternion_test.cpp | 71 ++++-- test/svecmat_test.cpp | 11 + test/svecmat_test.h | 2 + 28 files changed, 827 insertions(+), 1507 deletions(-) commit f44523ed65c1da302a03ef7aef99d658051e8cba Author: Frédéric-Emmanuel PICCA Date: Fri Sep 28 15:56:53 2007 +0200 * the kappa6c modes are ok test/SConscript | 2 +- test/mode_kappa6C_test.cpp | 307 +++++++++++++++++++++----------------------- test/mode_kappa6C_test.h | 2 - 3 files changed, 145 insertions(+), 166 deletions(-) commit 0d1433eb9feb572fce8c2afc428f2d52f3daae33 Author: Frédéric-Emmanuel PICCA Date: Fri Sep 28 15:52:13 2007 +0200 * the kappa4c modes are ok test/SConscript | 2 +- test/mode_kappa4C_test.cpp | 270 ++++++++++++++++++++----------------------- test/mode_kappa4C_test.h | 2 - 3 files changed, 127 insertions(+), 147 deletions(-) commit f124d703565098a33f8a459e17b902179da6ec5d Author: Frédéric-Emmanuel PICCA Date: Fri Sep 28 15:44:04 2007 +0200 * eulerian4C vertical mode are ok include/hkl/svecmat.h | 2 + src/svector.c | 8 ++ test/SConscript | 2 +- test/mode_eulerian4C_test.cpp | 265 +++++++++++++++++++---------------------- test/mode_eulerian4C_test.h | 2 - 5 files changed, 134 insertions(+), 145 deletions(-) commit 95a43361e65cf9bb0f1f47cd064d525be273856c Author: Frédéric-Emmanuel PICCA Date: Fri Sep 28 14:40:45 2007 +0200 * twoC modes are ok include/hkl/config.h | 7 ++- test/SConscript | 2 +- test/mode_twoC_test.cpp | 124 ++++++++++++++++++++++------------------------- test/mode_twoC_test.h | 2 - 4 files changed, 63 insertions(+), 72 deletions(-) commit aca10eff44c0c1a97d3c08d79625e22589efb4c1 Author: Frédéric-Emmanuel PICCA Date: Fri Sep 28 13:58:19 2007 +0200 * the affinement Tests are ok test/SConscript | 4 +- test/affinement_simplex_test.cpp | 141 ++++++++++++++++++-------------------- test/affinement_simplex_test.h | 2 - 3 files changed, 70 insertions(+), 77 deletions(-) commit 2dfb17954d44eedf08f16157d49bbcfda39fd0a4 Author: Frédéric-Emmanuel PICCA Date: Fri Sep 28 13:51:40 2007 +0200 * the SampleTest are ok src/sample_monocrystal.cpp | 4 +- test/SConscript | 2 +- test/sample_test.cpp | 150 ++++++++++++++++---------------------------- test/sample_test.h | 2 - 4 files changed, 59 insertions(+), 99 deletions(-) commit bd0857f8a63f9654725d08396d187308e2565539 Author: Frédéric-Emmanuel PICCA Date: Fri Sep 28 13:32:27 2007 +0200 * the ReflectionList test are ok. src/reflectionfactory.cpp | 4 ++- src/reflectionlist.cpp | 2 +- test/SConscript | 2 +- test/reflectionlist_test.cpp | 50 +++++++++++++++++++++--------------------- test/reflectionlist_test.h | 2 - 5 files changed, 30 insertions(+), 30 deletions(-) commit 98d8c0bb11c2902f00a9e4a28769287eff01d4ec Author: Frédéric-Emmanuel PICCA Date: Fri Sep 28 13:18:32 2007 +0200 * the reflection tests passed src/eulerian4C_vertical_pseudoaxeengine.cpp | 7 ++- src/svector.c | 10 +-- test/SConscript | 2 +- test/reflection_test.cpp | 92 +++++++++++++-------------- test/reflection_test.h | 2 - 5 files changed, 54 insertions(+), 59 deletions(-) commit 7ec138a22b19ca89f26db7c7e0c78038e545d677 Author: Frédéric-Emmanuel PICCA Date: Fri Sep 28 11:32:28 2007 +0200 * now geometry kappa6c is ok test/SConscript | 2 +- test/geometry_kappa6C_test.cpp | 249 ++++++++++++++++++++++------------------ test/geometry_kappa6C_test.h | 4 +- 3 files changed, 140 insertions(+), 115 deletions(-) commit b05db879601d4312733a5f443c34417fdda141b3 Author: Frédéric-Emmanuel PICCA Date: Fri Sep 28 11:15:29 2007 +0200 * now kappa4C geometry is ok test/SConscript | 2 +- test/geometry_kappa4C_test.cpp | 297 ++++++++++++++++++++++------------------ test/geometry_kappa4C_test.h | 4 +- 3 files changed, 164 insertions(+), 139 deletions(-) commit 4c7ae82a6a6973c16d15dfd58171ebe28bed6a71 Author: Frédéric-Emmanuel PICCA Date: Fri Sep 28 11:00:14 2007 +0200 * eulerian6C geometry is ok test/SConscript | 2 +- test/geometry_eulerian6C_test.cpp | 281 +++++++++++++++++++++---------------- 2 files changed, 161 insertions(+), 122 deletions(-) commit 6a2adb9853e8fa7132b5b38c9c8f1af4c07ea5df Author: Frédéric-Emmanuel PICCA Date: Fri Sep 28 10:43:00 2007 +0200 eulerian4C vertical geometry is ok + remove of constant.h include/hkl/config.h | 3 + include/hkl/constant.h | 43 ------ include/hkl/kappa4C_vertical_geometry.h | 65 +++++----- include/hkl/svecmat.h | 36 ----- include/hkl/value.h | 6 +- src/SConscript | 1 - src/affinement.cpp | 8 +- src/affinement_simplex.cpp | 7 +- src/axe.cpp | 2 +- src/axe_rotation.cpp | 8 +- src/axefactory.cpp | 2 +- src/constant.cpp | 22 --- src/convenience.cpp | 17 +-- src/eulerian4C_vertical_mode.cpp | 8 +- src/eulerian4C_vertical_pseudoaxeengine.cpp | 18 ++-- src/eulerian6C_pseudoaxeengine.cpp | 26 ++-- src/holder.cpp | 2 +- src/lattice.cpp | 36 +++--- src/reflection.cpp | 2 +- src/sample.cpp | 6 +- src/sample_monocrystal.cpp | 6 +- src/source.cpp | 2 +- src/twoC_vertical_pseudoaxeengine.cpp | 24 ++-- src/value.cpp | 19 ++-- test/SConscript | 2 +- test/axe_rotation_test.cpp | 13 +- test/geometry_eulerian4C_test.cpp | 190 ++++++++++++++------------- test/geometry_eulerian4C_test.h | 2 - test/geometry_twoC_test.cpp | 54 ++++---- test/holder_test.cpp | 2 +- test/interval_test.cpp | 31 +++-- test/lattice_test.cpp | 84 ++++++------ test/value_test.cpp | 5 +- 33 files changed, 327 insertions(+), 425 deletions(-) commit 9f1f67a314b9d37d8c904b21cd6af4db2b27d6e0 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 27 19:23:12 2007 +0200 Documentation is the directory of the documentation start to write the user-guide using asciidoc Documentation/Doxyfile | 1342 ++ Documentation/Maxima/E4C_bissector.max | 12 + Documentation/Maxima/E4C_constant_chi.max | 12 + Documentation/Maxima/E4C_constant_chi_phi.max | 12 + Documentation/Maxima/E4C_constant_omega.max | 12 + Documentation/Maxima/E4C_delta_omega.max | 12 + Documentation/SConscript | 2 + Documentation/example/SConscript | 15 + Documentation/example/plot.gnuplot | 85 + Documentation/example/psi.cpp | 50 + Documentation/hkl.lyx | 3402 ++++ Documentation/uml/hkl.dia |22193 ++++++++++++++++++++++++ Documentation/uml/next_hkl.dia |22726 +++++++++++++++++++++++++ Documentation/user-guide.txt | 79 + doc/Doxyfile | 1342 -- doc/Maxima/E4C_bissector.max | 12 - doc/Maxima/E4C_constant_chi.max | 12 - doc/Maxima/E4C_constant_chi_phi.max | 12 - doc/Maxima/E4C_constant_omega.max | 12 - doc/Maxima/E4C_delta_omega.max | 12 - doc/SConscript | 2 - doc/example/SConscript | 15 - doc/example/plot.gnuplot | 85 - doc/example/psi.cpp | 50 - doc/hkl.lyx | 3402 ---- doc/uml/hkl.dia |22193 ------------------------ doc/uml/next_hkl.dia |22726 ------------------------- 27 files changed, 49954 insertions(+), 49875 deletions(-) commit 8ada71a3c00d92199ac4a30b29bd5fa04e60f11e Author: Frédéric-Emmanuel PICCA Date: Thu Sep 27 19:01:52 2007 +0200 * now the twoC geometry pass the tests. include/hkl/source.h | 17 +------- src/geometry.cpp | 8 +++- src/lattice.cpp | 40 +++++++---------- src/source.cpp | 27 +---------- src/svector.c | 4 +- test/SConscript | 8 ++-- test/geometry_twoC_test.cpp | 100 ++++++++++++++++++++++--------------------- test/lattice_test.cpp | 4 +- test/source_test.cpp | 34 ++------------- test/source_test.h | 2 - 10 files changed, 90 insertions(+), 154 deletions(-) commit 27e1d0e96570392dd7e7974fea06d139f1628cc8 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 20 18:38:33 2007 +0200 * now more unit test are working with the C files include/hkl/config.h | 4 + include/hkl/derived_mode.h | 6 +- include/hkl/eulerian4C_vertical_mode.h | 10 +- include/hkl/eulerian4C_vertical_pseudoaxeengine.h | 8 +- include/hkl/eulerian6C_pseudoaxeengine.h | 4 +- include/hkl/mode.h | 33 +++-- include/hkl/svecmat.h | 45 ++++++- include/hkl/twoC_vertical_mode.h | 4 +- src/eulerian4C_vertical_geometry.cpp | 28 +++-- src/eulerian4C_vertical_mode.cpp | 72 +++++----- src/eulerian4C_vertical_pseudoaxeengine.cpp | 103 ++++++++------- src/eulerian6C_geometry.cpp | 36 +++-- src/eulerian6C_pseudoaxeengine.cpp | 46 +++++-- src/kappa4C_vertical_geometry.cpp | 28 +++-- src/kappa6C_geometry.cpp | 38 ++++-- src/sample_monocrystal.cpp | 73 +++++++++-- src/smatrix.c | 23 ++-- src/svector.c | 62 +++++---- src/twoC_vertical_geometry.cpp | 18 ++- src/twoC_vertical_mode.cpp | 14 +- test/SConscript | 9 +- test/axe_rotation_test.cpp | 149 ++++++++++----------- test/axe_rotation_test.h | 2 - test/geometry_twoC_test.cpp | 74 ++++++++--- test/holder_test.cpp | 62 ++++----- test/holder_test.h | 2 - test/holderlist_test.cpp | 30 +---- test/holderlist_test.h | 2 - test/lattice_test.cpp | 45 +++--- test/source_test.cpp | 55 +++++--- test/source_test.h | 2 +- 31 files changed, 635 insertions(+), 452 deletions(-) commit 33df56287ffe4361713204f94e83141b1000c3b5 Author: Frédéric-Emmanuel PICCA Date: Thu Sep 20 13:59:10 2007 +0200 * add the c files svector.c smatrix.c quaternion.c include/hkl/config.h | 26 +++++++ include/hkl/svecmat.h | 88 ++++++++++++++++++++++ src/geometry.cpp | 8 +- src/lattice.cpp | 4 +- src/quaternion.c | 131 +++++++++++++++++++++++++++++++++ src/smatrix.c | 179 +++++++++++++++++++++++++++++++++++++++++++++ src/source.cpp | 4 +- src/svector.c | 195 +++++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 627 insertions(+), 8 deletions(-) commit dfa4716bb49ec441ee3647166330ad56b7156982 Author: Frédéric-Emmanuel PICCA Date: Fri Sep 14 18:54:38 2007 +0200 * working on the C version SConstruct | 13 +- config-win32.py | 1 + include/hkl/axe.h | 11 +- include/hkl/axe_rotation.h | 33 +- include/hkl/geometry.h | 24 +- include/hkl/holder.h | 16 +- include/hkl/lattice.h | 8 +- include/hkl/pseudoaxe.h | 1 + include/hkl/quaternion.h | 264 ++++------------ include/hkl/reflection.h | 24 +- include/hkl/reflection_monocrystal.h | 2 +- include/hkl/reflectionlist.h | 2 +- include/hkl/sample.h | 4 +- include/hkl/sample_monocrystal.h | 12 +- include/hkl/source.h | 34 +- include/hkl/svector.h | 188 ----------- src/SConscript | 5 +- src/axe_rotation.cpp | 56 ++-- src/axefactory.cpp | 4 +- src/geometry.cpp | 202 ++++++------- src/holder.cpp | 8 +- src/lattice.cpp | 155 ++++++--- src/reflection.cpp | 30 +-- src/reflection_monocrystal.cpp | 12 +- src/reflectionfactory.cpp | 7 +- src/reflectionlist.cpp | 4 +- src/sample_monocrystal.cpp | 27 +- src/source.cpp | 108 ++++---- src/svector.cpp | 584 ---------------------------------- test/SConscript | 8 +- test/quaternion_test.cpp | 214 +++---------- test/quaternion_test.h | 59 +--- test/svecmat_test.cpp | 351 +++++++-------------- test/svecmat_test.h | 96 ++---- 34 files changed, 695 insertions(+), 1872 deletions(-) commit 583660448352c5f4890c94844b5e6b68954f8583 Merge: 008cf44 8e803aa Author: Frédéric-Emmanuel PICCA Date: Wed Sep 12 10:32:07 2007 +0200 Merge branch 'bouml' Conflicts: include/hkl/portability.h test/SConscript commit 8e803aaf1fd1bb8499b0c4c329da467f6c8418be Author: Frédéric-Emmanuel PICCA Date: Wed Sep 12 10:18:28 2007 +0200 * end of the bouml branch. now it compiles on both linux and win32. bouml/hkl/2.session | 2 +- bouml/hkl/hkl.prj | 11 +- include/hkl/HKLException.h | 70 +- include/hkl/HolderList.h | 27 +- include/hkl/affinement.h | 129 ++-- include/hkl/affinement_simplex.h | 46 +- include/hkl/affinementlist.h | 283 +++--- include/hkl/axe.h | 495 +++++----- include/hkl/axe_rotation.h | 260 +++--- include/hkl/axefactory.h | 33 +- include/hkl/constant.h | 42 +- include/hkl/derived_mode.h | 125 ++-- include/hkl/derived_pseudoaxeengine.h | 952 ++++++++++---------- include/hkl/diffractometer.h | 629 +++++++------- include/hkl/diffractometerfactory.h | 66 +- include/hkl/eulerian4C_vertical_diffractometer.h | 24 +- include/hkl/eulerian4C_vertical_geometry.h | 328 ++++--- include/hkl/eulerian4C_vertical_mode.h | 194 +++-- include/hkl/eulerian4C_vertical_pseudoaxeengine.h | 320 ++++--- include/hkl/eulerian6C_diffractometer.h | 93 +- include/hkl/eulerian6C_geometry.h | 390 +++++---- include/hkl/eulerian6C_mode.h | 23 +- include/hkl/eulerian6C_pseudoaxeengine.h | 507 ++++++----- include/hkl/fitparameter.h | 210 +++-- include/hkl/fitparameterlist.h | 253 +++--- include/hkl/geometry.h | 465 +++++----- include/hkl/geometry_kappa.h | 71 +- include/hkl/hklobject.h | 80 +- include/hkl/holder.h | 552 ++++++------ include/hkl/interval.h | 410 ++++---- include/hkl/kappa4C_vertical_diffractometer.h | 204 ++-- include/hkl/kappa4C_vertical_geometry.h | 553 ++++++----- include/hkl/kappa4C_vertical_mode.h | 28 +- include/hkl/kappa4C_vertical_pseudoaxeengine.h | 281 +++--- include/hkl/kappa6C_diffractometer.h | 19 +- include/hkl/kappa6C_geometry.h | 394 +++++---- include/hkl/kappa6C_mode.h | 23 +- include/hkl/kappa6C_pseudoaxeengine.h | 21 +- include/hkl/lattice.h | 430 +++++----- include/hkl/mode.h | 343 ++++---- include/hkl/modelist.h | 283 +++--- include/hkl/mymap.h | 528 ++++++------ include/hkl/mystring.h | 54 -- include/hkl/object.h | 307 +++--- include/hkl/observer.h | 85 +- include/hkl/parameter.h | 83 +- include/hkl/parameterlist.h | 181 ++-- include/hkl/portability.h | 22 +- include/hkl/pseudoaxe.h | 265 +++--- include/hkl/pseudoaxeengine.h | 715 +++++++------- include/hkl/pseudoaxeenginelist.h | 77 +- include/hkl/pseudoaxelist.h | 75 +- include/hkl/quaternion.h | 368 ++++---- include/hkl/range.h | 340 ++++---- include/hkl/reflection.h | 325 ++++---- include/hkl/reflection_monocrystal.h | 87 +- include/hkl/reflectionfactory.h | 52 +- include/hkl/reflectionlist.h | 282 +++--- include/hkl/sample.h | 221 +++--- include/hkl/sample_monocrystal.h | 241 +++--- include/hkl/samplefactory.h | 50 +- include/hkl/samplelist.h | 333 ++++---- include/hkl/source.h | 222 +++--- include/hkl/strbuf.h | 19 + include/hkl/svector.h | 187 ++-- include/hkl/twoC_vertical_diffractometer.h | 94 ++- include/hkl/twoC_vertical_geometry.h | 260 +++--- include/hkl/twoC_vertical_mode.h | 86 +- include/hkl/twoC_vertical_pseudoaxeengine.h | 262 +++--- include/hkl/value.h | 136 ++-- src/HKLException.cpp | 259 +++--- src/SConscript | 2 +- src/affinement.cpp | 159 ++-- src/affinement_simplex.cpp | 134 ++-- src/affinementlist.cpp | 491 +++++------ src/axe.cpp | 667 +++++++------- src/axe_rotation.cpp | 346 ++++---- src/axefactory.cpp | 49 +- src/constant.cpp | 19 +- src/diffractometer.cpp | 123 ++-- src/diffractometerfactory.cpp | 99 +- src/eulerian4C_vertical_diffractometer.cpp | 83 +- src/eulerian4C_vertical_geometry.cpp | 661 +++++++------- src/eulerian4C_vertical_mode.cpp | 564 ++++++------ src/eulerian4C_vertical_pseudoaxeengine.cpp | 532 ++++++------ src/eulerian6C_diffractometer.cpp | 28 +- src/eulerian6C_geometry.cpp | 760 +++++++-------- src/eulerian6C_pseudoaxeengine.cpp | 797 ++++++++--------- src/fitparameter.cpp | 285 +++--- src/fitparameterlist.cpp | 267 +++--- src/geometry.cpp | 715 +++++++-------- src/geometry_kappa.cpp | 110 +-- src/hklobject.cpp | 123 ++-- src/holder.cpp | 606 ++++++------- src/interval.cpp | 663 +++++++------- src/kappa4C_vertical_diffractometer.cpp | 85 +- src/kappa4C_vertical_geometry.cpp | 663 +++++++------- src/kappa4C_vertical_pseudoaxeengine.cpp | 306 +++---- src/kappa6C_diffractometer.cpp | 62 +- src/kappa6C_geometry.cpp | 626 ++++++------- src/lattice.cpp | 1033 ++++++++++----------- src/mode.cpp | 31 +- src/modelist.cpp | 495 +++++------ src/mystring.cpp | 87 -- src/object.cpp | 423 ++++----- src/observer.cpp | 153 ++-- src/parameter.cpp | 109 +-- src/parameterlist.cpp | 289 +++---- src/pseudoaxe.cpp | 379 ++++---- src/pseudoaxeengine.cpp | 59 +- src/pseudoaxeenginelist.cpp | 165 ++-- src/pseudoaxelist.cpp | 161 ++-- src/quaternion.cpp | 661 ++++++------- src/range.cpp | 363 ++++---- src/reflection.cpp | 267 +++--- src/reflection_monocrystal.cpp | 102 +-- src/reflectionfactory.cpp | 71 +- src/reflectionlist.cpp | 545 +++++------ src/sample.cpp | 237 +++--- src/sample_monocrystal.cpp | 324 +++---- src/samplefactory.cpp | 79 +- src/samplelist.cpp | 646 ++++++------- src/source.cpp | 335 ++++---- src/strbuf.cpp | 27 + src/svector.cpp | 963 +++++++++----------- src/twoC_vertical_diffractometer.cpp | 73 +- src/twoC_vertical_geometry.cpp | 535 +++++------ src/twoC_vertical_mode.cpp | 146 ++-- src/twoC_vertical_pseudoaxeengine.cpp | 758 +++++++-------- src/value.cpp | 312 +++---- test/SConscript | 1 - test/geometry_eulerian6C_test.cpp | 97 +- test/geometry_kappa4C_test.cpp | 38 +- test/interval_test.cpp | 2 +- test/mystring_test.cpp | 27 - test/mystring_test.h | 24 - test/pseudoaxe_kappa4C_test.cpp | 18 +- test/pseudoaxe_kappa6C_test.cpp | 16 +- 138 files changed, 17577 insertions(+), 18384 deletions(-) commit 2a965af9b7b06452ae4c87f51aa79936590fef4a Author: Frédéric-Emmanuel PICCA Date: Tue Sep 11 10:20:04 2007 +0200 * compile and all test pass on linux bouml/hkl/128258.diagram | 10 +- bouml/hkl/128642.diagram | 34 ++- bouml/hkl/132482 | 34 ++- bouml/hkl/133122 | 6 +- bouml/hkl/133378 | 154 ++++----- bouml/hkl/136834.bodies | 41 +++- bouml/hkl/136962.bodies | 76 ++--- bouml/hkl/hkl.prj | 2 +- include/hkl/eulerian6C_pseudoaxeengine.h | 38 ++- include/hkl/kappa4C_vertical_geometry.h | 2 +- include/hkl/twoC_vertical_pseudoaxeengine.h | 1 + src/SConscript | 6 +- src/eulerian6C_pseudoaxeengine.cpp | 349 ++++++++------------ src/holder.cpp | 2 +- src/twoC_vertical_pseudoaxeengine.cpp | 14 +- test/SConscript | 10 +- test/axe_rotation_test.cpp | 6 +- test/diffractometer_eulerian4C_test.cpp | 10 +- test/diffractometer_kappa4C_test.cpp | 28 +- test/diffractometer_kappa6C_test.cpp | 28 +- test/diffractometer_test.cpp | 3 +- test/diffractometer_twoC_test.cpp | 4 +- test/fitparameter_test.cpp | 6 +- test/geometry_eulerian4C_test.cpp | 6 +- test/geometry_eulerian6C_test.cpp | 6 +- test/geometry_kappa4C_test.cpp | 22 +- test/geometry_kappa6C_test.cpp | 6 +- test/geometry_twoC_test.cpp | 6 +- test/hklobject_test.cpp | 6 +- test/holder_test.cpp | 2 +- test/interval_test.cpp | 3 +- test/lattice_test.cpp | 6 +- test/mode_eulerian4C_test.cpp | 12 +- test/mode_kappa4C_test.cpp | 26 +- test/mode_kappa4C_test.h | 10 +- test/mode_kappa6C_test.cpp | 27 +- test/mystring_test.cpp | 6 +- test/object_test.cpp | 3 +- test/parameter_test.cpp | 6 +- test/pseudoaxe_eulerian4C_test.cpp | 36 +- test/pseudoaxe_eulerian6C_test.cpp | 326 +++++++------------ test/pseudoaxe_kappa4C_test.cpp | 40 +-- test/pseudoaxe_kappa6C_test.cpp | 475 +++++++++----------------- test/quaternion_test.cpp | 6 +- test/range_test.cpp | 3 +- test/sample_test.cpp | 24 +- test/source_test.cpp | 3 +- test/svecmat_test.cpp | 6 +- test/value_test.cpp | 3 +- 49 files changed, 819 insertions(+), 1120 deletions(-) commit ff95a17d5498b7475e0eda8700d787d98e07586f Author: Frédéric-Emmanuel PICCA Date: Wed Sep 5 17:16:04 2007 +0200 * add the Interval class and his test methods bouml/hkl/128060.bodies | 3 + bouml/hkl/128188.diagram | 24 +- bouml/hkl/129794.bodies | 343 ------------- bouml/hkl/130306.diagram | 44 +- bouml/hkl/132994 | 3 +- bouml/hkl/133122 | 85 +--- bouml/hkl/136706.bodies | 51 +- bouml/hkl/153474.bodies | 475 ++++++++++++++++++ bouml/hkl/2.session | 11 +- bouml/hkl/hkl.prj | 805 +++++++++++++++++++++--------- include/hkl/interval.h | 224 +++++++++ include/hkl/kappa4C_vertical_geometry.h | 65 +-- include/hkl/range.h | 125 ----- src/SConscript | 1 + src/interval.cpp | 705 ++++++++++++++++++++++++++ src/kappa4C_vertical_pseudoaxeengine.cpp | 51 +- src/range.cpp | 467 ----------------- src/value.cpp | 3 + test/SConscript | 9 +- test/geometry_kappa4C_test.cpp | 11 +- test/interval_test.cpp | 423 ++++++++++++++++ test/interval_test.h | 44 ++ test/pseudoaxe_kappa4C_test.cpp | 56 +- test/range_test.cpp | 347 ------------- test/range_test.h | 14 - 25 files changed, 2611 insertions(+), 1778 deletions(-) commit fe0cfa4c3f1c0b6d2ec642502713e32c88c872bb Author: Frédéric-Emmanuel PICCA Date: Fri Aug 31 18:01:38 2007 +0200 * add the Range computation and trigonometric methods. do not pass all tests. bouml/hkl/128188.diagram | 68 +- bouml/hkl/128770 | 14 +- bouml/hkl/129794.bodies | 291 +++++++ bouml/hkl/130050.bodies | 18 +- bouml/hkl/131458.diagram | 2 +- bouml/hkl/131842 | 14 +- bouml/hkl/131842.bodies | 8 +- bouml/hkl/132610.bodies | 8 +- bouml/hkl/132866.bodies | 8 +- bouml/hkl/132994 | 95 +-- bouml/hkl/132994.bodies | 8 +- bouml/hkl/133122 | 313 +++++++- bouml/hkl/133250 | 26 +- bouml/hkl/133634 | 28 +- bouml/hkl/134146 | 16 +- bouml/hkl/136706.bodies | 94 +-- bouml/hkl/145026.bodies | 8 +- bouml/hkl/2.session | 11 +- bouml/hkl/generation_settings | 34 +- bouml/hkl/hkl.prj | 587 +++++++------- doc/Doxyfile | 1089 +++++++++++++++++++++++- include/hkl/constant.h | 79 +-- include/hkl/derived_pseudoaxeengine.h | 8 +- include/hkl/kappa4C_vertical_diffractometer.h | 90 ++ include/hkl/kappa4C_vertical_geometry.h | 161 ++++ include/hkl/kappa4C_vertical_pseudoaxeengine.h | 15 - include/hkl/pseudoaxeengine.h | 2 +- include/hkl/range.h | 206 ++--- src/SConscript | 4 +- src/axe_rotation.cpp | 18 +- src/constant.cpp | 2 + src/eulerian4C_vertical_geometry.cpp | 8 +- src/eulerian6C_geometry.cpp | 8 +- src/kappa4C_vertical_geometry.cpp | 8 +- src/kappa4C_vertical_pseudoaxeengine.cpp | 101 +-- src/kappa6C_geometry.cpp | 8 +- src/pseudoaxeengine.cpp | 2 +- src/range.cpp | 390 +++++++++- test/SConscript | 10 +- test/mode_kappa4C_test.cpp | 8 +- test/mode_kappa4C_test.h | 10 +- test/pseudoaxe_kappa4C_test.cpp | 446 ++++------ test/range_test.cpp | 347 ++++++++ test/range_test.h | 14 + 44 files changed, 3504 insertions(+), 1181 deletions(-) commit 613c3d1a7bee5ba89fbb71fb78d1c7c92431d50b Author: Frédéric-Emmanuel PICCA Date: Tue Aug 28 15:28:49 2007 +0200 * now the Eulerian4C::Vertical pseudoAxes are OK. bouml/hkl/128770 | 28 +-- bouml/hkl/131202.bodies | 2 +- bouml/hkl/131970 | 72 ++--- bouml/hkl/132482 | 2 +- bouml/hkl/134786.bodies | 15 +- bouml/hkl/135042.bodies | 2 +- bouml/hkl/135170.bodies | 10 +- bouml/hkl/136194.bodies | 25 +- bouml/hkl/136322.bodies | 23 +- bouml/hkl/136450.bodies | 1 - bouml/hkl/136578.bodies | 316 ++++++--------- bouml/hkl/137090.bodies | 2 - bouml/hkl/145026.bodies | 2 - bouml/hkl/2.session | 3 +- bouml/hkl/hkl.prj | 2 +- include/hkl/derived_pseudoaxeengine.h | 20 - include/hkl/eulerian4C_vertical_pseudoaxeengine.h | 21 +- include/hkl/pseudoaxeengine.h | 10 +- src/SConscript | 5 +- src/eulerian4C_vertical_pseudoaxeengine.cpp | 339 +++++++---------- src/hklobject.cpp | 2 +- src/pseudoaxe.cpp | 15 +- src/pseudoaxelist.cpp | 2 +- src/twoC_vertical_pseudoaxeengine.cpp | 51 +-- test/SConscript | 2 +- test/pseudoaxe_eulerian4C_test.cpp | 425 ++++++--------------- 26 files changed, 491 insertions(+), 906 deletions(-) commit 0b0ca9a49df717ae85cee6652bff9b8ea7b44b2f Author: Frédéric-Emmanuel PICCA Date: Tue Aug 28 10:16:48 2007 +0200 * the twoC vertical pseudoAxes are working. bouml/hkl/131458.diagram | 4 +- bouml/hkl/132482 | 34 ++- bouml/hkl/134786.bodies | 50 +++-- bouml/hkl/134914.bodies | 5 +- bouml/hkl/135042.bodies | 8 - bouml/hkl/136194.bodies | 81 +++--- bouml/hkl/136322.bodies | 74 +++--- bouml/hkl/136450.bodies | 45 ++-- bouml/hkl/2.session | 8 +- bouml/hkl/hkl.prj | 72 ++---- include/hkl/pseudoaxe.h | 12 +- include/hkl/pseudoaxeengine.h | 3 +- include/hkl/pseudoaxelist.h | 2 - include/hkl/twoC_vertical_pseudoaxeengine.h | 8 +- src/axe.cpp | 3 +- src/pseudoaxe.cpp | 57 +++-- src/pseudoaxeengine.cpp | 6 +- src/pseudoaxelist.cpp | 13 - src/twoC_vertical_pseudoaxeengine.cpp | 220 +++++++-------- test/SConscript | 3 +- test/affinement_simplex_test.cpp | 2 +- test/axe_rotation_test.cpp | 30 +- test/diffractometer_eulerian4C_test.cpp | 196 +++++++------- test/diffractometer_kappa4C_test.cpp | 4 +- test/diffractometer_kappa6C_test.cpp | 12 +- test/diffractometer_test.cpp | 40 ++-- test/diffractometer_twoC_test.cpp | 164 ++++++------ test/geometry_eulerian4C_test.cpp | 124 +++++----- test/geometry_eulerian6C_test.cpp | 70 +++--- test/geometry_kappa4C_test.cpp | 390 +++++++++++++------------- test/geometry_kappa6C_test.cpp | 302 +++++++++++----------- test/geometry_test.cpp | 8 +- test/geometry_twoC_test.cpp | 48 ++-- test/holderlist_test.cpp | 14 +- test/lattice_test.cpp | 2 +- test/mode_eulerian4C_test.cpp | 24 +- test/mode_kappa4C_test.cpp | 20 +- test/mode_kappa6C_test.cpp | 20 +- test/mode_twoC_test.cpp | 176 ++++++------ test/pseudoaxe_eulerian4C_test.cpp | 28 +- test/pseudoaxe_eulerian6C_test.cpp | 12 +- test/pseudoaxe_kappa4C_test.cpp | 22 +- test/pseudoaxe_kappa6C_test.cpp | 18 +- test/pseudoaxe_twoC_test.cpp | 265 ++++++++----------- test/reflectionlist_test.cpp | 22 +- test/sample_test.cpp | 284 ++++++++++---------- 46 files changed, 1457 insertions(+), 1548 deletions(-) commit ba51e6c59239bf0d5d520c5664a2ae3bf5b3f26b Author: Frédéric-Emmanuel PICCA Date: Mon Aug 27 15:20:59 2007 +0200 * now all mode Test pass. Remove a bug in the eulerian4C -> kappa6C Geometry conversion. Add the compute_HKL_consign to the Geometry class. bouml/hkl/129154.bodies | 16 ++-- bouml/hkl/131714.bodies | 38 ++++++++- bouml/hkl/132098 | 2 +- bouml/hkl/132610 | 2 +- bouml/hkl/132994.bodies | 6 +- bouml/hkl/133634 | 2 +- bouml/hkl/139522.bodies | 12 ++-- bouml/hkl/139650.bodies | 12 ++-- bouml/hkl/139778.bodies | 12 ++-- bouml/hkl/139906.bodies | 12 ++-- bouml/hkl/140034.bodies | 12 ++-- bouml/hkl/140162.bodies | 8 +- bouml/hkl/140290.bodies | 6 +- bouml/hkl/2.session | 5 +- bouml/hkl/hkl.prj | 50 +++++++++--- include/hkl/geometry.h | 11 ++- src/eulerian4C_vertical_mode.cpp | 60 +++++++------- src/geometry.cpp | 50 ++++++++++- src/kappa6C_geometry.cpp | 6 +- src/mystring.cpp | 4 + src/object.cpp | 16 ++-- src/twoC_vertical_mode.cpp | 14 ++-- test/SConscript | 7 +- test/geometry_twoC_test.cpp | 11 ++- test/geometry_twoC_test.h | 4 +- test/mode_eulerian4C_test.cpp | 102 +++++++++++----------- test/mode_kappa4C_test.cpp | 114 ++++++++++++------------ test/mode_kappa6C_test.cpp | 158 +++++++++++++++++----------------- test/mode_twoC_test.cpp | 176 +++++++++++++++++++------------------- 29 files changed, 527 insertions(+), 401 deletions(-) commit 16f9e073698e8fe0e2003974c8f21c16890d8972 Author: Frédéric-Emmanuel PICCA Date: Mon Aug 27 11:51:52 2007 +0200 * added all Geometries test method for the consign. Now need to do the same for the modes. bouml/hkl/128514 | 2 +- bouml/hkl/131714.bodies | 90 +------ bouml/hkl/131842 | 44 +++- bouml/hkl/131842.bodies | 18 +- bouml/hkl/132354 | 36 ++- bouml/hkl/132482.bodies | 48 ++-- bouml/hkl/132610.bodies | 18 +- bouml/hkl/132866.bodies | 36 ++-- bouml/hkl/132994.bodies | 24 +- bouml/hkl/133122 | 44 +++- bouml/hkl/133250 | 31 +++- bouml/hkl/133634 | 52 +++- bouml/hkl/133890.bodies | 4 +- bouml/hkl/134146 | 2 +- bouml/hkl/145282.bodies | 2 +- bouml/hkl/148482.bodies | 2 +- bouml/hkl/2.session | 5 +- bouml/hkl/hkl.prj | 91 ++------ include/hkl/eulerian4C_vertical_geometry.h | 13 +- include/hkl/eulerian6C_geometry.h | 13 +- include/hkl/geometry.h | 34 +-- include/hkl/kappa4C_vertical_geometry.h | 19 +- include/hkl/kappa6C_geometry.h | 21 ++- include/hkl/twoC_vertical_geometry.h | 11 +- src/axe.cpp | 2 +- src/eulerian4C_vertical_geometry.cpp | 36 ++- src/eulerian6C_geometry.cpp | 54 +++-- src/geometry.cpp | 139 ++--------- src/holder.cpp | 2 +- src/kappa4C_vertical_geometry.cpp | 42 ++-- src/kappa6C_geometry.cpp | 48 +++-- src/reflection_monocrystal.cpp | 4 +- src/twoC_vertical_geometry.cpp | 64 +++-- test/SConscript | 8 +- test/geometry_eulerian4C_test.cpp | 142 +++++++---- test/geometry_eulerian4C_test.h | 12 +- test/geometry_eulerian6C_test.cpp | 151 +++++++++---- test/geometry_eulerian6C_test.h | 16 +- test/geometry_kappa4C_test.cpp | 359 +++++++++++++++------------ test/geometry_kappa4C_test.h | 16 +- test/geometry_kappa6C_test.cpp | 245 +++++++++++-------- test/geometry_kappa6C_test.h | 12 +- test/geometry_twoC_test.cpp | 15 +- test/sample_test.cpp | 284 +++++++++++----------- 44 files changed, 1230 insertions(+), 1081 deletions(-) commit 52b0f1da87e2a53259023cf74e8e8616124843b6 Author: Frédéric-Emmanuel PICCA Date: Fri Aug 24 16:46:59 2007 +0200 * Now Geometries are aware of the consign. The conversion method take into account the consign. I added the test methos to the TwoC geometry but not the rest of the geometries. So need to add them, and to remove the unwanted method of Geometry that where renamed : getQ -> get_Q and get_Q_consign getSampleQuaternion -> get_sample_quaternion, get_sample_quaternion_consign getSampleRotationMatrix -> get_sample_rotation_matrix, get_sample_rotation_matrix_consign bouml/hkl/128060.bodies | 2 + bouml/hkl/131714.bodies | 122 ++++++++++++++++---- bouml/hkl/131842 | 2 +- bouml/hkl/131842.bodies | 179 +++++++++++++++++++---------- bouml/hkl/132354 | 2 +- bouml/hkl/132482.bodies | 173 +++++++++++++++++++--------- bouml/hkl/132610.bodies | 189 ++++++++++++++++++------------- bouml/hkl/132866.bodies | 177 +++++++++++++++++++---------- bouml/hkl/132994.bodies | 138 +++++++++++++++------- bouml/hkl/133122 | 2 +- bouml/hkl/133250 | 2 +- bouml/hkl/133634 | 2 +- bouml/hkl/134146 | 2 +- bouml/hkl/145410.bodies | 12 ++ bouml/hkl/2.session | 6 +- bouml/hkl/hkl.prj | 196 +++++++++++++++++++++++++++++++- include/hkl/axe.h | 9 ++- include/hkl/geometry.h | 61 ++++++++++ include/hkl/value.h | 2 + src/axe.cpp | 24 ++++- src/eulerian4C_vertical_geometry.cpp | 183 ++++++++++++++++++++---------- src/eulerian6C_geometry.cpp | 181 +++++++++++++++++++---------- src/geometry.cpp | 210 +++++++++++++++++++++++++++++---- src/kappa4C_vertical_geometry.cpp | 197 +++++++++++++++++++------------- src/kappa6C_geometry.cpp | 144 ++++++++++++++++-------- src/twoC_vertical_geometry.cpp | 177 ++++++++++++++++++++--------- src/value.cpp | 7 + test/geometry_twoC_test.cpp | 96 ++++++++++------ test/geometry_twoC_test.h | 12 +- 29 files changed, 1809 insertions(+), 700 deletions(-) commit bf771c516b5b3c056c09b54bb27377d43d40e18c Author: Frédéric-Emmanuel PICCA Date: Fri Aug 24 14:21:00 2007 +0200 * add the consign to the Axe classes and the Holder. It is time to make the modifications in the Geometry class. bouml/hkl/130050.bodies | 61 +++++++++++++++++++++--------- bouml/hkl/131330.diagram | 16 +++++--- bouml/hkl/131458.diagram | 10 ++-- bouml/hkl/134146 | 80 +++++++++++++++++++++++++++++++++++++++- bouml/hkl/145282.bodies | 24 +++++------ bouml/hkl/148482.bodies | 12 +++++- bouml/hkl/2.session | 11 +++-- bouml/hkl/hkl.prj | 64 ++++++++++++++++++++++++++++++- include/hkl/axe.h | 38 +++++++++++++++--- include/hkl/axe_rotation.h | 27 +++++++++++++ include/hkl/holder.h | 8 ++++ src/axe.cpp | 12 +---- src/axe_rotation.cpp | 88 ++++++++++++++++++++++++++++++++++--------- src/holder.cpp | 23 +++++++++++- test/axe_rotation_test.cpp | 45 ++++++++++++++++++++++ test/holder_test.cpp | 2 + 16 files changed, 432 insertions(+), 89 deletions(-) commit 25e3d60cdd4543877880fca14213b18dcc494105 Author: Frédéric-Emmanuel PICCA Date: Fri Aug 24 12:08:39 2007 +0200 * add the consign to the Range class begining of the pseudoAxes refactoring but before we must add the consign to the Axes. bouml/hkl/128002 | 2 +- bouml/hkl/128002.bodies | 6 +- bouml/hkl/128060.bodies | 14 +- bouml/hkl/128130.diagram | 30 +- bouml/hkl/128514.bodies | 68 ++-- bouml/hkl/128642 | 2 +- bouml/hkl/128770.bodies | 6 +- bouml/hkl/128898.bodies | 6 +- bouml/hkl/129154.bodies | 8 +- bouml/hkl/129794.bodies | 112 ++++--- bouml/hkl/129922.bodies | 1 + bouml/hkl/130178.bodies | 15 +- bouml/hkl/131074.bodies | 29 +- bouml/hkl/131330.bodies | 27 +- bouml/hkl/131586.bodies | 24 +- bouml/hkl/131970 | 2 +- bouml/hkl/132482 | 82 +----- bouml/hkl/132610.bodies | 4 +- bouml/hkl/132738.bodies | 4 +- bouml/hkl/133122 | 2 +- bouml/hkl/133378 | 2 +- bouml/hkl/133378.bodies | 20 +- bouml/hkl/133634.bodies | 48 ++-- bouml/hkl/134146.bodies | 10 +- bouml/hkl/134274.bodies | 4 +- bouml/hkl/134402.bodies | 8 +- bouml/hkl/134786.bodies | 38 ++-- bouml/hkl/134914.bodies | 5 + bouml/hkl/135042.bodies | 4 +- bouml/hkl/135170.bodies | 8 +- bouml/hkl/135426.bodies | 22 +- bouml/hkl/136194.bodies | 34 +-- bouml/hkl/136322.bodies | 18 +- bouml/hkl/136450.bodies | 21 +- bouml/hkl/136578.bodies | 2 +- bouml/hkl/136834.bodies | 2 +- bouml/hkl/139138.bodies | 6 +- bouml/hkl/142466.bodies | 4 +- bouml/hkl/142978.bodies | 6 +- bouml/hkl/143362.bodies | 4 +- bouml/hkl/145410.bodies | 2 +- bouml/hkl/148482.bodies | 35 +-- bouml/hkl/149762.bodies | 196 ++++++------ bouml/hkl/2.session | 8 +- bouml/hkl/hkl.prj | 434 ++++++++++++++++----------- include/hkl/lattice.h | 1 + include/hkl/pseudoaxe.h | 25 +- include/hkl/pseudoaxeengine.h | 13 +- include/hkl/range.h | 127 +++++---- include/hkl/twoC_vertical_pseudoaxeengine.h | 17 - src/SConscript | 15 +- src/fitparameter.cpp | 11 +- src/fitparameterlist.cpp | 1 + src/lattice.cpp | 25 +- src/object.cpp | 4 +- src/parameter.cpp | 3 +- src/parameterlist.cpp | 1 + src/pseudoaxe.cpp | 42 +-- src/pseudoaxeengine.cpp | 17 + src/range.cpp | 160 ++++++---- src/twoC_vertical_pseudoaxeengine.cpp | 106 +++----- src/value.cpp | 10 +- test/SConscript | 2 +- test/pseudoaxe_twoC_test.cpp | 43 +-- test/range_test.cpp | 16 +- 65 files changed, 1023 insertions(+), 1001 deletions(-) commit c61e9bc574bdd6a340b41e287acaa9a43d82a784 Author: Frédéric-Emmanuel PICCA Date: Thu Aug 23 14:32:51 2007 +0200 * end of the Holder Refactoring. The holder have a pointer on the HolderList so it can access all others Holder and the axeList. Remove all using namespace std from the code, so we must put std:: in front of all methods of the std library. bouml/hkl/128002 | 14 +- bouml/hkl/128130.diagram | 36 +- bouml/hkl/128258.diagram | 28 +- bouml/hkl/128514 | 2 +- bouml/hkl/128642 | 10 +- bouml/hkl/128770 | 30 +- bouml/hkl/128770.diagram | 44 +- bouml/hkl/129922 | 2 +- bouml/hkl/131074 | 2 +- bouml/hkl/131970 | 10 +- bouml/hkl/132482 | 26 +- bouml/hkl/132738.diagram | 46 +- bouml/hkl/132994 | 10 +- bouml/hkl/133378 | 18 +- bouml/hkl/134018 | 37 +- bouml/hkl/134146 | 14 +- bouml/hkl/2.session | 10 +- bouml/hkl/cpp_includes | 6 +- bouml/hkl/generation_settings | 3 +- bouml/hkl/hkl.prj | 683 ++++++++++----------- include/hkl/HKLException.h | 2 - include/hkl/affinement.h | 15 +- include/hkl/affinementlist.h | 19 +- include/hkl/axe.h | 31 +- include/hkl/axe_rotation.h | 11 +- include/hkl/axefactory.h | 1 - include/hkl/derived_mode.h | 1 - include/hkl/derived_pseudoaxeengine.h | 32 +- include/hkl/diffractometer.h | 11 +- include/hkl/eulerian4C_vertical_mode.h | 1 - include/hkl/eulerian4C_vertical_pseudoaxeengine.h | 8 +- include/hkl/eulerian6C_pseudoaxeengine.h | 12 +- include/hkl/fitparameter.h | 15 +- include/hkl/fitparameterlist.h | 20 +- include/hkl/geometry.h | 18 +- include/hkl/geometry_kappa.h | 11 +- include/hkl/hklobject.h | 15 +- include/hkl/holder.h | 163 +++++- include/hkl/holderlist.h | 139 ----- include/hkl/kappa4C_vertical_pseudoaxeengine.h | 8 +- include/hkl/lattice.h | 14 +- include/hkl/mode.h | 1 - include/hkl/modelist.h | 19 +- include/hkl/mymap.h | 19 +- include/hkl/mystring.h | 9 +- include/hkl/object.h | 14 +- include/hkl/parameter.h | 15 +- include/hkl/parameterlist.h | 23 +- include/hkl/pseudoaxe.h | 10 +- include/hkl/pseudoaxeengine.h | 28 +- include/hkl/pseudoaxeenginelist.h | 10 +- include/hkl/pseudoaxelist.h | 18 +- include/hkl/quaternion.h | 13 +- include/hkl/range.h | 14 +- include/hkl/reflection.h | 10 +- include/hkl/reflectionlist.h | 14 +- include/hkl/sample.h | 11 +- include/hkl/sample_monocrystal.h | 9 +- include/hkl/samplefactory.h | 4 +- include/hkl/samplelist.h | 21 +- include/hkl/source.h | 14 +- include/hkl/svector.h | 32 +- include/hkl/twoC_vertical_mode.h | 1 - include/hkl/twoC_vertical_pseudoaxeengine.h | 16 +- include/hkl/value.h | 10 +- src/SConscript | 2 +- src/affinement.cpp | 10 +- src/affinementlist.cpp | 12 +- src/axe.cpp | 14 +- src/axe_rotation.cpp | 6 +- src/diffractometer.cpp | 10 +- src/eulerian4C_vertical_pseudoaxeengine.cpp | 6 +- src/eulerian6C_pseudoaxeengine.cpp | 10 +- src/fitparameter.cpp | 14 +- src/fitparameterlist.cpp | 32 +- src/geometry.cpp | 10 +- src/geometry_kappa.cpp | 10 +- src/hklobject.cpp | 6 +- src/holder.cpp | 237 +++++++- src/holderlist.cpp | 195 ------ src/kappa4C_vertical_geometry.cpp | 4 +- src/kappa4C_vertical_pseudoaxeengine.cpp | 4 +- src/lattice.cpp | 6 +- src/modelist.cpp | 12 +- src/mystring.cpp | 18 +- src/object.cpp | 14 +- src/parameter.cpp | 6 +- src/parameterlist.cpp | 34 +- src/pseudoaxe.cpp | 16 +- src/pseudoaxeenginelist.cpp | 28 +- src/pseudoaxelist.cpp | 6 +- src/quaternion.cpp | 12 +- src/range.cpp | 12 +- src/reflection.cpp | 6 +- src/reflectionlist.cpp | 54 +- src/sample.cpp | 26 +- src/sample_monocrystal.cpp | 14 +- src/samplefactory.cpp | 4 +- src/samplelist.cpp | 14 +- src/source.cpp | 6 +- src/svector.cpp | 138 ++-- src/twoC_vertical_pseudoaxeengine.cpp | 20 +- src/value.cpp | 10 +- test/SConscript | 10 +- test/axe_rotation_test.cpp | 2 +- test/fitparameter_test.cpp | 2 +- test/geometry_eulerian4C_test.cpp | 2 +- test/geometry_eulerian6C_test.cpp | 2 +- test/geometry_kappa4C_test.cpp | 2 +- test/geometry_kappa6C_test.cpp | 2 +- test/geometry_twoC_test.cpp | 2 +- test/hklobject_test.cpp | 6 +- test/holder_test.cpp | 18 +- test/holder_test.h | 2 +- test/holderlist_test.cpp | 2 +- test/holderlist_test.h | 2 +- test/lattice_test.cpp | 2 +- test/mode_eulerian4C_test.cpp | 2 +- test/mode_kappa4C_test.cpp | 2 +- test/mode_kappa6C_test.cpp | 2 +- test/mode_twoC_test.cpp | 2 +- test/mystring_test.cpp | 2 +- test/object_test.cpp | 8 +- test/parameter_test.cpp | 2 +- test/pseudoaxe_twoC_test.cpp | 2 +- test/quaternion_test.cpp | 2 +- test/range_test.cpp | 2 +- test/reflection_test.cpp | 2 +- test/reflectionlist_test.cpp | 2 +- test/sample_test.cpp | 4 +- test/samplelist_test.cpp | 4 +- test/source_test.cpp | 2 +- test/svecmat_test.cpp | 4 +- test/value_test.cpp | 2 +- 134 files changed, 1485 insertions(+), 1568 deletions(-) commit cfc73d10502550c0199db91e59d91e97b77afc42 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 21 17:14:11 2007 +0200 * End of the geometry refactoring. (do not compile) Working on the PseudoAxes to set a correct min and max range. bouml/hkl/128188.diagram | 52 ++++--- bouml/hkl/128770 | 18 ++- bouml/hkl/129794.bodies | 12 +- bouml/hkl/131458.diagram | 48 ++----- bouml/hkl/131714.bodies | 8 +- bouml/hkl/131842 | 2 +- bouml/hkl/131842.bodies | 21 ++- bouml/hkl/132482 | 2 +- bouml/hkl/132610.bodies | 62 +++----- bouml/hkl/132866.bodies | 20 ++- bouml/hkl/132994 | 2 +- bouml/hkl/132994.bodies | 129 ++++++++-------- bouml/hkl/133122 | 2 +- bouml/hkl/133250 | 2 +- bouml/hkl/133378 | 2 +- bouml/hkl/133634 | 2 +- bouml/hkl/136194.bodies | 49 +++--- bouml/hkl/136322.bodies | 63 +++++---- bouml/hkl/136706.bodies | 57 ++------ bouml/hkl/136834.bodies | 89 ++++++------ bouml/hkl/137090.bodies | 109 +++++++++----- bouml/hkl/144130.bodies | 16 +- bouml/hkl/144258.bodies | 24 ++-- bouml/hkl/145026.bodies | 78 +++++----- bouml/hkl/145282.bodies | 16 ++- bouml/hkl/148482.bodies | 4 +- bouml/hkl/2.session | 12 +- bouml/hkl/hkl.prj | 245 +++++++++++++++--------------- include/hkl/axe.h | 59 +++----- include/hkl/constant.h | 82 ++++++++++ include/hkl/derived_pseudoaxeengine.h | 182 ++++++++++++++-------- src/axe.cpp | 9 +- src/eulerian4C_vertical_geometry.cpp | 21 ++- src/eulerian6C_geometry.cpp | 20 ++- src/eulerian6C_pseudoaxeengine.cpp | 28 ++-- src/geometry.cpp | 8 +- src/holder.cpp | 4 +- src/kappa4C_vertical_geometry.cpp | 62 +++----- src/kappa4C_vertical_pseudoaxeengine.cpp | 57 ++------ src/kappa6C_diffractometer.cpp | 2 +- src/kappa6C_geometry.cpp | 68 +++----- src/pseudoaxe.cpp | 1 + src/range.cpp | 12 +- src/twoC_vertical_pseudoaxeengine.cpp | 151 ++++++++++--------- test/SConscript | 21 ++-- test/affinement_simplex_test.cpp | 80 +++++----- test/affinement_simplex_test.h | 2 +- test/axe_rotation_test.cpp | 6 +- test/geometry_eulerian4C_test.cpp | 49 +++--- test/geometry_eulerian4C_test.h | 2 +- test/geometry_eulerian6C_test.cpp | 137 +++++++++-------- test/geometry_eulerian6C_test.h | 2 +- test/geometry_kappa4C_test.cpp | 60 ++++---- test/geometry_kappa6C_test.cpp | 55 ++++--- test/geometry_twoC_test.cpp | 48 +++--- test/geometry_twoC_test.h | 2 +- test/holderlist_test.cpp | 4 +- test/mode_kappa4C_test.cpp | 126 ++++++++-------- test/mode_kappa4C_test.h | 2 +- test/mode_kappa6C_test.cpp | 170 +++++++++++---------- test/mode_kappa6C_test.h | 2 +- test/pseudoaxe_eulerian4C_test.cpp | 154 ++++++++++--------- test/pseudoaxe_eulerian4C_test.h | 2 +- test/pseudoaxe_eulerian6C_test.cpp | 133 ++++++++-------- test/pseudoaxe_eulerian6C_test.h | 2 +- test/pseudoaxe_kappa4C_test.cpp | 211 +++++++++++++------------- test/pseudoaxe_kappa4C_test.h | 4 +- test/pseudoaxe_kappa6C_test.cpp | 183 ++++++++++++----------- test/pseudoaxe_kappa6C_test.h | 10 +- test/pseudoaxe_twoC_test.cpp | 119 +++++++++------ test/pseudoaxe_twoC_test.h | 2 +- test/reflection_test.cpp | 34 +++-- test/reflection_test.h | 2 +- test/sample_test.cpp | 54 ++++---- 74 files changed, 1863 insertions(+), 1727 deletions(-) commit 58c71caa93f3fe82caf53f45934bba4545f52d2d Author: Frédéric-Emmanuel PICCA Date: Sun Aug 19 19:11:53 2007 +0200 * ready to deal with the Geometry Assignation problem. bouml/hkl/128770 | 6 +- bouml/hkl/2.session | 6 +- include/hkl/derived_pseudoaxeengine.h | 24 +++++----- src/eulerian6C_diffractometer.cpp | 16 +++--- src/eulerian6C_pseudoaxeengine.cpp | 85 +++++++++++++++++--------------- src/kappa6C_diffractometer.cpp | 24 +++++----- src/kappa6C_geometry.cpp | 57 ++++++++++++++-------- test/geometry_twoC_test.cpp | 6 ++- 8 files changed, 124 insertions(+), 100 deletions(-) commit 2f65d53e5bdfd92d92710ea37c848d510c4fcae5 Author: Frédéric-Emmanuel PICCA Date: Fri Aug 17 18:04:35 2007 +0200 * close to the end of the refactoring of the geometry. (do not compile) bouml/hkl/128002 | 2 +- bouml/hkl/128060.bodies | 2 +- bouml/hkl/128770 | 2 +- bouml/hkl/129922.diagram | 33 ++- bouml/hkl/130050.bodies | 15 +- bouml/hkl/131330.diagram | 34 ++-- bouml/hkl/131458.diagram | 34 ++- bouml/hkl/131842 | 6 +- bouml/hkl/131842.bodies | 91 ++++---- bouml/hkl/131970 | 2 +- bouml/hkl/132354 | 2 +- bouml/hkl/132482.bodies | 17 +- bouml/hkl/132610.bodies | 51 +++-- bouml/hkl/132738.diagram | 50 +++-- bouml/hkl/132866.bodies | 61 ++++-- bouml/hkl/133122 | 42 ++-- bouml/hkl/133250 | 9 +- bouml/hkl/133634 | 46 ++-- bouml/hkl/134146 | 21 +- bouml/hkl/136578.bodies | 4 +- bouml/hkl/137090.bodies | 2 +- bouml/hkl/143490.bodies | 10 +- bouml/hkl/143618.bodies | 10 +- bouml/hkl/143746.bodies | 18 +- bouml/hkl/143874.bodies | 20 +- bouml/hkl/145026.bodies | 2 +- bouml/hkl/145282.bodies | 6 - bouml/hkl/145410.bodies | 44 +--- bouml/hkl/148482.bodies | 64 +----- bouml/hkl/149762.bodies | 38 +++- bouml/hkl/150914.bodies | 13 + bouml/hkl/2.session | 12 +- bouml/hkl/hkl.prj | 329 ++++++++++++++++++++------- include/hkl/axe.h | 36 ++-- include/hkl/axe_rotation.h | 13 +- include/hkl/axefactory.h | 30 +++ include/hkl/derived_pseudoaxeengine.h | 4 +- include/hkl/diffractometer.h | 21 ++- include/hkl/holder.h | 87 +++++++- include/hkl/holderlist.h | 3 + include/hkl/kappa4C_vertical_geometry.h | 18 +- include/hkl/kappa6C_geometry.h | 22 +- src/HKLException.cpp | 2 +- src/SConscript | 14 +- src/axe.cpp | 124 ++-------- src/axe_rotation.cpp | 24 +-- src/axefactory.cpp | 34 +++ src/eulerian4C_vertical_diffractometer.cpp | 18 +- src/eulerian4C_vertical_geometry.cpp | 94 ++++---- src/eulerian4C_vertical_pseudoaxeengine.cpp | 4 +- src/eulerian6C_geometry.cpp | 65 ++++-- src/holder.cpp | 68 +----- src/holderlist.cpp | 40 +++- src/kappa4C_vertical_diffractometer.cpp | 22 +- src/kappa4C_vertical_geometry.cpp | 69 ++++-- src/kappa6C_diffractometer.cpp | 2 +- src/kappa6C_geometry.cpp | 26 ++- src/twoC_vertical_diffractometer.cpp | 10 +- src/twoC_vertical_geometry.cpp | 16 +- src/value.cpp | 2 +- test/SConscript | 12 +- test/axe_test.cpp | 97 -------- test/axe_test.h | 33 --- test/geometry_test.cpp | 45 +--- test/geometry_test.h | 2 - test/holder_test.cpp | 52 ++--- test/holderlist_test.cpp | 28 ++- test/holderlist_test.h | 5 + 68 files changed, 1184 insertions(+), 1050 deletions(-) commit d6a66ab0ddfc6441c9acf9f77b2fdf2d647be437 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 14 17:51:16 2007 +0200 * start working on the HolderList and its TestCase The holderList must properly manage its memory. The serialization via from/to Stream must be tune. bouml/hkl/128060.bodies | 2 +- bouml/hkl/130050.bodies | 73 ++++++++-------- bouml/hkl/132738.diagram | 18 ++-- bouml/hkl/134146 | 2 +- bouml/hkl/145410.bodies | 3 +- bouml/hkl/148482.bodies | 27 +++--- bouml/hkl/149762.bodies | 67 ++++++++++++--- bouml/hkl/2.session | 12 ++- bouml/hkl/hkl.prj | 218 +++++++++++++++++++++++++++------------------ include/hkl/holder.h | 6 +- include/hkl/holderlist.h | 24 +++++ src/axe_rotation.cpp | 139 ++++++++++++++--------------- src/holder.cpp | 32 ++++---- src/holderlist.cpp | 86 +++++++++++++++--- src/value.cpp | 2 +- test/SConscript | 3 +- test/holder_test.cpp | 6 +- test/holderlist_test.cpp | 74 ++++++++++++++++ test/holderlist_test.h | 31 +++++++ 19 files changed, 551 insertions(+), 274 deletions(-) commit b5aa59ffae74482079843b69615288fa796eb654 Author: Frédéric-Emmanuel PICCA Date: Tue Aug 14 10:39:18 2007 +0200 * Holder is working Add the test case of the Holder class. bouml/hkl/132738.diagram | 30 ++++---- bouml/hkl/145410.bodies | 85 +++++++++++-------- bouml/hkl/148482.bodies | 22 +++++- bouml/hkl/2.session | 7 +- bouml/hkl/hkl.prj | 14 +++- include/hkl/axe.h | 9 ++ src/axe.cpp | 5 +- src/axe_rotation.cpp | 210 ++++++++++++++++++++++++---------------------- src/holder.cpp | 1 + test/holder_test.cpp | 1 - 10 files changed, 223 insertions(+), 161 deletions(-) commit 70de209fa1673f9086ccd57e1740a08f1e809336 Author: Frédéric-Emmanuel PICCA Date: Mon Aug 13 22:36:15 2007 +0200 * start adding test case of the holder class. bouml/hkl/128002 | 13 +- bouml/hkl/128770 | 2 +- bouml/hkl/130050.bodies | 3 + bouml/hkl/131714.bodies | 95 ++------- bouml/hkl/132354 | 6 +- bouml/hkl/132482.bodies | 34 ++-- bouml/hkl/132738.diagram | 38 ++-- bouml/hkl/133122.bodies | 12 +- bouml/hkl/133378.bodies | 6 +- bouml/hkl/134146 | 2 +- bouml/hkl/137090.bodies | 12 +- bouml/hkl/145026.bodies | 70 ++++---- bouml/hkl/145410.bodies | 20 +- bouml/hkl/148482.bodies | 72 +++++-- bouml/hkl/149762.bodies | 32 +++- bouml/hkl/2.session | 8 +- bouml/hkl/hkl.prj | 358 +++++++++++++++++++++++---------- include/hkl/axe.h | 13 +- include/hkl/derived_pseudoaxeengine.h | 82 ++++---- include/hkl/geometry.h | 64 ++++--- include/hkl/geometry_kappa.h | 2 +- include/hkl/holder.h | 39 ++++- include/hkl/holderlist.h | 88 ++++++++- src/HKLException.cpp | 2 +- src/SConscript | 24 +- src/axe.cpp | 124 +++++++----- src/axe_rotation.cpp | 2 + src/geometry.cpp | 116 ++--------- src/geometry_kappa.cpp | 6 +- src/holder.cpp | 125 ++++++++++-- src/holderlist.cpp | 70 ++++++- src/reflection.cpp | 12 +- src/sample.cpp | 6 +- src/twoC_vertical_geometry.cpp | 38 ++-- test/SConscript | 3 +- test/geometry_test.cpp | 4 +- test/holder_test.cpp | 100 +++++++++ test/holder_test.h | 35 ++++ 38 files changed, 1117 insertions(+), 621 deletions(-) commit f773c89502eda9d614357202334ab18dc4da56d1 Author: Frédéric-Emmanuel PICCA Date: Sun Aug 12 23:43:17 2007 +0200 * add all the .h autogenerated files include/hkl/HKLException.h | 74 +++ include/hkl/HolderList.h | 29 + include/hkl/affinement.h | 106 ++++ include/hkl/affinement_simplex.h | 42 ++ include/hkl/affinementlist.h | 160 ++++++ include/hkl/axe.h | 268 ++++++++++ include/hkl/axe_rotation.h | 126 +++++ include/hkl/constant.h | 34 ++ include/hkl/convenience.h | 37 ++ include/hkl/derived_mode.h | 93 ++++ include/hkl/derived_pseudoaxeengine.h | 581 +++++++++++++++++++++ include/hkl/diffractometer.h | 324 ++++++++++++ include/hkl/diffractometerfactory.h | 43 ++ include/hkl/eulerian4C_vertical_diffractometer.h | 29 + include/hkl/eulerian4C_vertical_geometry.h | 149 ++++++ include/hkl/eulerian4C_vertical_mode.h | 131 +++++ include/hkl/eulerian4C_vertical_pseudoaxeengine.h | 164 ++++++ include/hkl/eulerian6C_diffractometer.h | 57 ++ include/hkl/eulerian6C_geometry.h | 177 +++++++ include/hkl/eulerian6C_mode.h | 26 + include/hkl/eulerian6C_pseudoaxeengine.h | 256 +++++++++ include/hkl/fitparameter.h | 131 +++++ include/hkl/fitparameterlist.h | 147 ++++++ include/hkl/geometry.h | 210 ++++++++ include/hkl/geometry_kappa.h | 59 +++ include/hkl/hklobject.h | 75 +++ include/hkl/holder.h | 66 +++ include/hkl/holderlist.h | 32 ++ include/hkl/kappa4C_vertical_diffractometer.h | 29 + include/hkl/kappa4C_vertical_geometry.h | 149 ++++++ include/hkl/kappa4C_vertical_mode.h | 30 ++ include/hkl/kappa4C_vertical_pseudoaxeengine.h | 163 ++++++ include/hkl/kappa6C_diffractometer.h | 25 + include/hkl/kappa6C_geometry.h | 177 +++++++ include/hkl/kappa6C_mode.h | 26 + include/hkl/kappa6C_pseudoaxeengine.h | 27 + include/hkl/lattice.h | 239 +++++++++ include/hkl/mode.h | 199 +++++++ include/hkl/modelist.h | 160 ++++++ include/hkl/mymap.h | 307 +++++++++++ include/hkl/mystring.h | 55 ++ include/hkl/object.h | 169 ++++++ include/hkl/observer.h | 66 +++ include/hkl/parameter.h | 72 +++ include/hkl/parameterlist.h | 116 ++++ include/hkl/portability.h | 5 + include/hkl/pseudoaxe.h | 151 ++++++ include/hkl/pseudoaxeengine.h | 381 ++++++++++++++ include/hkl/pseudoaxeenginelist.h | 67 +++ include/hkl/pseudoaxelist.h | 80 +++ include/hkl/quaternion.h | 203 +++++++ include/hkl/range.h | 315 +++++++++++ include/hkl/reflection.h | 187 +++++++ include/hkl/reflection_monocrystal.h | 59 +++ include/hkl/reflectionfactory.h | 39 ++ include/hkl/reflectionlist.h | 156 ++++++ include/hkl/sample.h | 133 +++++ include/hkl/sample_monocrystal.h | 134 +++++ include/hkl/samplefactory.h | 42 ++ include/hkl/samplelist.h | 183 +++++++ include/hkl/source.h | 135 +++++ include/hkl/svector.h | 185 +++++++ include/hkl/twoC_vertical_diffractometer.h | 33 ++ include/hkl/twoC_vertical_geometry.h | 117 +++++ include/hkl/twoC_vertical_mode.h | 63 +++ include/hkl/twoC_vertical_pseudoaxeengine.h | 190 +++++++ include/hkl/value.h | 138 +++++ 67 files changed, 8631 insertions(+), 0 deletions(-) commit dab80e547f3adaf24cc146727b7dc0e21cde499d Author: Frédéric-Emmanuel PICCA Date: Sun Aug 12 23:41:36 2007 +0200 * redo the refoactoring work and add the autogenerates files. bouml/hkl/128002 | 2 +- bouml/hkl/128002.bodies | 298 ++++++------ bouml/hkl/128060.bodies | 78 ++-- bouml/hkl/128182.bodies | 50 +- bouml/hkl/128310.bodies | 16 +- bouml/hkl/128514 | 12 +- bouml/hkl/128514.bodies | 356 +++++++------- bouml/hkl/128642 | 12 +- bouml/hkl/128770 | 14 +- bouml/hkl/128770.bodies | 270 ++++++------ bouml/hkl/128898.bodies | 26 +- bouml/hkl/129154.bodies | 78 ++-- bouml/hkl/129282.bodies | 4 +- bouml/hkl/129410.bodies | 4 +- bouml/hkl/129538.bodies | 4 +- bouml/hkl/129666.bodies | 42 +- bouml/hkl/129794.bodies | 222 +++++----- bouml/hkl/129922 | 14 +- bouml/hkl/129922.bodies | 22 +- bouml/hkl/130050.bodies | 80 ++-- bouml/hkl/130178.bodies | 76 ++-- bouml/hkl/130306.bodies | 272 ++++++------ bouml/hkl/131074 | 14 +- bouml/hkl/131074.bodies | 146 +++--- bouml/hkl/131202.bodies | 30 +- bouml/hkl/131330.bodies | 132 +++--- bouml/hkl/131458.bodies | 140 +++--- bouml/hkl/131458.diagram | 16 +- bouml/hkl/131586.bodies | 630 +++++++++++++------------- bouml/hkl/131714.bodies | 445 +++++++----------- bouml/hkl/131842 | 2 +- bouml/hkl/131842.bodies | 206 ++++---- bouml/hkl/131970 | 14 +- bouml/hkl/132098 | 2 +- bouml/hkl/132354 | 2 +- bouml/hkl/132482 | 14 +- bouml/hkl/132482.bodies | 155 +++---- bouml/hkl/132610 | 16 +- bouml/hkl/132610.bodies | 270 ++++++------ bouml/hkl/132738.bodies | 20 +- bouml/hkl/132738.diagram | 12 + bouml/hkl/132866.bodies | 192 ++++---- bouml/hkl/132994 | 14 +- bouml/hkl/132994.bodies | 230 +++++----- bouml/hkl/133122 | 2 +- bouml/hkl/133122.bodies | 78 ++-- bouml/hkl/133250 | 2 +- bouml/hkl/133378 | 2 +- bouml/hkl/133378.bodies | 210 +++++----- bouml/hkl/133506.bodies | 22 +- bouml/hkl/133634 | 2 +- bouml/hkl/133634.bodies | 332 +++++++------- bouml/hkl/133890.bodies | 6 +- bouml/hkl/134146 | 2 +- bouml/hkl/134146.bodies | 302 ++++++------ bouml/hkl/134274.bodies | 30 +- bouml/hkl/134402.bodies | 332 +++++++------- bouml/hkl/134786.bodies | 104 ++-- bouml/hkl/135042.bodies | 96 ++-- bouml/hkl/135170.bodies | 42 +- bouml/hkl/135426.bodies | 126 +++--- bouml/hkl/136194.bodies | 178 ++++---- bouml/hkl/136322.bodies | 168 ++++---- bouml/hkl/136450.bodies | 116 +++--- bouml/hkl/136578.bodies | 486 ++++++++++---------- bouml/hkl/136706.bodies | 262 ++++++------ bouml/hkl/136834.bodies | 448 +++++++++--------- bouml/hkl/136962.bodies | 220 +++++----- bouml/hkl/137090.bodies | 134 +++--- bouml/hkl/138882.bodies | 58 ++-- bouml/hkl/139138.bodies | 238 +++++----- bouml/hkl/139522.bodies | 58 ++-- bouml/hkl/139650.bodies | 68 ++-- bouml/hkl/139778.bodies | 64 ++-- bouml/hkl/139906.bodies | 66 ++-- bouml/hkl/140034.bodies | 64 ++-- bouml/hkl/140162.bodies | 18 +- bouml/hkl/140290.bodies | 16 +- bouml/hkl/140418.bodies | 12 +- bouml/hkl/142466.bodies | 42 +- bouml/hkl/142594.bodies | 496 ++++++++++---------- bouml/hkl/142978.bodies | 236 +++++----- bouml/hkl/143362.bodies | 70 ++-- bouml/hkl/143490.bodies | 6 +- bouml/hkl/143618.bodies | 24 +- bouml/hkl/143746.bodies | 32 +- bouml/hkl/143874.bodies | 34 +- bouml/hkl/144130.bodies | 26 +- bouml/hkl/144258.bodies | 34 +- bouml/hkl/144386.bodies | 46 +- bouml/hkl/145026.bodies | 134 +++--- bouml/hkl/145282.bodies | 39 +- bouml/hkl/145410.bodies | 296 +++++------- bouml/hkl/148482.bodies | 113 +++-- bouml/hkl/149762.bodies | 20 + bouml/hkl/2.session | 14 +- bouml/hkl/hkl.prj | 109 ++++- src/HKLException.cpp | 161 +++++++ src/SConscript | 1 + src/affinement.cpp | 102 ++++ src/affinement_simplex.cpp | 330 +++++++++++++ src/affinementlist.cpp | 324 +++++++++++++ src/axe.cpp | 440 +++++++++++++++++ src/axe_rotation.cpp | 162 +++++++ src/constant.cpp | 21 + src/convenience.cpp | 51 ++ src/diffractometer.cpp | 100 ++++ src/diffractometerfactory.cpp | 59 +++ src/eulerian4C_vertical_diffractometer.cpp | 47 ++ src/eulerian4C_vertical_geometry.cpp | 303 ++++++++++++ src/eulerian4C_vertical_mode.cpp | 317 +++++++++++++ src/eulerian4C_vertical_pseudoaxeengine.cpp | 355 ++++++++++++++ src/eulerian6C_diffractometer.cpp | 37 ++ src/eulerian6C_geometry.cpp | 336 +++++++++++++ src/eulerian6C_pseudoaxeengine.cpp | 515 ++++++++++++++++++++ src/fitparameter.cpp | 177 +++++++ src/fitparameterlist.cpp | 195 ++++++++ src/geometry.cpp | 391 ++++++++++++++++ src/geometry_kappa.cpp | 69 +++ src/hklobject.cpp | 86 ++++ src/holder.cpp | 139 ++++++ src/holderlist.cpp | 47 ++ src/kappa4C_vertical_diffractometer.cpp | 48 ++ src/kappa4C_vertical_geometry.cpp | 336 +++++++++++++ src/kappa4C_vertical_pseudoaxeengine.cpp | 226 +++++++++ src/kappa6C_diffractometer.cpp | 43 ++ src/kappa6C_geometry.cpp | 355 ++++++++++++++ src/lattice.cpp | 600 ++++++++++++++++++++++++ src/mode.cpp | 26 + src/modelist.cpp | 326 +++++++++++++ src/mystring.cpp | 83 ++++ src/object.cpp | 257 ++++++++++ src/observer.cpp | 108 +++++ src/parameter.cpp | 79 ++++ src/parameterlist.cpp | 204 ++++++++ src/pseudoaxe.cpp | 245 ++++++++++ src/pseudoaxeengine.cpp | 23 + src/pseudoaxeenginelist.cpp | 134 ++++++ src/pseudoaxelist.cpp | 139 ++++++ src/quaternion.cpp | 431 +++++++++++++++++ src/range.cpp | 306 ++++++++++++ src/reflection.cpp | 178 +++++++ src/reflection_monocrystal.cpp | 61 +++ src/reflectionfactory.cpp | 45 ++ src/reflectionlist.cpp | 353 ++++++++++++++ src/sample.cpp | 213 +++++++++ src/sample_monocrystal.cpp | 319 +++++++++++++ src/samplefactory.cpp | 53 +++ src/samplelist.cpp | 405 ++++++++++++++++ src/source.cpp | 196 ++++++++ src/svector.cpp | 677 +++++++++++++++++++++++++++ src/twoC_vertical_diffractometer.cpp | 44 ++ src/twoC_vertical_geometry.cpp | 232 +++++++++ src/twoC_vertical_mode.cpp | 92 ++++ src/twoC_vertical_pseudoaxeengine.cpp | 468 ++++++++++++++++++ src/value.cpp | 191 ++++++++ 156 files changed, 17675 insertions(+), 5375 deletions(-) commit d3f99bbaec09cac0adea16d6aab2588607e6e0bd Author: Frédéric-Emmanuel PICCA Date: Fri Aug 10 18:06:03 2007 +0200 * refactoring of the Axe class and the Geometry not yet ok but it compiles. SConstruct | 3 +- bouml/hkl/128002 | 23 +- bouml/hkl/128002.diagram | 48 ++- bouml/hkl/128130.diagram | 33 +- bouml/hkl/128188.diagram | 126 ++--- bouml/hkl/128386.diagram | 58 ++- bouml/hkl/129154.diagram | 21 +- bouml/hkl/129794.bodies | 17 - bouml/hkl/130050.bodies | 43 +- bouml/hkl/130050.diagram | 63 ++- bouml/hkl/130946.diagram | 64 ++- bouml/hkl/131074.diagram | 49 ++- bouml/hkl/131458.diagram | 62 +-- bouml/hkl/131714.bodies | 36 +- bouml/hkl/131842 | 147 +++--- bouml/hkl/131842.bodies | 55 ++- bouml/hkl/132098 | 14 +- bouml/hkl/132354 | 26 +- bouml/hkl/132482.bodies | 28 +- bouml/hkl/132610 | 6 +- bouml/hkl/132610.bodies | 9 - bouml/hkl/132738.diagram | 31 + bouml/hkl/132866.bodies | 9 - bouml/hkl/132994.bodies | 9 - bouml/hkl/133122 | 37 +- bouml/hkl/133250 | 45 +- bouml/hkl/133378 | 22 +- bouml/hkl/133634 | 45 +- bouml/hkl/134018 | 40 +- bouml/hkl/134146 | 151 +++--- bouml/hkl/145282.bodies | 14 +- bouml/hkl/145410.bodies | 75 +++- bouml/hkl/148482.bodies | 43 ++ bouml/hkl/2.session | 17 +- bouml/hkl/cpp_includes | 6 +- bouml/hkl/generation_settings | 8 +- bouml/hkl/hkl.prj | 902 ++++++++++++++++++++----------- config-linux2.py | 1 - src/SConscript | 1 + test/SConscript | 12 +- test/affinement_simplex_test.cpp | 40 +- test/axe_rotation_test.cpp | 91 +++ test/axe_rotation_test.h | 33 ++ test/axe_test.cpp | 95 ++-- test/axe_test.h | 10 +- test/diffractometer_eulerian4C_test.cpp | 246 +++++----- test/diffractometer_eulerian4C_test.h | 3 - test/diffractometer_kappa4C_test.cpp | 40 +- test/diffractometer_kappa6C_test.cpp | 60 +- test/diffractometer_twoC_test.cpp | 20 +- test/geometry_eulerian4C_test.cpp | 116 ++--- test/geometry_eulerian4C_test.h | 8 +- test/geometry_eulerian6C_test.cpp | 82 ++-- test/geometry_eulerian6C_test.h | 6 +- test/geometry_kappa4C_test.cpp | 72 +-- test/geometry_kappa4C_test.h | 6 +- test/geometry_kappa6C_test.cpp | 64 +-- test/geometry_kappa6C_test.h | 6 +- test/geometry_test.cpp | 54 ++- test/geometry_test.h | 2 - test/geometry_twoC_test.cpp | 47 +- test/geometry_twoC_test.h | 6 +- test/pseudoaxe_twoC_test.cpp | 24 +- 63 files changed, 2002 insertions(+), 1528 deletions(-) commit 34cce5bc1f4447713517e1a750f391f0e6ff9cac Author: Frédéric-Emmanuel PICCA Date: Fri Jun 8 17:59:06 2007 +0200 * start refactoring the Geometry (do not compile) bouml/hkl/128002 | 2 +- bouml/hkl/128002.bodies | 294 +++++++++--------- bouml/hkl/128002.diagram | 70 ++--- bouml/hkl/128060.bodies | 78 +++--- bouml/hkl/128182.bodies | 52 ++-- bouml/hkl/128310.bodies | 18 +- bouml/hkl/128514 | 2 +- bouml/hkl/128514.bodies | 356 +++++++++++----------- bouml/hkl/128642 | 2 +- bouml/hkl/128770 | 2 +- bouml/hkl/128770.bodies | 267 ++++++++-------- bouml/hkl/128898.bodies | 26 +- bouml/hkl/129154.bodies | 78 +++--- bouml/hkl/129282.bodies | 4 +- bouml/hkl/129410.bodies | 4 +- bouml/hkl/129538.bodies | 4 +- bouml/hkl/129666.bodies | 40 ++-- bouml/hkl/129794.bodies | 256 ++++++++-------- bouml/hkl/129922 | 2 +- bouml/hkl/129922.bodies | 22 +- bouml/hkl/130050.bodies | 105 ++++--- bouml/hkl/130178.bodies | 76 +++--- bouml/hkl/130306.bodies | 242 ++++++++-------- bouml/hkl/130306.diagram | 2 +- bouml/hkl/131074 | 2 +- bouml/hkl/131074.bodies | 140 +++++----- bouml/hkl/131202.bodies | 30 +- bouml/hkl/131330.bodies | 122 ++++---- bouml/hkl/131330.diagram | 28 ++- bouml/hkl/131458.bodies | 132 ++++---- bouml/hkl/131458.diagram | 28 ++- bouml/hkl/131586.bodies | 574 +++++++++++++++++----------------- bouml/hkl/131714.bodies | 592 +++++++++++++++++------------------- bouml/hkl/131842 | 26 +- bouml/hkl/131842.bodies | 194 ++++++------ bouml/hkl/131970 | 10 +- bouml/hkl/132098 | 2 +- bouml/hkl/132354 | 21 +-- bouml/hkl/132482 | 12 +- bouml/hkl/132482.bodies | 163 +++++----- bouml/hkl/132610 | 2 +- bouml/hkl/132610.bodies | 258 ++++++++-------- bouml/hkl/132738.bodies | 20 +- bouml/hkl/132866.bodies | 232 +++++++------- bouml/hkl/132994 | 8 +- bouml/hkl/132994.bodies | 260 ++++++++-------- bouml/hkl/133122 | 26 +- bouml/hkl/133122.bodies | 76 +++--- bouml/hkl/133250 | 38 ++-- bouml/hkl/133378 | 10 +- bouml/hkl/133378.bodies | 190 ++++++------ bouml/hkl/133506.bodies | 22 +- bouml/hkl/133634 | 38 ++-- bouml/hkl/133634.bodies | 296 +++++++++--------- bouml/hkl/133890.bodies | 6 +- bouml/hkl/134146 | 184 ++++++++--- bouml/hkl/134146.bodies | 288 +++++++++--------- bouml/hkl/134274.bodies | 30 +- bouml/hkl/134402.bodies | 314 ++++++++++---------- bouml/hkl/134786.bodies | 104 ++++---- bouml/hkl/135042.bodies | 98 +++--- bouml/hkl/135170.bodies | 42 ++-- bouml/hkl/135426.bodies | 116 ++++---- bouml/hkl/136194.bodies | 172 ++++++------ bouml/hkl/136322.bodies | 162 +++++----- bouml/hkl/136450.bodies | 116 ++++---- bouml/hkl/136578.bodies | 406 ++++++++++++------------ bouml/hkl/136706.bodies | 246 ++++++++-------- bouml/hkl/136834.bodies | 390 ++++++++++++------------ bouml/hkl/136962.bodies | 218 +++++++------- bouml/hkl/137090.bodies | 134 ++++---- bouml/hkl/138882.bodies | 58 ++-- bouml/hkl/139138.bodies | 220 +++++++------- bouml/hkl/139522.bodies | 58 ++-- bouml/hkl/139650.bodies | 68 ++-- bouml/hkl/139778.bodies | 64 ++-- bouml/hkl/139906.bodies | 66 ++-- bouml/hkl/140034.bodies | 64 ++-- bouml/hkl/140162.bodies | 18 +- bouml/hkl/140290.bodies | 16 +- bouml/hkl/140418.bodies | 12 +- bouml/hkl/142466.bodies | 42 ++-- bouml/hkl/142594.bodies | 460 ++++++++++++++-------------- bouml/hkl/142978.bodies | 218 +++++++------- bouml/hkl/143362.bodies | 70 +++--- bouml/hkl/143490.bodies | 6 +- bouml/hkl/143618.bodies | 24 +- bouml/hkl/143746.bodies | 32 +- bouml/hkl/143874.bodies | 34 +- bouml/hkl/144130.bodies | 26 +- bouml/hkl/144258.bodies | 34 +- bouml/hkl/144386.bodies | 46 ++-- bouml/hkl/145026.bodies | 134 ++++---- bouml/hkl/145282.bodies | 57 ++--- bouml/hkl/145410.bodies | 117 +++++++ bouml/hkl/2.session | 15 +- bouml/hkl/generation_settings | 17 +- bouml/hkl/hkl.prj | 679 +++++++++++++++++++++++++---------------- 98 files changed, 5774 insertions(+), 5463 deletions(-) commit 414ae42cd4a668395ea785316ce38c4fb4fb1aa5 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 5 21:58:21 2007 +0200 * start refactoring of the Axes (do not compile) TODO | 8 +- bouml/hkl/128002 | 2 +- bouml/hkl/128002.bodies | 298 ++++++++++---------- bouml/hkl/128060.bodies | 78 +++--- bouml/hkl/128182.bodies | 50 ++-- bouml/hkl/128188.diagram | 50 ++-- bouml/hkl/128310.bodies | 16 +- bouml/hkl/128514 | 2 +- bouml/hkl/128514.bodies | 356 +++++++++++----------- bouml/hkl/128642 | 2 +- bouml/hkl/128770 | 2 +- bouml/hkl/128770.bodies | 262 +++++++++--------- bouml/hkl/128898.bodies | 26 +- bouml/hkl/129154.bodies | 78 +++--- bouml/hkl/129282.bodies | 4 +- bouml/hkl/129410.bodies | 4 +- bouml/hkl/129538.bodies | 4 +- bouml/hkl/129666.bodies | 42 ++-- bouml/hkl/129794.bodies | 256 ++++++++-------- bouml/hkl/129922 | 2 +- bouml/hkl/129922.bodies | 22 +- bouml/hkl/130050.bodies | 94 +++--- bouml/hkl/130178.bodies | 76 +++--- bouml/hkl/130306.bodies | 272 +++++++++--------- bouml/hkl/131074 | 2 +- bouml/hkl/131074.bodies | 146 +++++----- bouml/hkl/131202 | 61 ---- bouml/hkl/131202.bodies | 30 +- bouml/hkl/131330.bodies | 132 +++++----- bouml/hkl/131330.diagram | 15 + bouml/hkl/131458.bodies | 140 +++++----- bouml/hkl/131458.diagram | 55 ++++ bouml/hkl/131586.bodies | 630 ++++++++++++++++++++-------------------- bouml/hkl/131714.bodies | 648 ++++++++++++++++++++-------------------- bouml/hkl/131842 | 2 +- bouml/hkl/131842.bodies | 184 ++++++------ bouml/hkl/131970 | 2 +- bouml/hkl/132098 | 2 +- bouml/hkl/132354 | 14 +- bouml/hkl/132482 | 2 +- bouml/hkl/132482.bodies | 148 +++++----- bouml/hkl/132610 | 2 +- bouml/hkl/132610.bodies | 286 +++++++++--------- bouml/hkl/132738.bodies | 20 +- bouml/hkl/132866.bodies | 208 +++++++------- bouml/hkl/132994 | 2 +- bouml/hkl/132994.bodies | 246 ++++++++-------- bouml/hkl/133122 | 2 +- bouml/hkl/133122.bodies | 78 +++--- bouml/hkl/133250 | 2 +- bouml/hkl/133378 | 2 +- bouml/hkl/133378.bodies | 210 +++++++------- bouml/hkl/133506.bodies | 22 +- bouml/hkl/133634 | 2 +- bouml/hkl/133634.bodies | 332 +++++++++++----------- bouml/hkl/133890.bodies | 6 +- bouml/hkl/134018 | 9 +- bouml/hkl/134146 | 273 +++++++++++++++++ bouml/hkl/134146.bodies | 302 ++++++++++---------- bouml/hkl/134274.bodies | 30 +- bouml/hkl/134402.bodies | 332 +++++++++++----------- bouml/hkl/134786.bodies | 104 ++++---- bouml/hkl/135042.bodies | 96 +++--- bouml/hkl/135170.bodies | 42 ++-- bouml/hkl/135426.bodies | 126 ++++---- bouml/hkl/136194.bodies | 178 ++++++------ bouml/hkl/136322.bodies | 168 ++++++------ bouml/hkl/136450.bodies | 116 ++++---- bouml/hkl/136578.bodies | 486 +++++++++++++++--------------- bouml/hkl/136706.bodies | 262 +++++++++--------- bouml/hkl/136834.bodies | 446 ++++++++++++++-------------- bouml/hkl/136962.bodies | 220 +++++++------- bouml/hkl/137090.bodies | 134 +++++----- bouml/hkl/138882.bodies | 58 ++-- bouml/hkl/139138.bodies | 238 ++++++++-------- bouml/hkl/139522.bodies | 58 ++-- bouml/hkl/139650.bodies | 68 +++--- bouml/hkl/139778.bodies | 64 ++-- bouml/hkl/139906.bodies | 66 ++-- bouml/hkl/140034.bodies | 64 ++-- bouml/hkl/140162.bodies | 18 +- bouml/hkl/140290.bodies | 16 +- bouml/hkl/140418.bodies | 12 +- bouml/hkl/142466.bodies | 42 ++-- bouml/hkl/142594.bodies | 496 ++++++++++++++++---------------- bouml/hkl/142978.bodies | 236 ++++++++-------- bouml/hkl/143362.bodies | 70 +++--- bouml/hkl/143490.bodies | 6 +- bouml/hkl/143618.bodies | 24 +- bouml/hkl/143746.bodies | 32 +- bouml/hkl/143874.bodies | 34 +- bouml/hkl/144130.bodies | 26 +- bouml/hkl/144258.bodies | 34 +- bouml/hkl/144386.bodies | 46 ++-- bouml/hkl/145026.bodies | 134 +++++----- bouml/hkl/145282.bodies | 41 +++ bouml/hkl/2.session | 17 +- bouml/hkl/generation_settings | 8 +- bouml/hkl/hkl.prj | 370 ++++++++++++++++------- src/SConscript | 1 + 100 files changed, 5852 insertions(+), 5390 deletions(-) commit 45d2357ae3f6311fe10716bc89413bf2bca35e27 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 5 17:11:08 2007 +0200 * now PseudoAxeEngineWithSample is working. bouml/hkl/128002 | 8 +- bouml/hkl/128002.bodies | 298 +++++++++--------- bouml/hkl/128060.bodies | 78 +++--- bouml/hkl/128182.bodies | 50 ++-- bouml/hkl/128310.bodies | 16 +- bouml/hkl/128514 | 8 +- bouml/hkl/128514.bodies | 356 ++++++++++---------- bouml/hkl/128514.diagram | 41 ++- bouml/hkl/128642 | 8 +- bouml/hkl/128642.diagram | 35 ++- bouml/hkl/128770 | 12 +- bouml/hkl/128770.bodies | 262 ++++++++-------- bouml/hkl/128770.diagram | 18 +- bouml/hkl/128898.bodies | 26 +- bouml/hkl/129154.bodies | 78 +++--- bouml/hkl/129282.bodies | 4 +- bouml/hkl/129410.bodies | 4 +- bouml/hkl/129538.bodies | 4 +- bouml/hkl/129666.bodies | 42 ++-- bouml/hkl/129794.bodies | 256 +++++++------- bouml/hkl/129922 | 10 +- bouml/hkl/129922.bodies | 22 +- bouml/hkl/130050.bodies | 86 +++--- bouml/hkl/130178.bodies | 76 +++--- bouml/hkl/130306.bodies | 272 ++++++++-------- bouml/hkl/130818.diagram | 31 ++- bouml/hkl/131074 | 10 +- bouml/hkl/131074.bodies | 146 ++++---- bouml/hkl/131202.bodies | 30 +- bouml/hkl/131330.bodies | 132 ++++---- bouml/hkl/131458.bodies | 140 ++++---- bouml/hkl/131586.bodies | 630 +++++++++++++++++----------------- bouml/hkl/131714.bodies | 648 ++++++++++++++++++------------------ bouml/hkl/131842 | 2 +- bouml/hkl/131842.bodies | 184 +++++----- bouml/hkl/131970 | 2 +- bouml/hkl/132098 | 10 +- bouml/hkl/132354 | 10 +- bouml/hkl/132482 | 10 +- bouml/hkl/132482.bodies | 148 ++++---- bouml/hkl/132610 | 10 +- bouml/hkl/132610.bodies | 286 ++++++++-------- bouml/hkl/132738.bodies | 20 +- bouml/hkl/132866.bodies | 208 ++++++------ bouml/hkl/132994 | 18 +- bouml/hkl/132994.bodies | 246 +++++++------- bouml/hkl/133122 | 2 +- bouml/hkl/133122.bodies | 78 +++--- bouml/hkl/133250 | 2 +- bouml/hkl/133378 | 22 +- bouml/hkl/133378.bodies | 210 ++++++------ bouml/hkl/133506.bodies | 22 +- bouml/hkl/133634 | 2 +- bouml/hkl/133634.bodies | 332 +++++++++--------- bouml/hkl/133762 | 22 +- bouml/hkl/133890.bodies | 6 +- bouml/hkl/134146.bodies | 302 +++++++++--------- bouml/hkl/134274.bodies | 30 +- bouml/hkl/134402.bodies | 332 +++++++++--------- bouml/hkl/134786.bodies | 104 +++--- bouml/hkl/135042.bodies | 96 +++--- bouml/hkl/135170.bodies | 42 ++-- bouml/hkl/135426.bodies | 126 ++++---- bouml/hkl/136194.bodies | 178 +++++----- bouml/hkl/136322.bodies | 168 +++++----- bouml/hkl/136450.bodies | 116 ++++---- bouml/hkl/136578.bodies | 488 ++++++++++++++-------------- bouml/hkl/136706.bodies | 262 ++++++++-------- bouml/hkl/136834.bodies | 446 +++++++++++++------------- bouml/hkl/136962.bodies | 220 ++++++------ bouml/hkl/137090.bodies | 134 ++++---- bouml/hkl/138882.bodies | 58 ++-- bouml/hkl/139138.bodies | 238 +++++++------- bouml/hkl/139522.bodies | 58 ++-- bouml/hkl/139650.bodies | 68 ++-- bouml/hkl/139778.bodies | 64 ++-- bouml/hkl/139906.bodies | 66 ++-- bouml/hkl/140034.bodies | 64 ++-- bouml/hkl/140162.bodies | 18 +- bouml/hkl/140290.bodies | 16 +- bouml/hkl/140418.bodies | 12 +- bouml/hkl/142466.bodies | 42 ++-- bouml/hkl/142594.bodies | 496 ++++++++++++++-------------- bouml/hkl/142978.bodies | 236 +++++++------- bouml/hkl/143362.bodies | 70 ++-- bouml/hkl/143490.bodies | 6 +- bouml/hkl/143618.bodies | 24 +- bouml/hkl/143746.bodies | 32 +- bouml/hkl/143874.bodies | 34 +- bouml/hkl/144130.bodies | 26 +- bouml/hkl/144258.bodies | 34 +- bouml/hkl/144386.bodies | 46 ++-- bouml/hkl/145026.bodies | 134 ++++---- bouml/hkl/2.session | 17 +- bouml/hkl/hkl.prj | 11 +- test/pseudoaxe_eulerian4C_test.cpp | 13 +- test/pseudoaxe_eulerian4C_test.h | 1 + test/pseudoaxe_eulerian6C_test.cpp | 12 +- test/pseudoaxe_eulerian6C_test.h | 1 + test/pseudoaxe_kappa4C_test.cpp | 12 +- test/pseudoaxe_kappa4C_test.h | 1 + test/pseudoaxe_kappa6C_test.cpp | 12 +- test/pseudoaxe_kappa6C_test.h | 1 + 103 files changed, 5354 insertions(+), 5302 deletions(-) commit 0eea12680d26b863d83a988588a2b589fcb38493 Author: Frédéric-Emmanuel PICCA Date: Tue Jun 5 08:14:49 2007 +0200 * start working on the PseudoAxeEngineWithSample (do not compile) bouml/hkl/128002 | 2 +- bouml/hkl/128002.bodies | 298 ++++++++++---------- bouml/hkl/128002.diagram | 52 ++-- bouml/hkl/128060.bodies | 78 +++--- bouml/hkl/128182.bodies | 50 ++-- bouml/hkl/128188.diagram | 112 +++++--- bouml/hkl/128310.bodies | 16 +- bouml/hkl/128386.diagram | 59 +++-- bouml/hkl/128514 | 2 +- bouml/hkl/128514.bodies | 356 +++++++++++----------- bouml/hkl/128642 | 2 +- bouml/hkl/128770 | 277 +++++++++++++++++- bouml/hkl/128770.bodies | 262 +++++++++--------- bouml/hkl/128770.diagram | 64 ++++- bouml/hkl/128898.bodies | 26 +- bouml/hkl/129154.bodies | 78 +++--- bouml/hkl/129282.bodies | 4 +- bouml/hkl/129410.bodies | 4 +- bouml/hkl/129538.bodies | 4 +- bouml/hkl/129666.bodies | 42 ++-- bouml/hkl/129794.bodies | 256 ++++++++-------- bouml/hkl/129922 | 3 +- bouml/hkl/129922.bodies | 22 +- bouml/hkl/129922.diagram | 20 +- bouml/hkl/130050.bodies | 86 +++--- bouml/hkl/130178.bodies | 76 +++--- bouml/hkl/130306.bodies | 272 +++++++++--------- bouml/hkl/130306.diagram | 44 ++- bouml/hkl/131074 | 2 +- bouml/hkl/131074.bodies | 146 +++++----- bouml/hkl/131202.bodies | 30 +- bouml/hkl/131202.diagram | 20 +- bouml/hkl/131330.bodies | 132 +++++----- bouml/hkl/131458.bodies | 140 +++++----- bouml/hkl/131586.bodies | 630 ++++++++++++++++++++-------------------- bouml/hkl/131714.bodies | 648 ++++++++++++++++++++-------------------- bouml/hkl/131842 | 13 +- bouml/hkl/131842.bodies | 184 ++++++------ bouml/hkl/131970 | 29 +- bouml/hkl/132098 | 3 +- bouml/hkl/132354 | 15 +- bouml/hkl/132482 | 2 +- bouml/hkl/132482.bodies | 148 +++++----- bouml/hkl/132610 | 2 +- bouml/hkl/132610.bodies | 286 +++++++++--------- bouml/hkl/132738.bodies | 20 +- bouml/hkl/132866.bodies | 208 +++++++------- bouml/hkl/132994 | 10 +- bouml/hkl/132994.bodies | 246 ++++++++-------- bouml/hkl/133122 | 10 +- bouml/hkl/133122.bodies | 78 +++--- bouml/hkl/133250 | 10 +- bouml/hkl/133378 | 2 +- bouml/hkl/133378.bodies | 210 +++++++------- bouml/hkl/133506.bodies | 22 +- bouml/hkl/133634 | 29 +- bouml/hkl/133634.bodies | 332 +++++++++++----------- bouml/hkl/133890.bodies | 6 +- bouml/hkl/134018 | 85 ++++++ bouml/hkl/134146.bodies | 302 ++++++++++---------- bouml/hkl/134274.bodies | 30 +- bouml/hkl/134402.bodies | 332 +++++++++++----------- bouml/hkl/134786.bodies | 104 ++++---- bouml/hkl/135042.bodies | 96 +++--- bouml/hkl/135170.bodies | 42 ++-- bouml/hkl/135426.bodies | 126 ++++---- bouml/hkl/136194.bodies | 178 ++++++------ bouml/hkl/136322.bodies | 168 ++++++------ bouml/hkl/136450.bodies | 116 ++++---- bouml/hkl/136578.bodies | 486 +++++++++++++++--------------- bouml/hkl/136706.bodies | 262 +++++++++--------- bouml/hkl/136834.bodies | 445 ++++++++++++++-------------- bouml/hkl/136962.bodies | 220 +++++++------- bouml/hkl/137090.bodies | 134 +++++----- bouml/hkl/138882.bodies | 58 ++-- bouml/hkl/139138.bodies | 238 ++++++++-------- bouml/hkl/139522.bodies | 58 ++-- bouml/hkl/139650.bodies | 70 +++--- bouml/hkl/139778.bodies | 66 ++-- bouml/hkl/139906.bodies | 68 +++--- bouml/hkl/140034.bodies | 66 ++-- bouml/hkl/140162.bodies | 18 +- bouml/hkl/140290.bodies | 16 +- bouml/hkl/140418.bodies | 12 +- bouml/hkl/142466.bodies | 42 ++-- bouml/hkl/142594.bodies | 496 ++++++++++++++++---------------- bouml/hkl/142978.bodies | 236 ++++++++-------- bouml/hkl/143362.bodies | 70 +++--- bouml/hkl/143490.bodies | 6 +- bouml/hkl/143618.bodies | 24 +- bouml/hkl/143746.bodies | 32 +- bouml/hkl/143874.bodies | 34 +- bouml/hkl/144130.bodies | 26 +- bouml/hkl/144258.bodies | 34 +- bouml/hkl/144386.bodies | 46 ++-- bouml/hkl/145026.bodies | 81 +++++ bouml/hkl/2.session | 13 +- bouml/hkl/generation_settings | 18 +- bouml/hkl/hkl.prj | 146 ++++++---- 99 files changed, 5926 insertions(+), 5354 deletions(-) commit bbf71d0a147d47de061f811eee0236d3e9068ae5 Author: Frédéric-Emmanuel PICCA Date: Fri Jun 1 17:18:45 2007 +0200 * now eulerian6C::pseudoAxeEngine::Tth is working. bouml/hkl/133378 | 2 +- bouml/hkl/136834.bodies | 81 ++++++++++++++++++++++++++++++---------------- bouml/hkl/hkl.prj | 4 +- 3 files changed, 56 insertions(+), 31 deletions(-) commit 014738530b905c08706f30f7456e0c3e46b84d24 Author: Frédéric-Emmanuel PICCA Date: Fri Jun 1 15:34:12 2007 +0200 * now parameters of the pseudoAxes can be used. src/gui/diffractometer2.glade | 54 +++++++++++++++++---- src/gui/hklwindow.cpp | 102 +++++++++++++++++++++++++++++++++++++++- src/gui/hklwindow.h | 8 +++ src/gui/modelcolumns.h | 15 ++++++ 4 files changed, 165 insertions(+), 14 deletions(-) commit 32f0f6df9bf2955f7a4b74ef552b1a3d28809d68 Author: Frédéric-Emmanuel PICCA Date: Thu May 31 16:59:09 2007 +0200 * rewamp the gui interface to be space econome. bouml/hkl/2.session | 7 +- bouml/hkl/hkl.prj | 4 +- src/gui/diffractometer2.glade | 217 ++++++++++----------- src/gui/hklwindow.cpp | 430 +++++++++++++++++++++++++++++++---------- src/gui/hklwindow.h | 38 +++- src/gui/modelcolumns.h | 47 +++++ 6 files changed, 514 insertions(+), 229 deletions(-) commit 0d73aa8f2597164d365bc185e3ede943c7955eb0 Author: Frédéric-Emmanuel PICCA Date: Fri May 25 17:13:00 2007 +0200 * now the gui is working bouml/hkl/135042.bodies | 2 + bouml/hkl/2.session | 5 +- bouml/hkl/hkl.prj | 19 +++- src/gui/hklwindow.cpp | 292 ++++++++++++++++++--------------------- src/gui/hklwindow.h | 2 +- src/gui/main.cpp | 15 +- src/gui/pseudoaxespinbutton.cpp | 12 +- 7 files changed, 174 insertions(+), 173 deletions(-) commit d53537a617822c9f154e54bf7d59bb62e8bd4fe9 Author: Frédéric-Emmanuel PICCA Date: Thu May 24 16:56:23 2007 +0200 * update the hkl::eulerian6C::pseudoAxeEngine::Tth documentation bouml/hkl/133378 | 77 ++++++++++++++++++----------------------- bouml/hkl/2.session | 10 ++---- bouml/hkl/generation_settings | 1 + bouml/hkl/hkl.prj | 14 ++++---- doc/Doxyfile | 4 +- 5 files changed, 47 insertions(+), 59 deletions(-) commit 4e8bb16e9bad46b9e8bb3fb5256199064a75f4f3 Author: Frédéric-Emmanuel PICCA Date: Fri May 11 17:00:36 2007 +0200 * refactoring of the code to be diffractometer directory closer (waiting for bouml to have a relativ path to a specific directory) bouml/hkl/128002 | 1070 +------------------------------ bouml/hkl/128002.bodies | 298 +++++----- bouml/hkl/128060.bodies | 78 ++-- bouml/hkl/128130 | 474 -------------- bouml/hkl/128182.bodies | 60 +- bouml/hkl/128258 | 382 ----------- bouml/hkl/128258.diagram | 20 +- bouml/hkl/128310.bodies | 18 +- bouml/hkl/128386 | 476 -------------- bouml/hkl/128386.diagram | 79 ++- bouml/hkl/128514 | 42 +- bouml/hkl/128514.bodies | 356 +++++----- bouml/hkl/128514.diagram | 45 ++- bouml/hkl/128642 | 42 +- bouml/hkl/128642.diagram | 22 +- bouml/hkl/128770 | 55 +- bouml/hkl/128770.bodies | 262 ++++---- bouml/hkl/128898 | 30 - bouml/hkl/128898.bodies | 26 +- bouml/hkl/129026 | 708 -------------------- bouml/hkl/129154 | 30 - bouml/hkl/129154.bodies | 80 ++-- bouml/hkl/129282 | 456 ------------- bouml/hkl/129282.bodies | 4 +- bouml/hkl/129410 | 30 - bouml/hkl/129410.bodies | 4 +- bouml/hkl/129538 | 473 -------------- bouml/hkl/129538.bodies | 4 +- bouml/hkl/129666 | 692 -------------------- bouml/hkl/129666.bodies | 42 +- bouml/hkl/129794 | 137 ---- bouml/hkl/129794.bodies | 256 ++++---- bouml/hkl/129922 | 53 +- bouml/hkl/129922.bodies | 22 +- bouml/hkl/130050 | 30 - bouml/hkl/130050.bodies | 86 ++-- bouml/hkl/130050.diagram | 47 ++- bouml/hkl/130178 | 498 -------------- bouml/hkl/130178.bodies | 76 ++-- bouml/hkl/130178.diagram | 12 +- bouml/hkl/130306 | 30 - bouml/hkl/130306.bodies | 272 ++++---- bouml/hkl/130306.diagram | 98 +++- bouml/hkl/130434 | 234 ------- bouml/hkl/130562 | 30 - bouml/hkl/130562.diagram | 76 ++- bouml/hkl/130690 | 213 ------ bouml/hkl/130690.diagram | 27 + bouml/hkl/130818 | 213 ------ bouml/hkl/130818.diagram | 34 + bouml/hkl/130946 | 213 ------ bouml/hkl/130946.diagram | 73 +++ bouml/hkl/131074 | 44 +- bouml/hkl/131074.bodies | 146 +++--- bouml/hkl/131074.diagram | 76 +++ bouml/hkl/131202 | 225 +------ bouml/hkl/131202.bodies | 30 +- bouml/hkl/131202.diagram | 41 ++ bouml/hkl/131330 | 165 ----- bouml/hkl/131330.bodies | 140 ++-- bouml/hkl/131458 | 238 ------- bouml/hkl/131458.bodies | 140 ++-- bouml/hkl/131586 | 227 ------- bouml/hkl/131586.bodies | 632 +++++++++--------- bouml/hkl/131714 | 33 + bouml/hkl/131714.bodies | 648 ++++++++++---------- bouml/hkl/131842 | 574 +++++++++++++++++ bouml/hkl/131842.bodies | 202 +++--- bouml/hkl/131970 | 490 ++++++++++++++ bouml/hkl/132098 | 509 +++++++++++++++ bouml/hkl/132226 | 30 + bouml/hkl/132354 | 505 +++++++++++++++ bouml/hkl/132482 | 714 +++++++++++++++++++++ bouml/hkl/132482.bodies | 166 +++--- bouml/hkl/132610 | 238 +++++++ bouml/hkl/132610.bodies | 304 +++++----- bouml/hkl/132738 | 33 + bouml/hkl/132738.bodies | 20 +- bouml/hkl/132866 | 208 ++++++ bouml/hkl/132866.bodies | 226 ++++---- bouml/hkl/132994 | 517 +++++++++++++++ bouml/hkl/132994.bodies | 264 ++++---- bouml/hkl/133122 | 642 ++++++++++++++++++ bouml/hkl/133122.bodies | 78 ++-- bouml/hkl/133250 | 743 +++++++++++++++++++++ bouml/hkl/133378 | 706 ++++++++++++++++++++ bouml/hkl/133378.bodies | 210 +++--- bouml/hkl/133506 | 207 ++++++ bouml/hkl/133506.bodies | 22 +- bouml/hkl/133634 | 726 +++++++++++++++++++++ bouml/hkl/133634.bodies | 332 +++++----- bouml/hkl/133762 | 183 ++++++ bouml/hkl/133890 | 207 ++++++ bouml/hkl/133890.bodies | 8 +- bouml/hkl/134146.bodies | 302 +++++----- bouml/hkl/134274.bodies | 32 +- bouml/hkl/134402.bodies | 334 +++++----- bouml/hkl/134786.bodies | 104 ++-- bouml/hkl/135042.bodies | 92 ++-- bouml/hkl/135170.bodies | 42 +- bouml/hkl/135426.bodies | 126 ++-- bouml/hkl/136194.bodies | 180 +++--- bouml/hkl/136322.bodies | 170 +++--- bouml/hkl/136450.bodies | 118 ++-- bouml/hkl/136578.bodies | 488 +++++++------- bouml/hkl/136706.bodies | 264 ++++---- bouml/hkl/136834.bodies | 410 ++++++------ bouml/hkl/136962.bodies | 222 ++++---- bouml/hkl/137090.bodies | 134 ++-- bouml/hkl/138882.bodies | 58 +- bouml/hkl/139138.bodies | 241 ++++---- bouml/hkl/139522.bodies | 58 +- bouml/hkl/139650.bodies | 70 +- bouml/hkl/139778.bodies | 66 +- bouml/hkl/139906.bodies | 68 +- bouml/hkl/140034.bodies | 66 +- bouml/hkl/140162.bodies | 18 +- bouml/hkl/140290.bodies | 16 +- bouml/hkl/140418.bodies | 12 +- bouml/hkl/142466.bodies | 42 +- bouml/hkl/142594.bodies | 496 +++++++------- bouml/hkl/142978.bodies | 242 ++++---- bouml/hkl/143362.bodies | 70 +- bouml/hkl/143490.bodies | 6 +- bouml/hkl/143618.bodies | 30 +- bouml/hkl/143746.bodies | 38 +- bouml/hkl/143874.bodies | 40 +- bouml/hkl/144130.bodies | 32 +- bouml/hkl/144258.bodies | 40 +- bouml/hkl/144386.bodies | 48 +- bouml/hkl/2.session | 10 +- bouml/hkl/generation_settings | 1 + bouml/hkl/hkl.prj | 454 ++++++++----- src/SConscript | 32 +- test/affinement_simplex_test.cpp | 110 ++-- test/affinement_simplex_test.h | 9 +- test/diffractometer_eulerian4C_test.cpp | 4 +- test/diffractometer_eulerian4C_test.h | 2 +- test/diffractometer_kappa4C_test.cpp | 80 ++-- test/diffractometer_kappa4C_test.h | 4 +- test/diffractometer_kappa6C_test.cpp | 108 ++-- test/diffractometer_kappa6C_test.h | 4 +- test/diffractometer_twoC_test.cpp | 136 ++-- test/diffractometer_twoC_test.h | 7 +- test/geometry_eulerian4C_test.cpp | 34 +- test/geometry_eulerian4C_test.h | 4 +- test/geometry_eulerian6C_test.cpp | 215 +++---- test/geometry_eulerian6C_test.h | 6 +- test/geometry_kappa4C_test.cpp | 176 +++--- test/geometry_kappa4C_test.h | 6 +- test/geometry_kappa6C_test.cpp | 144 ++-- test/geometry_kappa6C_test.h | 6 +- test/geometry_twoC_test.cpp | 120 ++-- test/geometry_twoC_test.h | 8 +- test/mode_eulerian4C_test.cpp | 100 ++-- test/mode_eulerian4C_test.h | 4 +- test/mode_kappa4C_test.cpp | 192 +++--- test/mode_kappa4C_test.h | 7 +- test/mode_kappa6C_test.cpp | 236 ++++---- test/mode_kappa6C_test.h | 7 +- test/mode_twoC_test.cpp | 84 ++-- test/mode_twoC_test.h | 8 +- test/pseudoaxe_eulerian4C_test.cpp | 380 ++++++------ test/pseudoaxe_eulerian4C_test.h | 7 +- test/pseudoaxe_eulerian6C_test.cpp | 362 ++++++------ test/pseudoaxe_eulerian6C_test.h | 8 +- test/pseudoaxe_kappa4C_test.cpp | 528 ++++++++-------- test/pseudoaxe_kappa4C_test.h | 10 +- test/pseudoaxe_kappa6C_test.cpp | 516 ++++++++-------- test/pseudoaxe_kappa6C_test.h | 14 +- test/pseudoaxe_twoC_test.cpp | 180 +++--- test/pseudoaxe_twoC_test.h | 8 +- test/reflection_test.cpp | 2 +- test/reflection_test.h | 4 +- test/reflectionlist_test.h | 4 +- test/sample_test.h | 4 +- test/samplelist_test.h | 4 +- 177 files changed, 15337 insertions(+), 14724 deletions(-) commit cc030b9807c4c5c8f184931fba900fddc9f3ba17 Author: Frédéric-Emmanuel PICCA Date: Thu Mar 15 14:41:47 2007 +0100 * add the PseudoAxeList::printToStream bouml/hkl/134786.bodies | 2 ++ bouml/hkl/135042.bodies | 9 +++++++++ bouml/hkl/2.session | 6 ++---- bouml/hkl/hkl.prj | 31 ++++++++++++++++++++++++++++++- 4 files changed, 43 insertions(+), 5 deletions(-) commit e8fb75079abc87d88bda61824cd7af2ffd337f74 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 13 10:53:19 2007 +0100 * add the tests for PseudoAxe::set_write_from_read bouml/hkl/128770 | 4 +- bouml/hkl/129026 | 8 +- bouml/hkl/129282 | 4 +- bouml/hkl/129538 | 4 +- bouml/hkl/129666 | 6 +- bouml/hkl/134786.bodies | 4 +- bouml/hkl/135042.bodies | 4 +- bouml/hkl/136194.bodies | 6 +- bouml/hkl/136322.bodies | 6 +- bouml/hkl/136450.bodies | 5 +- bouml/hkl/136578.bodies | 5 +- bouml/hkl/136706.bodies | 9 +- bouml/hkl/136834.bodies | 6 +- bouml/hkl/136962.bodies | 6 +- bouml/hkl/137090.bodies | 4 +- bouml/hkl/2.session | 7 +- bouml/hkl/hkl.prj | 8 +- config-linux2.py | 1 + test/pseudoaxe_eulerian4C_test.cpp | 111 +++++++++++++++++++++- test/pseudoaxe_eulerian6C_test.cpp | 91 ++++++++++++++++++ test/pseudoaxe_kappa4C_test.cpp | 182 ++++++++++++++++++++++++++++++++++++ test/pseudoaxe_kappa6C_test.cpp | 180 +++++++++++++++++++++++++++++++++++ test/pseudoaxe_twoC_test.cpp | 66 +++++++++++++ 23 files changed, 681 insertions(+), 46 deletions(-) commit 54ac249a1b1c3b1d5fac5567fdeb03c2169d6d12 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 12 16:17:16 2007 +0100 * add an operation to update the write part of pseudoAxes from the read part. * add an operation to PseudoAxe to get the read and the write part. bouml/hkl/128770 | 15 ++++++++++- bouml/hkl/129026 | 41 +++++++++++++++++++++++++++++- bouml/hkl/129282 | 15 ++++++++++- bouml/hkl/129538 | 15 ++++++++++- bouml/hkl/129666 | 28 ++++++++++++++++++++- bouml/hkl/134786.bodies | 20 ++++++++++++-- bouml/hkl/135042.bodies | 8 ++++++ bouml/hkl/136194.bodies | 2 + bouml/hkl/136322.bodies | 2 + bouml/hkl/136450.bodies | 2 + bouml/hkl/136578.bodies | 2 + bouml/hkl/136706.bodies | 4 +++ bouml/hkl/136834.bodies | 2 + bouml/hkl/136962.bodies | 2 + bouml/hkl/137090.bodies | 2 + bouml/hkl/2.session | 9 +----- bouml/hkl/hkl.prj | 63 ++++++++++++++++++++++++++++++++++++++++++++-- 17 files changed, 214 insertions(+), 18 deletions(-) commit 498f72e2739f18798bbb9c71203062ad732ed98b Author: Frédéric-Emmanuel PICCA Date: Tue Mar 6 15:38:38 2007 +0100 * check that all derived PseudoAxes of "psi" are working. bouml/hkl/2.session | 4 ++-- bouml/hkl/hkl.prj | 4 ++-- test/SConscript | 12 ++++++------ test/pseudoaxe_eulerian4C_test.cpp | 1 - 4 files changed, 10 insertions(+), 11 deletions(-) commit 3301696015b8ad67169a936b895d8186790e9d85 Author: Frédéric-Emmanuel PICCA Date: Tue Mar 6 15:32:55 2007 +0100 * now the "psi" pseudoAxis is working with a desorientation parameter. bouml/hkl/128002.bodies | 4 +++- bouml/hkl/129282 | 2 +- bouml/hkl/136578.bodies | 31 +++++++++++++++++++++++-------- bouml/hkl/2.session | 5 +++-- bouml/hkl/hkl.prj | 2 +- test/pseudoaxe_eulerian4C_test.cpp | 11 ++++------- 6 files changed, 35 insertions(+), 20 deletions(-) commit 9a0c3c99dec075d87d983e65d24c5ec622bdfb13 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 5 17:43:43 2007 +0100 * works on the Psi pseudoAxe. bouml/hkl/128386.diagram | 41 ++++++++++++++++++++++------------- bouml/hkl/129282 | 11 ++++++++- bouml/hkl/136578.bodies | 18 ++++++++++++--- bouml/hkl/2.session | 8 +++--- bouml/hkl/hkl.prj | 6 ++-- config-linux2.py | 1 - test/SConscript | 12 +++++----- test/pseudoaxe_eulerian4C_test.cpp | 23 ++++++++++++-------- 8 files changed, 77 insertions(+), 43 deletions(-) commit 238b299f071a228c4d137caddf9858e96af7f0b9 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 5 12:05:38 2007 +0100 * add the CVS Makefile.vc src/Makefile.vc | 85 +++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 57 insertions(+), 28 deletions(-) commit 68d5ecba8136571f1ff688b370a4fad7607da095 Author: Frédéric-Emmanuel PICCA Date: Mon Mar 5 11:06:36 2007 +0100 * set _current = NULL in ModeList constructor. * add the relatedAxes in the PseudoAxeEngines bouml/hkl/128130 | 2 +- bouml/hkl/128770 | 2 +- bouml/hkl/129026 | 2 +- bouml/hkl/129282 | 3 +- bouml/hkl/129538 | 2 +- bouml/hkl/129666 | 2 +- bouml/hkl/129922 | 2 +- bouml/hkl/136194.bodies | 4 ++ bouml/hkl/136322.bodies | 4 ++ bouml/hkl/136450.bodies | 3 ++ bouml/hkl/136578.bodies | 7 ++++ bouml/hkl/136706.bodies | 5 +++ bouml/hkl/136834.bodies | 79 ++++++++++++++++++++++++---------------------- bouml/hkl/136962.bodies | 5 ++- bouml/hkl/137090.bodies | 9 +++++ bouml/hkl/140418.bodies | 2 +- bouml/hkl/2.session | 5 +-- bouml/hkl/hkl.prj | 47 ++++++++++++++------------- 18 files changed, 110 insertions(+), 75 deletions(-) commit 0e7fe107e916139c88f9bc7e118cab95f5b29889 Author: Frédéric-Emmanuel PICCA Date: Tue Feb 27 15:44:22 2007 +0100 * small bug before 2.3.0 bouml/hkl/128258 | 2 +- bouml/hkl/134786.bodies | 2 ++ bouml/hkl/2.session | 7 ++++--- bouml/hkl/hkl.prj | 25 ++++++++++++++++++++++--- 4 files changed, 29 insertions(+), 7 deletions(-) commit f5eed0256c2fd59edcb708e19c3862445d9f843e Author: Frédéric-Emmanuel PICCA Date: Mon Feb 26 13:50:34 2007 +0100 * remove a bug in the eulerian4C diffractometer bouml/hkl/130178 | 2 +- bouml/hkl/131458 | 6 ++++-- bouml/hkl/131586 | 2 +- bouml/hkl/143746.bodies | 6 +++--- bouml/hkl/2.session | 6 ++++-- bouml/hkl/hkl.prj | 2 +- 6 files changed, 14 insertions(+), 10 deletions(-) commit 45bfdbda543d11511fc68eaf050493868e1cddab Author: Frédéric-Emmanuel PICCA Date: Mon Feb 26 13:40:31 2007 +0100 * remove unnecessary files. bouml/hkl/2.session | 5 +- include/hkl/enums.h | 38 --- include/hkl/myvector.h | 605 ------------------------------------- src/HKLException.cpp | 126 -------- src/diffractometer_eulerian4C.cpp | 42 --- 5 files changed, 2 insertions(+), 814 deletions(-) commit 5d2f339fa282de88d8ecc84a1311da92edd8c40f Author: Frédéric-Emmanuel PICCA Date: Mon Feb 26 13:13:15 2007 +0100 * Clean the SampleList bouml/hkl/128188.diagram | 4 ++-- bouml/hkl/134402.bodies | 18 ++---------------- bouml/hkl/2.session | 5 +++-- bouml/hkl/hkl.prj | 25 +++---------------------- 4 files changed, 10 insertions(+), 42 deletions(-) commit d85184ac45f855736bf4882a35955eb324e95b99 Author: Frederic-Emmanuel PICCA Date: Thu Feb 22 17:42:34 2007 +0100 * now all the library is on bouml except the test suite. bouml/hkl/128188.diagram | 14 +- bouml/hkl/129922.diagram | 62 + bouml/hkl/130050.diagram | 13 + bouml/hkl/130178.diagram | 13 + bouml/hkl/130306.diagram | 13 + bouml/hkl/130562.diagram | 20 + bouml/hkl/130818 | 2 +- bouml/hkl/131074.bodies | 20 +- bouml/hkl/131202 | 246 ++++ bouml/hkl/131330 | 165 +++ bouml/hkl/131458 | 236 ++++ bouml/hkl/131586 | 227 ++++ bouml/hkl/131714.bodies | 2 + bouml/hkl/134402.bodies | 27 +- bouml/hkl/143362.bodies | 41 + bouml/hkl/143490.bodies | 6 + bouml/hkl/143618.bodies | 15 + bouml/hkl/143746.bodies | 19 + bouml/hkl/143874.bodies | 20 + bouml/hkl/144130.bodies | 16 + bouml/hkl/144258.bodies | 20 + bouml/hkl/144386.bodies | 25 + bouml/hkl/2.session | 10 +- bouml/hkl/hkl.prj | 2002 +++++++++++++++++++++---------- include/hkl/diffractometer.h | 306 ----- include/hkl/diffractometer_eulerian4C.h | 145 --- include/hkl/diffractometer_eulerian6C.h | 74 -- include/hkl/diffractometer_kappa4C.h | 137 --- include/hkl/diffractometer_kappa6C.h | 42 - include/hkl/diffractometer_twoC.h | 74 -- include/hkl/diffractometerfactory.h | 40 - src/diffractometer.cpp | 68 -- src/diffractometer_eulerian6C.cpp | 35 - src/diffractometer_kappa4C.cpp | 43 - src/diffractometer_kappa6C.cpp | 39 - src/diffractometer_twoC.cpp | 37 - src/diffractometerfactory.cpp | 46 - test/diffractometer_eulerian4C_test.cpp | 14 +- test/diffractometer_kappa4C_test.cpp | 27 +- test/diffractometer_kappa6C_test.cpp | 22 +- test/diffractometer_twoC_test.cpp | 14 +- 41 files changed, 2641 insertions(+), 1756 deletions(-) commit 09463a8c9eb9f8f5219cdfdb52137a244de64703 Author: Frederic-Emmanuel PICCA Date: Wed Feb 21 15:14:46 2007 +0100 * Add the affinement part to bouml. bouml/hkl/128188.diagram | 39 ++- bouml/hkl/129282 | 5 +- bouml/hkl/129794.diagram | 13 + bouml/hkl/131074 | 182 +++++++++ bouml/hkl/142466.bodies | 25 ++ bouml/hkl/142594.bodies | 282 ++++++++++++++ bouml/hkl/142978.bodies | 137 +++++++ bouml/hkl/2.session | 9 +- bouml/hkl/cpp_includes | 3 + bouml/hkl/hkl.prj | 767 +++++++++++++++++++++++++++++++++++++- include/hkl/affinement.h | 172 --------- include/hkl/affinementlist.h | 102 ----- src/affinement.cpp | 48 --- src/affinement_simplex.cpp | 313 ---------------- src/affinementlist.cpp | 134 ------- test/affinement_simplex_test.cpp | 10 +- test/affinement_simplex_test.h | 2 +- 17 files changed, 1443 insertions(+), 800 deletions(-) commit 1f547b2a818b33dff1fe378289732461d4caf463 Author: Frederic-Emmanuel PICCA Date: Tue Feb 20 14:30:17 2007 +0100 * remove a bug to compile with VC6 bouml/hkl/129922 | 4 ++-- bouml/hkl/130946 | 2 +- bouml/hkl/2.session | 2 +- bouml/hkl/hkl.prj | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) commit 94dd848f6507d898fb69823db99397fa6668c668 Author: Frederic-Emmanuel PICCA Date: Tue Feb 20 14:11:37 2007 +0100 * add all Modes to bouml bouml/hkl/128770 | 2 +- bouml/hkl/128898.diagram | 33 ++ bouml/hkl/129026.diagram | 66 ++++ bouml/hkl/129154.diagram | 24 ++ bouml/hkl/129282.diagram | 15 + bouml/hkl/129410.diagram | 41 +++ bouml/hkl/129538 | 2 +- bouml/hkl/129538.diagram | 41 +++ bouml/hkl/129666.diagram | 41 +++ bouml/hkl/129922 | 191 +++++++++++ bouml/hkl/130050 | 30 ++ bouml/hkl/130178 | 498 +++++++++++++++++++++++++++ bouml/hkl/130306 | 30 ++ bouml/hkl/130434 | 234 +++++++++++++ bouml/hkl/130562 | 30 ++ bouml/hkl/130690 | 213 ++++++++++++ bouml/hkl/130818 | 213 ++++++++++++ bouml/hkl/130946 | 213 ++++++++++++ bouml/hkl/138882.bodies | 32 ++ bouml/hkl/139138.bodies | 137 ++++++++ bouml/hkl/139522.bodies | 31 ++ bouml/hkl/139650.bodies | 38 ++ bouml/hkl/139778.bodies | 36 ++ bouml/hkl/139906.bodies | 37 ++ bouml/hkl/140034.bodies | 36 ++ bouml/hkl/140162.bodies | 11 + bouml/hkl/140290.bodies | 10 + bouml/hkl/140418.bodies | 10 + bouml/hkl/2.session | 11 +- bouml/hkl/hkl.prj | 685 ++++++++++++++++++++++++++++++++++++- include/hkl/derivedmode.h | 56 --- include/hkl/mode.h | 162 --------- include/hkl/mode_eulerian4C.h | 112 ------ include/hkl/mode_eulerian6C.h | 74 ---- include/hkl/mode_kappa4C.h | 31 -- include/hkl/mode_kappa6C.h | 31 -- include/hkl/mode_twoC.h | 58 ---- include/hkl/modelist.h | 102 ------ src/SConscript | 1 - src/diffractometer_eulerian6C.cpp | 10 +- src/diffractometer_kappa4C.cpp | 10 +- src/diffractometer_kappa6C.cpp | 10 +- src/mode.cpp | 14 - src/mode_eulerian4C.cpp | 268 --------------- src/mode_eulerian6C.cpp | 438 ------------------------ src/mode_twoC.cpp | 68 ---- src/modelist.cpp | 134 -------- test/mode_kappa4C_test.cpp | 20 +- test/mode_kappa6C_test.cpp | 20 +- 49 files changed, 3015 insertions(+), 1595 deletions(-) commit 0ac640f75188e070b51dea8b298a9e5f502fc67b Author: Frederic-Emmanuel PICCA Date: Mon Feb 19 11:39:25 2007 +0100 * remove some VC6 bugs test/diffractometer_kappa6C_test.cpp | 12 ++++++------ test/pseudoaxe_twoC_test.cpp | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) commit b7aed1e90fb1943b08d7fddac590d91da7249521 Author: Frederic-Emmanuel PICCA Date: Mon Feb 19 11:19:11 2007 +0100 * remove all warnings after adding the -Wall SConstruct | 6 +- bouml/hkl/128002 | 41 +- bouml/hkl/128002.bodies | 4 - bouml/hkl/128130 | 15 +- bouml/hkl/128258 | 15 +- bouml/hkl/128386 | 15 +- bouml/hkl/128514 | 19 +- bouml/hkl/128770 | 2 +- bouml/hkl/129026 | 7 +- bouml/hkl/129538 | 2 +- bouml/hkl/129666 | 6 +- bouml/hkl/131714.bodies | 1 - bouml/hkl/133378.bodies | 1 - bouml/hkl/135426.bodies | 21 +- bouml/hkl/hkl.prj | 2566 +++++++++++++++++----------------- config-linux2.py | 1 + include/hkl/affinementlist.h | 2 +- include/hkl/diffractometer.h | 4 +- include/hkl/modelist.h | 4 +- src/affinementlist.cpp | 1 - src/modelist.cpp | 1 - test/affinement_simplex_test.cpp | 1 - test/diffractometer_kappa4C_test.cpp | 6 - test/diffractometer_kappa6C_test.cpp | 6 - test/geometry_kappa6C_test.cpp | 1 - test/mode_kappa4C_test.cpp | 1 - test/mode_kappa6C_test.cpp | 1 - test/pseudoaxe_eulerian6C_test.cpp | 2 +- test/pseudoaxe_kappa4C_test.cpp | 2 +- test/pseudoaxe_kappa6C_test.cpp | 2 +- test/reflectionlist_test.cpp | 2 +- 31 files changed, 1449 insertions(+), 1309 deletions(-) commit 3cfe4a2431fd6c436fbcc3a3c7ef756631a0c759 Author: Frederic-Emmanuel PICCA Date: Mon Feb 19 10:03:03 2007 +0100 * add all the pseudoAxes to bouml. bouml/hkl/128130.diagram | 74 ++ bouml/hkl/128188.diagram | 8 +- bouml/hkl/128258.diagram | 31 + bouml/hkl/128386.diagram | 64 ++ bouml/hkl/128514.diagram | 13 + bouml/hkl/128642.diagram | 20 + bouml/hkl/128770 | 348 ++++++++ bouml/hkl/128770.diagram | 31 + bouml/hkl/128898 | 30 + bouml/hkl/129026 | 670 +++++++++++++++ bouml/hkl/129154 | 30 + bouml/hkl/129282 | 436 ++++++++++ bouml/hkl/129410 | 30 + bouml/hkl/129538 | 460 +++++++++++ bouml/hkl/129666 | 666 +++++++++++++++ bouml/hkl/129794 | 137 ++++ bouml/hkl/130050.bodies | 4 +- bouml/hkl/134786.bodies | 51 ++ bouml/hkl/135042.bodies | 42 + bouml/hkl/135170.bodies | 32 + bouml/hkl/135426.bodies | 72 ++ bouml/hkl/136194.bodies | 90 ++ bouml/hkl/136322.bodies | 85 ++ bouml/hkl/136450.bodies | 61 ++ bouml/hkl/136578.bodies | 219 +++++ bouml/hkl/136706.bodies | 130 +++ bouml/hkl/136834.bodies | 207 +++++ bouml/hkl/136962.bodies | 113 +++ bouml/hkl/137090.bodies | 70 ++ bouml/hkl/2.session | 16 +- bouml/hkl/hkl.prj | 1298 +++++++++++++++++++++++++++++- config-linux2.py | 1 - include/hkl/derivedpseudoaxeengine.h | 199 ----- include/hkl/pseudoaxe.h | 150 ---- include/hkl/pseudoaxeengine.h | 229 ------ include/hkl/pseudoaxeengine_eulerian4C.h | 148 ---- include/hkl/pseudoaxeengine_eulerian6C.h | 107 --- include/hkl/pseudoaxeengine_kappa4C.h | 76 -- include/hkl/pseudoaxeengine_kappa6C.h | 46 -- include/hkl/pseudoaxeengine_twoC.h | 113 --- include/hkl/pseudoaxeenginelist.h | 82 -- include/hkl/pseudoaxelist.h | 78 -- src/diffractometer.cpp | 1 + src/diffractometer_eulerian4C.cpp | 8 +- src/diffractometer_eulerian6C.cpp | 6 +- src/diffractometer_kappa4C.cpp | 10 +- src/diffractometer_kappa6C.cpp | 8 +- src/diffractometer_twoC.cpp | 6 +- src/pseudoaxe.cpp | 105 --- src/pseudoaxeengine.cpp | 13 - src/pseudoaxeengine_eulerian4C.cpp | 277 ------- src/pseudoaxeengine_eulerian6C.cpp | 343 -------- src/pseudoaxeengine_kappa4C.cpp | 158 ---- src/pseudoaxeengine_twoC.cpp | 347 -------- src/pseudoaxeenginelist.cpp | 105 --- src/pseudoaxelist.cpp | 112 --- test/diffractometer_kappa6C_test.cpp | 1 + test/pseudoaxe_eulerian4C_test.cpp | 86 +- test/pseudoaxe_eulerian6C_test.cpp | 74 +- test/pseudoaxe_kappa4C_test.cpp | 154 ++-- test/pseudoaxe_kappa6C_test.cpp | 136 ++-- test/pseudoaxe_twoC_test.cpp | 51 +- 62 files changed, 5773 insertions(+), 2995 deletions(-) commit e28e873c44b57a6b41b8e54f50359219ddedcc4a Author: Frederic-Emmanuel PICCA Date: Tue Feb 13 11:37:29 2007 +0100 * add the SampleList and SampleFactory to bouml bouml/hkl/128188.diagram | 30 +- bouml/hkl/128642 | 2 +- bouml/hkl/134274.bodies | 18 + bouml/hkl/134402.bodies | 186 +++++++++ bouml/hkl/2.session | 9 +- bouml/hkl/hkl.prj | 692 +++++++++++++++++++++++++++++-- include/hkl/samplefactory.h | 50 --- include/hkl/samplelist.h | 124 ------ src/samplefactory.cpp | 40 -- src/samplelist.cpp | 190 --------- test/diffractometer_eulerian4C_test.cpp | 2 +- test/diffractometer_kappa6C_test.cpp | 2 +- test/diffractometer_twoC_test.cpp | 2 +- test/samplelist_test.cpp | 2 +- 14 files changed, 884 insertions(+), 465 deletions(-) commit 184df38ad347947957ed19ee7891983803cb8d05 Author: Frederic-Emmanuel PICCA Date: Fri Feb 9 18:09:17 2007 +0100 * add the reflection and part of the sample to bouml (memory leak for now) bouml/hkl/128188.diagram | 56 ++- bouml/hkl/128514 | 172 +++++ bouml/hkl/128642 | 419 ++++++++++++ bouml/hkl/133122.bodies | 48 ++ bouml/hkl/133378.bodies | 115 ++++ bouml/hkl/133506.bodies | 13 + bouml/hkl/133634.bodies | 182 ++++++ bouml/hkl/133890.bodies | 6 + bouml/hkl/134146.bodies | 168 +++++ bouml/hkl/2.session | 12 +- bouml/hkl/hkl.prj | 1190 +++++++++++++++++++++++++++++++++- include/hkl/diffractometerfactory.h | 1 + include/hkl/enums.h | 6 +- include/hkl/reflection.h | 190 ------ include/hkl/reflection_monocrystal.h | 61 -- include/hkl/reflectionfactory.h | 42 -- include/hkl/reflectionlist.h | 144 ---- include/hkl/sample.h | 146 ----- include/hkl/sample_monocrystal.h | 131 ---- src/reflection.cpp | 97 --- src/reflection_monocrystal.cpp | 36 - src/reflectionfactory.cpp | 32 - src/reflectionlist.cpp | 237 ------- src/sample.cpp | 150 ----- src/sample_monocrystal.cpp | 227 ------- src/samplelist.cpp | 2 +- test/affinement_simplex_test.cpp | 1 + test/mode_twoC_test.cpp | 1 + test/sample_test.cpp | 1 + 29 files changed, 2377 insertions(+), 1509 deletions(-) commit 636facbf7228f02179feefd4726a8459649805e2 Author: Frederic-Emmanuel PICCA Date: Fri Feb 9 13:52:05 2007 +0100 * add all Geometries to bouml bouml/hkl/128002 | 1200 ++++++++++++++++++++++++++++++ bouml/hkl/128002.diagram | 39 + bouml/hkl/128130 | 461 ++++++++++++ bouml/hkl/128258 | 369 +++++++++ bouml/hkl/128386 | 463 ++++++++++++ bouml/hkl/131842.bodies | 110 +++ bouml/hkl/132482.bodies | 88 +++ bouml/hkl/132610.bodies | 161 ++++ bouml/hkl/132738.bodies | 14 + bouml/hkl/132866.bodies | 126 ++++ bouml/hkl/132994.bodies | 145 ++++ bouml/hkl/2.session | 19 +- bouml/hkl/hkl.prj | 4 +- include/hkl/geometry_eulerian4C.h | 226 ------ include/hkl/geometry_eulerian6C.h | 232 ------ include/hkl/geometry_kappa.h | 73 -- include/hkl/geometry_kappa4C.h | 185 ----- include/hkl/geometry_kappa6C.h | 239 ------ include/hkl/geometry_twoC.h | 167 ----- include/hkl/pseudoaxeengine_eulerian4C.h | 8 +- include/hkl/pseudoaxeengine_eulerian6C.h | 8 +- src/geometry_eulerian4C.cpp | 183 ----- src/geometry_eulerian6C.cpp | 154 ---- src/geometry_kappa.cpp | 50 -- src/geometry_kappa4C.cpp | 201 ----- src/geometry_kappa6C.cpp | 174 ----- src/geometry_twoC.cpp | 132 ---- src/pseudoaxeengine_eulerian4C.cpp | 14 +- src/pseudoaxeengine_kappa4C.cpp | 6 +- src/pseudoaxeengine_twoC.cpp | 10 +- test/pseudoaxe_eulerian4C_test.cpp | 16 +- test/pseudoaxe_kappa4C_test.cpp | 16 +- test/pseudoaxe_twoC_test.cpp | 16 +- 33 files changed, 3229 insertions(+), 2080 deletions(-) commit 13d5574254374a5f914ec68290e4e877be191c5c Author: Frederic-Emmanuel PICCA Date: Wed Feb 7 13:44:14 2007 +0100 * add the portability.h file, manage with bouml Geometry bouml/hkl/128002.diagram | 10 + bouml/hkl/131330.bodies | 1 + bouml/hkl/131714.bodies | 343 ++++ bouml/hkl/2.session | 11 +- bouml/hkl/hkl.prj | 3107 ++++++++++++++++++++++--------------- include/hkl/geometry.h | 237 --- include/hkl/portability.h | 19 - src/geometry.cpp | 433 ------ src/reflection.cpp | 2 +- src/sample.cpp | 2 +- test/geometry_eulerian4C_test.cpp | 10 +- test/geometry_eulerian6C_test.cpp | 14 +- test/geometry_kappa4C_test.cpp | 10 +- test/geometry_kappa6C_test.cpp | 14 +- test/geometry_twoC_test.cpp | 6 +- 15 files changed, 2230 insertions(+), 1989 deletions(-) commit 7b1dcbae546d0d073e0cb7a5330a44216738837a Author: Frederic-Emmanuel PICCA Date: Wed Feb 7 10:53:21 2007 +0100 * add the Lattice class to bouml bouml/hkl/128002.diagram | 3 + bouml/hkl/128188.diagram | 2 + bouml/hkl/131458.bodies | 2 +- bouml/hkl/131586.bodies | 342 ++++++++++++++++++++++++ bouml/hkl/2.session | 13 +- bouml/hkl/hkl.prj | 645 +++++++++++++++++++++++++++++++++++++++++++++- include/hkl/lattice.h | 259 ------------------- src/lattice.cpp | 391 ---------------------------- 8 files changed, 997 insertions(+), 660 deletions(-) commit 4881f3f69b3f0f7c87ac35d50e818baa380a94cd Author: Frederic-Emmanuel PICCA Date: Tue Feb 6 14:31:10 2007 +0100 * aFitParameterList and Source are bouml managed. bouml/hkl/128002.diagram | 29 ++ bouml/hkl/128188.diagram | 24 +- bouml/hkl/131330.bodies | 77 +++++ bouml/hkl/131458.bodies | 80 +++++ bouml/hkl/2.session | 7 +- bouml/hkl/hkl.prj | 666 +++++++++++++++++++++++++++++++++++++++- include/hkl/fitparameterlist.h | 160 ---------- include/hkl/source.h | 147 --------- src/fitparameterlist.cpp | 91 ------ src/source.cpp | 133 -------- 10 files changed, 872 insertions(+), 542 deletions(-) commit 2e1a3a48cadd744b63eb96c7e2a3b2ce7f8ee634 Author: Frederic-Emmanuel PICCA Date: Mon Feb 5 16:16:43 2007 +0100 * HKLObject an ParameterList are bouml managed. bouml/hkl/128188.diagram | 21 +- bouml/hkl/131074.bodies | 76 ++++ bouml/hkl/131202.bodies | 21 ++ bouml/hkl/2.session | 12 +- bouml/hkl/hkl.prj | 827 ++++++++++++++++++++++++++++++++----------- include/hkl/hklobject.h | 82 ----- include/hkl/parameterlist.h | 130 ------- src/hklobject.cpp | 47 --- src/parameterlist.cpp | 104 ------ 9 files changed, 753 insertions(+), 567 deletions(-) commit 50b9494bd0e6d702a65f813a3fac5325c56e0e2e Author: Frederic-Emmanuel PICCA Date: Mon Feb 5 11:43:00 2007 +0100 * now Axe, FitParameter and MyMap are bouml managed bouml/hkl/128002.bodies | 6 - bouml/hkl/128060.bodies | 4 - bouml/hkl/128188.diagram | 85 +- bouml/hkl/128514.bodies | 12 - bouml/hkl/128770.bodies | 7 - bouml/hkl/129154.bodies | 11 +- bouml/hkl/129794.bodies | 19 +- bouml/hkl/130050.bodies | 53 + bouml/hkl/130178.bodies | 50 + bouml/hkl/130306.bodies | 145 ++ bouml/hkl/2.session | 14 +- bouml/hkl/generation_settings | 10 +- bouml/hkl/hkl.prj | 3509 ++++++++++++++++++++++++----------------- include/hkl/axe.h | 127 -- include/hkl/fitparameter.h | 140 -- include/hkl/mymap.h | 614 ------- src/axe.cpp | 90 -- src/fitparameter.cpp | 74 - 18 files changed, 2378 insertions(+), 2592 deletions(-) commit 68ccd8720ac48484b25d20f162f8919be47e1d84 Author: Frederic-Emmanuel PICCA Date: Tue Jan 30 17:22:30 2007 +0100 * Parameter is now bouml managed. bouml/hkl/128188.diagram | 39 +++++++---- bouml/hkl/129922.bodies | 16 ++++ bouml/hkl/2.session | 4 +- bouml/hkl/hkl.prj | 180 +++++++++++++++++++++++++++++++++++++++++++++- include/hkl/parameter.h | 73 ------------------- src/parameter.cpp | 45 ------------ 6 files changed, 222 insertions(+), 135 deletions(-) commit e490365fbaba4b6b3a80b1a6c229329e509426ee Author: Frederic-Emmanuel PICCA Date: Tue Jan 30 16:25:05 2007 +0100 * Range is bouml managed bouml/hkl/128060.bodies | 2 + bouml/hkl/128188.diagram | 29 ++- bouml/hkl/129794.bodies | 150 +++++++++++ bouml/hkl/2.session | 7 +- bouml/hkl/hkl.prj | 637 ++++++++++++++++++++++++++++++++++++++++++++++ include/hkl/range.h | 183 ------------- src/range.cpp | 314 ----------------------- 7 files changed, 818 insertions(+), 504 deletions(-) commit 2b5c38a07b61633fad9e58b762645ced3bf2aa35 Author: Frederic-Emmanuel PICCA Date: Tue Jan 30 14:57:46 2007 +0100 * Observer and Observable is bouml managed. bouml/hkl/128188.diagram | 12 +- bouml/hkl/129282.bodies | 4 +- bouml/hkl/129538.bodies | 5 + bouml/hkl/129666.bodies | 29 ++ bouml/hkl/2.session | 5 +- bouml/hkl/hkl.prj | 1093 +++++++++++++++++++++++++++------------------- include/hkl/observer.h | 90 ---- src/observer.cpp | 70 --- 8 files changed, 705 insertions(+), 603 deletions(-) commit 568483fbc7888a3e68e01cf040eb62496bc51ead Author: Frederic-Emmanuel PICCA Date: Tue Jan 30 14:05:55 2007 +0100 Value is bouml managed bouml/hkl/128060.bodies | 19 +++-- bouml/hkl/128188.diagram | 2 +- bouml/hkl/2.session | 6 +- bouml/hkl/hkl.prj | 133 +++++++++++++++++++++++-------- include/hkl/value.h | 199 ---------------------------------------------- src/value.cpp | 129 ------------------------------ 6 files changed, 113 insertions(+), 375 deletions(-) commit aa975171751766a64a6a1fd7ca52d2886c6053b2 Author: Frederic-Emmanuel PICCA Date: Tue Jan 30 11:54:11 2007 +0100 * Object is bouml managed. bouml/hkl/128188.diagram | 27 ++- bouml/hkl/129154.bodies | 54 +++++ bouml/hkl/129282.bodies | 5 + bouml/hkl/129410.bodies | 5 + bouml/hkl/2.session | 7 +- bouml/hkl/generation_settings | 2 +- bouml/hkl/hkl.prj | 528 ++++++++++++++++++++++++++++++++++++++++- include/hkl/affinement.h | 2 +- include/hkl/object.h | 192 --------------- src/affinement.cpp | 4 +- src/affinement_simplex.cpp | 2 +- src/object.cpp | 95 -------- src/sample.cpp | 2 +- test/axe_test.cpp | 8 +- test/hklobject_test.cpp | 4 +- test/object_test.cpp | 9 +- test/sample_test.cpp | 2 +- 17 files changed, 637 insertions(+), 311 deletions(-) commit 838a48d419dc5ec791d6a0d79be902cd0cf1d9e3 Author: Frederic-Emmanuel PICCA Date: Mon Jan 29 18:19:00 2007 +0100 * MyString is now bouml managed. bouml/hkl/128188.diagram | 10 ++ bouml/hkl/128898.bodies | 16 ++++ bouml/hkl/2.session | 7 +- bouml/hkl/hkl.prj | 199 +++++++++++++++++++++++++++++++++++++++++++- include/hkl/HKLException.h | 74 ---------------- include/hkl/mystring.h | 51 ----------- src/mystring.cpp | 51 ----------- 7 files changed, 227 insertions(+), 181 deletions(-) commit 62aa9de3bb9a1c4d5d11614380c3a399a5381551 Author: Frederic-Emmanuel PICCA Date: Mon Jan 29 17:16:10 2007 +0100 * now convenience and Quaternion are bouml managed. bouml/hkl/128188.diagram | 21 +- bouml/hkl/128770.bodies | 164 +++++++++++ bouml/hkl/2.session | 6 +- bouml/hkl/hkl.prj | 697 ++++++++++++++++++++++++++++++++++++++++++++- include/hkl/convenience.h | 37 --- include/hkl/quaternion.h | 160 ----------- src/convenience.cpp | 55 ---- src/geometry.cpp | 4 +- src/quaternion.cpp | 224 --------------- test/quaternion_test.cpp | 40 ++-- 10 files changed, 897 insertions(+), 511 deletions(-) commit ef0240a554f14f2a3b263ddcf2f8f2247f88a504 Author: Frederic-Emmanuel PICCA Date: Mon Jan 29 15:34:18 2007 +0100 * HKLException svector smatrix are bouml managed bouml/hkl/128002.bodies | 75 +++++- bouml/hkl/128188.diagram | 14 +- bouml/hkl/128514.bodies | 183 +++++++++++++ bouml/hkl/2.session | 9 +- bouml/hkl/hkl.prj | 389 ++++++++++++++++++++++++++- bouml/hkl/stereotypes | 2 +- include/hkl/axe.h | 1 - include/hkl/constants.h | 28 -- include/hkl/geometry.h | 4 - include/hkl/lattice.h | 2 +- include/hkl/mode.h | 10 +- include/hkl/quaternion.h | 4 +- include/hkl/source.h | 1 - include/hkl/svecmat.h | 475 ---------------------------------- include/hkl/value.h | 2 +- src/SConscript | 1 + src/convenience.cpp | 14 +- src/fitparameterlist.cpp | 1 + src/geometry.cpp | 2 +- src/geometry_eulerian4C.cpp | 8 +- src/geometry_kappa4C.cpp | 1 - src/geometry_twoC.cpp | 24 +- src/lattice.cpp | 8 +- src/mode_eulerian6C.cpp | 34 ++-- src/pseudoaxeengine_eulerian4C.cpp | 14 +- src/pseudoaxeengine_twoC.cpp | 4 +- src/quaternion.cpp | 12 +- src/reflection.cpp | 2 +- src/smatrix.cpp | 310 ---------------------- src/source.cpp | 4 +- src/svector.cpp | 288 -------------------- src/value.cpp | 3 +- test/axe_test.cpp | 12 +- test/axe_test.h | 1 - test/diffractometer_kappa4C_test.cpp | 1 - test/diffractometer_kappa6C_test.cpp | 1 - test/geometry_eulerian4C_test.cpp | 5 +- test/geometry_eulerian6C_test.cpp | 29 +- test/geometry_kappa4C_test.cpp | 13 +- test/geometry_kappa6C_test.cpp | 5 +- test/geometry_twoC_test.cpp | 11 +- test/lattice_test.h | 1 - test/mode_eulerian4C_test.cpp | 30 +- test/mode_kappa4C_test.cpp | 30 +- test/mode_kappa6C_test.cpp | 30 +- test/mode_twoC_test.h | 1 - test/pseudoaxe_eulerian4C_test.cpp | 4 +- test/pseudoaxe_eulerian4C_test.h | 1 - test/pseudoaxe_eulerian6C_test.cpp | 8 +- test/pseudoaxe_eulerian6C_test.h | 1 - test/pseudoaxe_kappa4C_test.cpp | 17 +- test/pseudoaxe_kappa6C_test.cpp | 15 +- test/pseudoaxe_twoC_test.h | 1 - test/quaternion_test.cpp | 24 +- test/quaternion_test.h | 1 - test/reflection_test.cpp | 6 +- test/reflection_test.h | 1 - test/sample_test.cpp | 2 +- test/source_test.h | 2 - test/svecmat_test.cpp | 40 +-- test/svecmat_test.h | 5 +- test/value_test.cpp | 4 +- 62 files changed, 843 insertions(+), 1388 deletions(-) commit 008cf44e81d92b9317a8229c92bb846537d52339 Author: Frederic-Emmanuel PICCA Date: Mon Jan 29 10:32:03 2007 +0100 test of profilling with valgrind config-linux2.py | 1 - include/hkl/portability.h | 2 +- test/SConscript | 10 +++++----- 3 files changed, 6 insertions(+), 7 deletions(-) commit 529450d746bc50af97cf7db3cb8629ed04e0aaeb Author: Frédéric-Emmanuel PICCA Date: Sun Jan 28 12:04:56 2007 +0100 * 1st part of the bouml transition bouml/hkl/128002.bodies | 138 ++++ bouml/hkl/128060.bodies | 56 ++ bouml/hkl/128182.bodies | 40 ++ bouml/hkl/128188.diagram | 28 + bouml/hkl/128310.bodies | 11 + bouml/hkl/128514.bodies | 21 + bouml/hkl/2.session | 8 + bouml/hkl/cpp_includes | 19 + bouml/hkl/generation_settings | 222 ++++++ bouml/hkl/hkl.prj | 1549 +++++++++++++++++++++++++++++++++++++++++ bouml/hkl/idl_includes | 1 + bouml/hkl/java_imports | 1 + bouml/hkl/stereotypes | 54 ++ bouml/hkl/tools | 20 + include/hkl/HKLException.h | 280 ++------ src/HKLException.cpp | 154 ++--- src/SConscript | 1 - src/svector.cpp | 574 ++++++++-------- test/geometry_test.h | 2 + test/lattice_test.h | 2 + test/reflectionlist_test.h | 2 + 21 files changed, 2575 insertions(+), 608 deletions(-) commit 04bd3b04a2e8f7c015f34f066e8a044d0e3149c0 Author: Frederic-Emmanuel PICCA Date: Thu Jan 25 10:40:58 2007 +0100 * now the gui is working. src/gui/hklwindow.cpp | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) commit 563f72742a6438e1d396d2d55aeaafa1897a4786 Author: Frederic-Emmanuel PICCA Date: Wed Jan 24 15:02:34 2007 +0100 * update the uml diagrammes. * clean up the code. * add the NEWS file NEWS | 69 + TODO | 65 +- config-linux2.py | 1 + doc/uml/hkl.dia | 5973 +++++++++++++++++++++++++--------------- doc/uml/next_hkl.dia | 4542 +++++++++++++++++++++--------- include/hkl/derivedmode.h | 3 +- include/hkl/fitparameterlist.h | 66 +- include/hkl/parameterlist.h | 56 +- include/hkl/pseudoaxe.h | 14 - include/hkl/pseudoaxelist.h | 17 - include/hkl/reflection.h | 24 +- include/hkl/samplelist.h | 1 - src/pseudoaxe.cpp | 14 - src/pseudoaxelist.cpp | 29 - 14 files changed, 7146 insertions(+), 3728 deletions(-) commit 1ccff1d7f69f8b2dceb5c8238e22625101c1e1a8 Author: Frederic-Emmanuel PICCA Date: Wed Jan 24 09:49:58 2007 +0100 * use astyle to format the code. include/hkl/pseudoaxe.h | 22 +++++++++++----------- include/hkl/pseudoaxeengine.h | 20 ++++++++++---------- include/hkl/pseudoaxeengine_eulerian4C.h | 6 +++--- include/hkl/pseudoaxelist.h | 2 +- test/pseudoaxe_kappa6C_test.cpp | 2 +- 5 files changed, 26 insertions(+), 26 deletions(-) commit 6d4da713ff94bfe9e4a3d864c972d29b085c4bee Author: Frederic-Emmanuel PICCA Date: Mon Jan 22 14:01:58 2007 +0100 * update the documentation * remove some memory problem causing computation errors in the win32 port. * clean up the pseudoAxeEngine code. include/hkl/affinementlist.h | 2 +- include/hkl/axe.h | 2 +- include/hkl/derivedpseudoaxe.h | 220 -------------------- include/hkl/derivedpseudoaxeengine.h | 7 +- include/hkl/modelist.h | 2 +- include/hkl/pseudoaxe.h | 79 +++++++- include/hkl/pseudoaxeengine.h | 42 ++++- include/hkl/pseudoaxeengine_eulerian4C.h | 23 ++- include/hkl/pseudoaxeengine_eulerian6C.h | 14 +- include/hkl/pseudoaxeengine_kappa4C.h | 20 +- include/hkl/pseudoaxeengine_kappa6C.h | 2 +- include/hkl/pseudoaxeengine_twoC.h | 20 +- include/hkl/pseudoaxeenginelist.h | 15 +- include/hkl/pseudoaxelist.h | 6 + include/hkl/reflectionlist.h | 2 +- include/hkl/samplelist.h | 2 +- src/pseudoaxe_kappa4C.cpp | 325 ------------------------------ src/pseudoaxe_twoC.cpp | 261 ------------------------ src/pseudoaxeengine_eulerian4C.cpp | 4 - src/pseudoaxeengine_eulerian6C.cpp | 4 +- src/pseudoaxeengine_twoC.cpp | 20 +-- test/SConscript | 1 + test/pseudoaxe_eulerian4C_test.cpp | 25 ++- test/pseudoaxe_eulerian6C_test.cpp | 10 + test/pseudoaxe_kappa4C_test.cpp | 20 ++ test/pseudoaxe_kappa6C_test.cpp | 16 ++ test/pseudoaxe_twoC_test.cpp | 10 + 27 files changed, 261 insertions(+), 893 deletions(-) commit 59c84357baaaf7a5eebea2641e4206e870be2f3a Author: Frederic-Emmanuel PICCA Date: Fri Jan 19 14:37:53 2007 +0100 * update diffractometers with the PseudoAxeEngine include/hkl/diffractometer.h | 6 +++--- include/hkl/diffractometer_kappa4C.h | 2 -- include/hkl/diffractometer_kappa6C.h | 2 -- include/hkl/pseudoaxe.h | 3 +++ src/SConscript | 6 +++--- src/diffractometer.cpp | 8 ++++---- src/diffractometer_eulerian4C.cpp | 22 +++++++++++----------- src/diffractometer_eulerian6C.cpp | 20 ++++++++++---------- src/diffractometer_kappa4C.cpp | 34 +++++++++++++--------------------- src/diffractometer_kappa6C.cpp | 28 ++++++++++------------------ src/diffractometer_twoC.cpp | 14 +++++++------- src/pseudoaxe.cpp | 3 ++- test/SConscript | 8 ++++---- test/diffractometer_kappa4C_test.cpp | 10 +++++----- test/diffractometer_kappa6C_test.cpp | 10 +++++----- 15 files changed, 80 insertions(+), 96 deletions(-) commit c571ef78c48aafbf50b8e48f03266b6d2ef2a15d Author: Frederic-Emmanuel PICCA Date: Fri Jan 19 13:57:51 2007 +0100 * add the PseudoAxeEngineList class include/hkl/pseudoaxeengine.h | 9 ++-- include/hkl/pseudoaxeenginelist.h | 75 ++++++++++++++++++++++++++ include/hkl/pseudoaxelist.h | 2 + src/SConscript | 1 + src/pseudoaxeenginelist.cpp | 105 +++++++++++++++++++++++++++++++++++++ src/pseudoaxelist.cpp | 6 ++ 6 files changed, 194 insertions(+), 4 deletions(-) commit 5778cc415731c45d99683c788ae9c7726f2e2adb Author: Frederic-Emmanuel PICCA Date: Thu Jan 18 18:28:24 2007 +0100 * now all pseudoaxeengine seems to work include/hkl/derivedpseudoaxeengine.h | 8 +- include/hkl/pseudoaxe_kappa4C.h | 116 ----------------------------- include/hkl/pseudoaxe_kappa6C.h | 49 ------------ src/pseudoaxeengine_eulerian4C.cpp | 136 +++++++++++++++++----------------- src/pseudoaxeengine_kappa4C.cpp | 2 + src/pseudoaxeengine_twoC.cpp | 52 +++++++------- test/SConscript | 10 +- test/pseudoaxe_twoC_test.cpp | 2 +- 8 files changed, 106 insertions(+), 269 deletions(-) commit b638af06a4923a993d4d0999626de8751929b360 Author: Frederic-Emmanuel PICCA Date: Thu Jan 18 18:25:07 2007 +0100 * pseudoaxe_kappa6C -> pseudoaxeengine_kappa6C include/hkl/pseudoaxeengine_kappa6C.h | 8 +++++--- test/SConscript | 4 ++-- test/pseudoaxe_kappa6C_test.cpp | 28 +++++++++++++++++----------- test/pseudoaxe_kappa6C_test.h | 2 +- 4 files changed, 25 insertions(+), 17 deletions(-) commit 31ae60f90fca7d49f6ffff723afd72956030603f Author: Frederic-Emmanuel PICCA Date: Thu Jan 18 18:15:05 2007 +0100 * pseudoaxe_eulerian6C -> pseudoaxeengine_eulerian6C include/hkl/pseudoaxe_eulerian6C.h | 101 --------- include/hkl/pseudoaxeengine_eulerian6C.h | 107 ++++++++++ src/SConscript | 3 +- src/pseudoaxe_eulerian6C.cpp | 323 ---------------------------- src/pseudoaxeengine_eulerian6C.cpp | 341 ++++++++++++++++++++++++++++++ test/SConscript | 4 +- test/pseudoaxe_eulerian6C_test.cpp | 13 +- test/pseudoaxe_eulerian6C_test.h | 2 +- 8 files changed, 460 insertions(+), 434 deletions(-) commit 55424bddf60b7a448df6fef42ad9e23b7b78a5bd Author: Frederic-Emmanuel PICCA Date: Thu Jan 18 17:29:10 2007 +0100 * pseudoaxe_kappa4C -> pseudoaxeengine_kappa4C include/hkl/pseudoaxeengine_kappa4C.h | 27 +++++++++++--- src/pseudoaxeengine_kappa4C.cpp | 64 ++++++++++++++++++--------------- test/SConscript | 4 +- test/pseudoaxe_kappa4C_test.cpp | 31 ++++++++++------ test/pseudoaxe_kappa4C_test.h | 2 +- 5 files changed, 79 insertions(+), 49 deletions(-) commit d263ca5dde243fd04049b6ab7ab3205698f1fecc Author: Frederic-Emmanuel PICCA Date: Thu Jan 18 16:58:19 2007 +0100 * pseudoaxe_eulerian4C -> pseudoaxeengine_eulerian4C include/hkl/derivedpseudoaxeengine.h | 13 ++- include/hkl/pseudoaxe.h | 1 + include/hkl/pseudoaxe_eulerian4C.h | 134 -------------- include/hkl/pseudoaxeengine_eulerian4C.h | 141 +++++++++++++++ src/HKLException.cpp | 2 +- src/SConscript | 3 +- src/pseudoaxe.cpp | 8 +- src/pseudoaxe_eulerian4C.cpp | 247 -------------------------- src/pseudoaxeengine_eulerian4C.cpp | 281 ++++++++++++++++++++++++++++++ test/SConscript | 4 +- test/pseudoaxe_eulerian4C_test.cpp | 16 +- test/pseudoaxe_eulerian4C_test.h | 2 +- 12 files changed, 456 insertions(+), 396 deletions(-) commit 232ddefd7cb9ad0b620a755cba3e9c02f6ccb2d5 Author: Frederic-Emmanuel PICCA Date: Thu Jan 18 14:19:17 2007 +0100 * pseudoAxe_twoC -> pseudoAxeEngine_twoC include/hkl/pseudoaxe.h | 245 ++++--------------------- include/hkl/pseudoaxe_twoC.h | 92 --------- include/hkl/pseudoaxeengine.h | 9 +- include/hkl/pseudoaxeengine_twoC.h | 113 ++++++++++++ include/hkl/pseudomultiaxe.h | 97 ---------- src/SConscript | 17 +- src/pseudoaxe.cpp | 93 +++++----- src/pseudoaxeengine_twoC.cpp | 355 ++++++++++++++++++++++++++++++++++++ src/pseudomultiaxe.cpp | 112 ----------- test/SConscript | 6 +- test/pseudoaxe_twoC_test.cpp | 13 +- test/pseudoaxe_twoC_test.h | 2 +- 12 files changed, 580 insertions(+), 574 deletions(-) commit 3fc071e226f160b6f7be9062bce2de9795fea6e1 Author: Frederic-Emmanuel PICCA Date: Mon Jan 15 17:47:27 2007 +0100 * remove a memory leak in the PseudoAxeEngine class. doc/uml/next_hkl.dia | 364 ++++++++++++++-------------------- include/hkl/pseudoaxeengine.h | 2 + src/diffractometer_kappa6C.cpp | 2 + src/pseudoaxeengine.cpp | 3 + src/pseudoaxeengine_kappa4C.cpp | 3 - test/diffractometer_kappa4C_test.cpp | 4 - test/diffractometer_kappa6C_test.cpp | 14 ++- 7 files changed, 167 insertions(+), 225 deletions(-) commit ae54470262416bec21952c8a5a91a6b17d064353 Author: Frederic-Emmanuel PICCA Date: Mon Jan 15 16:43:59 2007 +0100 * put the right eulerian <-> kappa conversion in the PseudoAxeEngine_kappa4C include/hkl/diffractometer_kappa4C.h | 2 +- src/pseudoaxeengine_kappa4C.cpp | 6 +++--- test/diffractometer_kappa4C_test.cpp | 16 +++++++++++++++- 3 files changed, 19 insertions(+), 5 deletions(-) commit 0f10d45ac763753bdf817b01ac021d978008630c Author: Frédéric-Emmanuel PICCA Date: Sun Jan 14 17:43:51 2007 +0100 * add the DerivedPseudoAxeEngine doc/uml/next_hkl.dia | 236 +++++++++++---------------------- include/hkl/derivedpseudoaxeengine.h | 193 +++++++++++++++++++++++++++ include/hkl/diffractometer_kappa4C.h | 2 +- include/hkl/diffractometer_kappa6C.h | 3 + include/hkl/pseudoaxeengine.h | 39 +++--- include/hkl/pseudoaxeengine_kappa4C.h | 7 + include/hkl/pseudoaxeengine_kappa6C.h | 44 ++++++ include/hkl/pseudomultiaxe.h | 5 +- src/diffractometer_eulerian6C.cpp | 4 +- src/diffractometer_kappa6C.cpp | 4 + src/geometry.cpp | 2 +- src/geometry_eulerian4C.cpp | 5 +- src/mode_eulerian6C.cpp | 24 ++-- src/pseudoaxe.cpp | 18 ++-- src/pseudoaxeengine.cpp | 4 +- src/pseudoaxeengine_kappa4C.cpp | 79 +++++++----- src/pseudomultiaxe.cpp | 13 +- src/samplelist.cpp | 2 +- src/smatrix.cpp | 10 +- src/svector.cpp | 4 +- test/SConscript | 2 +- test/diffractometer_kappa4C_test.cpp | 11 +- test/diffractometer_kappa6C_test.cpp | 32 +++++ test/diffractometer_kappa6C_test.h | 2 + 24 files changed, 478 insertions(+), 267 deletions(-) commit 0bd1c2e4bdc0a1b1de5ea86c2220bb509de348e4 Author: Frederic-Emmanuel PICCA Date: Thu Jan 11 18:14:24 2007 +0100 * work on the pseudoAxeEngine (in progress) config-linux2.py | 1 - doc/uml/next_hkl.dia | 886 ++++++++++++++++++---------- include/hkl/diffractometer_kappa4C.h | 6 +- include/hkl/pseudoaxeengine.h | 200 +++++++ include/hkl/pseudoaxeengine_kappa4C.h | 52 ++ include/hkl/pseudomultiaxe.h | 27 +- include/hkl/pseudomultiaxeengine.h | 254 -------- include/hkl/pseudomultiaxeengine_kappa4C.h | 52 -- src/SConscript | 4 +- src/diffractometer_kappa4C.cpp | 10 +- src/pseudoaxeengine.cpp | 10 + src/pseudoaxeengine_kappa4C.cpp | 138 +++++ src/pseudomultiaxe.cpp | 24 +- src/pseudomultiaxeengine.cpp | 62 -- src/pseudomultiaxeengine_kappa4C.cpp | 133 ----- test/diffractometer_kappa4C_test.cpp | 6 +- 16 files changed, 986 insertions(+), 879 deletions(-) commit 75a57cb3218148b3b03242ced00db1acbe071bae Author: Frederic-Emmanuel PICCA Date: Wed Jan 10 18:03:40 2007 +0100 begin of the pseudoAxes refactoring config-linux2.py | 1 + include/hkl/derivedpseudoaxe.h | 18 +- include/hkl/diffractometer_kappa4C.h | 3 + include/hkl/pseudoaxe.h | 6 +- include/hkl/pseudomultiaxe.h | 109 ++++++++++++ include/hkl/pseudomultiaxeengine.h | 254 ++++++++++++++++++++++++++++ include/hkl/pseudomultiaxeengine_kappa4C.h | 52 ++++++ src/HKLException.cpp | 2 +- src/SConscript | 3 + src/diffractometer_kappa4C.cpp | 13 +- src/gui/pseudoaxespinbutton.cpp | 1 - src/pseudoaxe.cpp | 18 ++- src/pseudoaxelist.cpp | 2 +- src/pseudomultiaxe.cpp | 119 +++++++++++++ src/pseudomultiaxeengine.cpp | 62 +++++++ src/pseudomultiaxeengine_kappa4C.cpp | 133 +++++++++++++++ src/sample_monocrystal.cpp | 10 +- test/SConscript | 14 +- test/diffractometer_kappa4C_test.cpp | 56 +++--- test/diffractometer_kappa4C_test.h | 13 +- 20 files changed, 814 insertions(+), 75 deletions(-) commit 7521ced3d553d598ac7974139c55a08065400726 Author: Frederic-Emmanuel PICCA Date: Mon Jan 8 10:43:28 2007 +0100 * changes to remove msvc6 warnings. now FitParameterList::ready_to_fit no more throw exception. include/hkl/derivedpseudoaxe.h | 1 - include/hkl/fitparameterlist.h | 2 +- include/hkl/sample_monocrystal.h | 2 +- src/HKLException.cpp | 2 +- src/sample_monocrystal.cpp | 19 +++++++++++-------- 5 files changed, 14 insertions(+), 12 deletions(-) commit 643d85b64312b0a5d3e29d431c407a2251a2df0a Author: Frédéric-Emmanuel PICCA Date: Sun Jan 7 17:37:23 2007 +0100 * work during the holidays config-linux2.py | 1 - include/hkl/affinement.h | 1 + include/hkl/affinementlist.h | 102 ++ include/hkl/axe.h | 1 + include/hkl/derivedpseudoaxe.h | 9 +- include/hkl/diffractometer.h | 11 + include/hkl/fitparameterlist.h | 2 +- include/hkl/geometry.h | 20 +- include/hkl/modelist.h | 39 +- include/hkl/mystring.h | 54 +- include/hkl/pseudoaxe.h | 14 +- include/hkl/pseudoaxelist.h | 22 +- include/hkl/reflectionlist.h | 1 + include/hkl/samplelist.h | 39 +- src/HKLException.cpp | 2 +- src/SConscript | 1 + src/affinementlist.cpp | 135 ++ src/diffractometer_eulerian6C.cpp | 2 +- src/fitparameterlist.cpp | 14 + src/geometry.cpp | 86 +- src/gui/axespinbutton.cpp | 198 ++-- src/gui/axespinbutton.h | 4 +- src/gui/hklwindow.cpp | 2894 ++++++++++++++++++------------------- src/gui/hklwindow.h | 14 +- src/gui/main.cpp | 109 +- src/gui/modelcolumns.h | 29 +- src/gui/pseudoaxespinbutton.cpp | 239 ++-- src/gui/pseudoaxespinbutton.h | 8 +- src/modelist.cpp | 70 +- src/mystring.cpp | 39 +- src/pseudoaxe.cpp | 6 +- src/pseudoaxe_kappa4C.cpp | 12 +- src/pseudoaxelist.cpp | 58 +- src/samplelist.cpp | 91 +- test/samplelist_test.cpp | 2 +- 35 files changed, 2237 insertions(+), 2092 deletions(-) commit a7add005a7fe136376ad9ba25bb6f81eef46caa0 Author: Frederic-Emmanuel PICCA Date: Wed Dec 20 17:05:09 2006 +0100 * start updating the uml diagram doc/uml/hkl.dia |20688 +++++++++++++------------------------------------------ 1 files changed, 4732 insertions(+), 15956 deletions(-) commit 539424773790dcd3141326af5607ffb2260a9898 Author: Frederic-Emmanuel PICCA Date: Wed Dec 20 16:19:58 2006 +0100 * start refactoring of the frontend (gui). include/hkl/mystring.h | 7 +++++++ src/gui/axespinbutton.cpp | 16 ++++++++-------- src/gui/hklwindow.cpp | 2 +- src/gui/hklwindow.h | 4 ++-- src/gui/pseudoaxespinbutton.h | 4 ++-- 5 files changed, 20 insertions(+), 13 deletions(-) commit dc5db55efee0d37527686df1e834cb53aab452c6 Author: Frederic-Emmanuel PICCA Date: Wed Dec 20 14:37:11 2006 +0100 * add a parameter to the eulerian pseudoAxes to switch between the 2 possible solutions. TODO | 3 +- VERSION | 2 +- include/hkl/diffractometer_kappa4C.h | 2 +- include/hkl/pseudoaxe_kappa4C.h | 3 + src/pseudoaxe_kappa4C.cpp | 117 +++++++++++++++++++++++++++------- 5 files changed, 101 insertions(+), 26 deletions(-) commit 293e58372246a02a653f60dbc3ed4f8bd9daca39 Author: Frederic-Emmanuel PICCA Date: Tue Dec 19 17:32:08 2006 +0100 * add the DiffractometerFactory include/hkl/diffractometer_kappa4C.h | 2 +- include/hkl/diffractometer_kappa6C.h | 2 +- include/hkl/diffractometerfactory.h | 39 ++++++++++++++++++++++++++++ include/hkl/enums.h | 11 ++++++++ src/SConscript | 1 + src/diffractometer_kappa4C.cpp | 2 +- src/diffractometer_kappa6C.cpp | 2 +- src/diffractometerfactory.cpp | 46 ++++++++++++++++++++++++++++++++++ test/diffractometer_kappa4C_test.cpp | 4 +- test/diffractometer_kappa6C_test.cpp | 4 +- 10 files changed, 105 insertions(+), 8 deletions(-) commit 893095ed322aa3c8b4f41ca54fd9cce24bb26dc9 Author: Frederic-Emmanuel PICCA Date: Tue Dec 19 16:30:57 2006 +0100 * second part of the documentation. include/hkl/HKLException.h | 18 +- include/hkl/affinement.h | 294 ++++++------ include/hkl/axe.h | 190 ++++---- include/hkl/constants.h | 40 +- include/hkl/convenience.h | 48 +- include/hkl/derivedmode.h | 76 ++-- include/hkl/derivedpseudoaxe.h | 280 ++++++------ include/hkl/diffractometer.h | 160 +++--- include/hkl/diffractometer_eulerian4C.h | 58 ++-- include/hkl/diffractometer_eulerian6C.h | 52 +- include/hkl/diffractometer_kappa4C.h | 60 ++-- include/hkl/diffractometer_kappa6C.h | 52 +- include/hkl/diffractometer_twoC.h | 58 ++-- include/hkl/enums.h | 26 +- include/hkl/fitparameter.h | 220 +++++----- include/hkl/fitparameterlist.h | 264 +++++----- include/hkl/geometry.h | 402 ++++++++-------- include/hkl/geometry_eulerian4C.h | 385 ++++++++------- include/hkl/geometry_eulerian6C.h | 382 +++++++++------- include/hkl/geometry_kappa.h | 106 ++-- include/hkl/geometry_kappa4C.h | 312 +++++++------ include/hkl/geometry_kappa6C.h | 394 +++++++++------- include/hkl/geometry_twoC.h | 286 ++++++------ include/hkl/hklobject.h | 122 +++--- include/hkl/lattice.h | 454 +++++++++--------- include/hkl/mode.h | 228 +++++----- include/hkl/mode_eulerian4C.h | 204 ++++---- include/hkl/mode_eulerian6C.h | 112 +++--- include/hkl/mode_kappa4C.h | 36 +- include/hkl/mode_kappa6C.h | 36 +- include/hkl/mode_twoC.h | 96 ++-- include/hkl/modelist.h | 176 ++++---- include/hkl/mymap.h | 788 +++++++++++++++--------------- include/hkl/mystring.h | 134 +++--- include/hkl/myvector.h | 802 +++++++++++++++--------------- include/hkl/object.h | 318 ++++++------ include/hkl/observer.h | 152 +++--- include/hkl/parameter.h | 86 ++-- include/hkl/parameterlist.h | 194 ++++---- include/hkl/pseudoaxe.h | 430 +++++++++-------- include/hkl/pseudoaxe_eulerian4C.h | 234 +++++----- include/hkl/pseudoaxe_eulerian6C.h | 122 +++--- include/hkl/pseudoaxe_kappa4C.h | 142 +++--- include/hkl/pseudoaxe_kappa6C.h | 70 ++-- include/hkl/pseudoaxe_twoC.h | 110 +++--- include/hkl/pseudoaxelist.h | 174 ++++---- include/hkl/quaternion.h | 280 ++++++------ include/hkl/range.h | 259 ++++++----- include/hkl/reflection.h | 322 ++++++------ include/hkl/reflection_monocrystal.h | 61 ++- include/hkl/reflectionfactory.h | 43 +- include/hkl/reflectionlist.h | 203 +++++---- include/hkl/sample.h | 175 +++++--- include/hkl/sample_monocrystal.h | 186 ++++--- include/hkl/samplefactory.h | 56 ++- include/hkl/samplelist.h | 150 +++++-- include/hkl/source.h | 238 +++++----- include/hkl/svecmat.h | 767 ++++++++++++++++-------------- include/hkl/value.h | 302 ++++++------ 59 files changed, 6505 insertions(+), 5920 deletions(-) commit 158dae8abe9b987b3e06214b3c5585485d040b58 Author: Frédéric-Emmanuel PICCA Date: Sun Dec 17 16:16:28 2006 +0100 * first part of the documentation before release 2.3.0 doc/Doxyfile | 8 +- include/hkl/axe.h | 4 +- include/hkl/derivedmode.h | 11 ++- include/hkl/derivedpseudoaxe.h | 319 ++++++++++++++++++------------------- include/hkl/diffractometer.h | 215 +++++++++++++++---------- include/hkl/diffractometer_twoC.h | 2 +- include/hkl/enums.h | 6 + include/hkl/fitparameterlist.h | 71 ++++++++- include/hkl/geometry.h | 48 ++++-- include/hkl/hklobject.h | 46 +++--- include/hkl/lattice.h | 140 +++++++++++++++-- include/hkl/mode.h | 38 +++-- include/hkl/modelist.h | 70 ++++++++- include/hkl/mystring.h | 50 ++++-- include/hkl/myvector.h | 46 ++++++ include/hkl/object.h | 53 +++--- include/hkl/observer.h | 44 +++++- include/hkl/parameter.h | 9 + include/hkl/parameterlist.h | 56 +++++++- include/hkl/pseudoaxe.h | 58 ++++++-- include/hkl/pseudoaxelist.h | 68 ++++++++- include/hkl/reflection.h | 87 ++++++++++- src/object.cpp | 20 ++-- 23 files changed, 1066 insertions(+), 403 deletions(-) commit 0d071da4ad04fd7289c84f3d68839ff2f511c4e5 Author: Frédéric-Emmanuel PICCA Date: Sat Dec 16 21:55:26 2006 +0100 * start updating the documentation include/hkl/HKLException.h | 18 +- include/hkl/affinement.h | 298 ++++++------ include/hkl/axe.h | 191 ++++---- include/hkl/constants.h | 42 +- include/hkl/convenience.h | 48 +- include/hkl/derivedmode.h | 58 ++-- include/hkl/derivedpseudoaxe.h | 266 ++++++------ include/hkl/diffractometer.h | 86 ++-- include/hkl/diffractometer_eulerian4C.h | 58 ++-- include/hkl/diffractometer_eulerian6C.h | 52 +- include/hkl/diffractometer_kappa4C.h | 62 ++-- include/hkl/diffractometer_kappa6C.h | 52 +- include/hkl/diffractometer_twoC.h | 58 ++-- include/hkl/enums.h | 14 +- include/hkl/fitparameter.h | 219 +++++----- include/hkl/fitparameterlist.h | 120 +++--- include/hkl/geometry.h | 360 +++++++------- include/hkl/geometry_eulerian4C.h | 348 +++++++------- include/hkl/geometry_eulerian6C.h | 334 +++++++------- include/hkl/geometry_kappa.h | 106 ++-- include/hkl/geometry_kappa4C.h | 283 ++++++------ include/hkl/geometry_kappa6C.h | 347 +++++++------- include/hkl/geometry_twoC.h | 272 ++++++------ include/hkl/hklobject.h | 118 +++--- include/hkl/lattice.h | 192 ++++---- include/hkl/mode.h | 194 ++++---- include/hkl/mode_eulerian4C.h | 204 ++++---- include/hkl/mode_eulerian6C.h | 113 +++--- include/hkl/mode_kappa4C.h | 36 +- include/hkl/mode_kappa6C.h | 36 +- include/hkl/mode_twoC.h | 96 ++-- include/hkl/modelist.h | 44 +- include/hkl/mymap.h | 785 ++++++++++++++++--------------- include/hkl/mystring.h | 76 ++-- include/hkl/myvector.h | 696 ++++++++++++++-------------- include/hkl/object.h | 316 +++++++------- include/hkl/observer.h | 56 ++-- include/hkl/parameter.h | 69 ++-- include/hkl/parameterlist.h | 66 ++-- include/hkl/pseudoaxe.h | 306 ++++++------ include/hkl/pseudoaxe_eulerian4C.h | 226 +++++----- include/hkl/pseudoaxe_eulerian6C.h | 116 +++--- include/hkl/pseudoaxe_kappa4C.h | 142 +++--- include/hkl/pseudoaxe_kappa6C.h | 70 ++-- include/hkl/pseudoaxe_twoC.h | 110 +++--- include/hkl/pseudoaxelist.h | 44 +- include/hkl/quaternion.h | 280 ++++++------ include/hkl/range.h | 221 +++++----- include/hkl/reflection.h | 166 ++++---- include/hkl/reflection_monocrystal.h | 38 +- include/hkl/reflectionfactory.h | 41 +- include/hkl/reflectionlist.h | 181 ++++---- include/hkl/sample.h | 92 ++-- include/hkl/sample_monocrystal.h | 103 +++-- include/hkl/samplefactory.h | 22 +- include/hkl/samplelist.h | 56 ++-- include/hkl/source.h | 242 +++++----- include/hkl/svecmat.h | 702 ++++++++++++++-------------- include/hkl/value.h | 302 ++++++------ src/diffractometer_kappa.cpp | 17 - src/range.cpp | 12 +- src/sample.cpp | 9 - src/sample_monocrystal.cpp | 17 - 63 files changed, 5128 insertions(+), 5176 deletions(-) commit e47ae27c08352ceb7e93e705753404c4e336d3b9 Author: Frederic-Emmanuel Date: Fri Dec 15 16:30:13 2006 +0100 * update the diffractometer tests. include/hkl/samplelist.h | 3 + src/diffractometer_eulerian4C.cpp | 6 +- src/diffractometer_eulerian6C.cpp | 12 +- src/diffractometer_kappa4C.cpp | 8 +- src/diffractometer_kappa6C.cpp | 12 +- src/samplelist.cpp | 22 ++- test/SConscript | 8 +- test/diffractometer_eulerian4C_test.cpp | 234 ++++++++-------- test/diffractometer_eulerian4C_test.h | 75 +++--- test/diffractometer_kappa4C_test.cpp | 72 +++++- test/diffractometer_kappa4C_test.h | 17 +- test/diffractometer_kappa6C_test.cpp | 84 +++++- test/diffractometer_kappa6C_test.h | 17 +- test/diffractometer_twoC_test.cpp | 470 +++++++++++++++---------------- test/diffractometer_twoC_test.h | 65 +++-- 15 files changed, 630 insertions(+), 475 deletions(-) commit b6f4df3cc3a11a599b42b357c9491fee868dc5f1 Author: picca Date: Thu Dec 14 17:03:21 2006 +0100 * add the ModeList and PseudoAxeList class * modification of all diffractometers class config-linux2.py | 1 + doc/uml/next_hkl.dia | 749 ++++++++++++++-- include/hkl/diffractometer.h | 1506 +------------------------------ include/hkl/diffractometer_eulerian4C.h | 2 +- include/hkl/diffractometer_eulerian6C.h | 2 +- include/hkl/diffractometer_kappa4C.h | 2 +- include/hkl/diffractometer_kappa6C.h | 2 +- include/hkl/diffractometer_twoC.h | 2 +- include/hkl/modelist.h | 39 + include/hkl/pseudoaxelist.h | 39 + src/SConscript | 7 +- src/diffractometer.cpp | 67 ++ src/diffractometer_eulerian4C.cpp | 34 +- src/diffractometer_eulerian6C.cpp | 25 +- src/diffractometer_kappa4C.cpp | 41 +- src/diffractometer_kappa6C.cpp | 38 +- src/diffractometer_twoC.cpp | 26 +- src/modelist.cpp | 153 ++++ src/pseudoaxelist.cpp | 153 ++++ src/samplelist.cpp | 26 +- 20 files changed, 1266 insertions(+), 1648 deletions(-) commit 14d2701a73d05e96470c8d24f4e2ff6fb24f00d5 Author: picca Date: Fri Dec 8 17:32:04 2006 +0100 * now all modes are ok include/hkl/derivedmode.h | 69 +++------ include/hkl/derivedpseudoaxe.h | 2 - include/hkl/geometry_kappa6C.h | 5 - include/hkl/mode_eulerian4C.h | 54 ++++---- include/hkl/mode_eulerian6C.h | 11 +- include/hkl/parameterlist.h | 2 +- src/SConscript | 4 +- src/diffractometer_eulerian4C.cpp | 10 +- src/mode_eulerian4C.cpp | 193 +++++++++++++------------ src/mode_eulerian6C.cpp | 58 ++++---- src/parameterlist.cpp | 14 ++ test/SConscript | 6 +- test/mode_eulerian4C_test.cpp | 258 ++++++++++++++++----------------- test/mode_eulerian4C_test.h | 15 +-- test/mode_kappa4C_test.cpp | 231 +++++++++++++++--------------- test/mode_kappa4C_test.h | 10 +- test/mode_kappa6C_test.cpp | 289 +++++++++++++++++++------------------ test/mode_kappa6C_test.h | 10 +- 18 files changed, 604 insertions(+), 637 deletions(-) commit 1c401e16f5ce16562079a081ea5d0f2f71a6fe3b Author: picca Date: Fri Dec 8 11:58:19 2006 +0100 * start refactoring of the mode part. include/hkl/mode.h | 197 ++++++++++++++++++++----------------------- include/hkl/mode_twoC.h | 20 ++-- include/hkl/pseudoaxe.h | 1 - src/SConscript | 3 +- src/diffractometer_twoC.cpp | 10 +- src/mode.cpp | 14 +++ src/mode_twoC.cpp | 44 ++++------ test/SConscript | 2 +- test/mode_twoC_test.cpp | 139 ++++++++++++++++-------------- test/mode_twoC_test.h | 7 +- 10 files changed, 221 insertions(+), 216 deletions(-) commit e641789b202fb6751499486f01448533ea819c7b Author: picca Date: Thu Dec 7 16:42:57 2006 +0100 * update to compile on win32 and add the axes method to the geometries SConstruct | 15 +---- include/hkl/geometry_eulerian4C.h | 45 +++++++++++++-- include/hkl/geometry_eulerian6C.h | 35 ++++++++++-- include/hkl/geometry_kappa4C.h | 45 +++++++++++++-- include/hkl/geometry_kappa6C.h | 30 ++++++++++ include/hkl/geometry_twoC.h | 25 +++++++-- include/hkl/pseudoaxe_eulerian4C.h | 8 +- include/hkl/pseudoaxe_twoC.h | 10 ++-- src/SConscript | 1 + src/geometry_eulerian4C.cpp | 36 ++++++------ src/geometry_eulerian6C.cpp | 40 +++++++------- src/geometry_kappa4C.cpp | 44 +++++++------- src/geometry_kappa6C.cpp | 38 +++++++------ src/geometry_twoC.cpp | 40 +++++++------- src/gui/SConscript | 1 + src/pseudoaxe_eulerian4C.cpp | 39 ++++++------- src/pseudoaxe_twoC.cpp | 60 ++++++++++---------- src/range.cpp | 8 ++- test/pseudoaxe_eulerian4C_test.cpp | 88 ++++++++++------------------- test/pseudoaxe_eulerian6C_test.cpp | 110 ++++++++++++------------------------ test/pseudoaxe_kappa4C_test.cpp | 98 +++++++++++-------------------- test/pseudoaxe_kappa6C_test.cpp | 42 ++++++-------- 22 files changed, 449 insertions(+), 409 deletions(-) commit da12d2c27a5c64608140117722e6fbee640b36f5 Author: picca Date: Thu Dec 7 10:40:25 2006 +0100 * now all pseudoAxe are working. * add observer and observable class SConstruct | 5 +- config-linux2.py | 1 - doc/uml/next_hkl.dia | 2489 +++++++++++++++++++++++++++---- include/hkl/derivedpseudoaxe.h | 191 ++-- include/hkl/fitparameter.h | 2 +- include/hkl/fitparameterlist.h | 1 - include/hkl/geometry.h | 15 +- include/hkl/geometry_eulerian4C.h | 2 +- include/hkl/geometry_eulerian6C.h | 30 + include/hkl/geometry_kappa.h | 7 - include/hkl/geometry_kappa6C.h | 31 + include/hkl/hklobject.h | 10 +- include/hkl/observer.h | 56 + include/hkl/parameter.h | 16 +- include/hkl/parameterlist.h | 76 + include/hkl/pseudoaxe.h | 159 +- include/hkl/pseudoaxe_eulerian4C.h | 22 +- include/hkl/pseudoaxe_eulerian6C.h | 34 +- include/hkl/pseudoaxe_kappa4C.h | 48 +- include/hkl/pseudoaxe_kappa6C.h | 2 - include/hkl/pseudoaxe_twoC.h | 49 +- include/hkl/range.h | 17 +- include/hkl/source.h | 6 - include/hkl/svecmat.h | 4 + src/SConscript | 7 +- src/fitparameter.cpp | 4 +- src/geometry.cpp | 9 - src/geometry_eulerian4C.cpp | 6 +- src/geometry_kappa.cpp | 10 - src/geometry_kappa4C.cpp | 12 +- src/geometry_kappa6C.cpp | 8 +- src/geometry_twoC.cpp | 8 +- src/hklobject.cpp | 5 +- src/observer.cpp | 70 + src/parameter.cpp | 4 +- src/parameterlist.cpp | 90 ++ src/pseudoaxe.cpp | 93 ++ src/pseudoaxe_eulerian4C.cpp | 202 ++- src/pseudoaxe_eulerian6C.cpp | 415 +++--- src/pseudoaxe_kappa4C.cpp | 368 ++--- src/pseudoaxe_twoC.cpp | 377 +++--- src/range.cpp | 230 +++- src/reflection.cpp | 7 +- src/source.cpp | 14 +- src/svector.cpp | 25 + test/SConscript | 21 +- test/affinement_simplex_test.cpp | 138 +- test/affinement_simplex_test.h | 4 +- test/axe_test.cpp | 38 +- test/axe_test.h | 42 +- test/diffractometer_eulerian4C_test.cpp | 702 +++++----- test/diffractometer_eulerian4C_test.h | 5 +- test/diffractometer_kappa4C_test.cpp | 44 +- test/diffractometer_kappa4C_test.h | 27 +- test/diffractometer_kappa6C_test.cpp | 60 +- test/diffractometer_kappa6C_test.h | 31 +- test/diffractometer_test.cpp | 135 +- test/diffractometer_test.h | 45 +- test/diffractometer_twoC_test.cpp | 522 ++++---- test/diffractometer_twoC_test.h | 77 +- test/fitparameter_test.cpp | 82 +- test/fitparameter_test.h | 30 +- test/geometry_eulerian4C_test.cpp | 179 ++-- test/geometry_eulerian4C_test.h | 5 +- test/geometry_eulerian6C_test.cpp | 271 ++-- test/geometry_eulerian6C_test.h | 77 +- test/geometry_kappa4C_test.cpp | 305 ++-- test/geometry_kappa4C_test.h | 5 +- test/geometry_kappa6C_test.cpp | 241 ++-- test/geometry_kappa6C_test.h | 5 +- test/geometry_test.cpp | 136 +- test/geometry_test.h | 7 +- test/geometry_twoC_test.cpp | 218 ++-- test/geometry_twoC_test.h | 11 +- test/hklobject_test.cpp | 10 +- test/hklobject_test.h | 26 +- test/lattice_test.cpp | 364 +++--- test/lattice_test.h | 47 +- test/libHKL_test.cpp | 4 +- test/main.cpp | 12 +- test/mode_eulerian4C_test.cpp | 501 ++++---- test/mode_eulerian4C_test.h | 49 +- test/mode_kappa4C_test.cpp | 459 +++--- test/mode_kappa4C_test.h | 47 +- test/mode_kappa6C_test.cpp | 507 ++++---- test/mode_kappa6C_test.h | 47 +- test/mode_twoC_test.cpp | 165 +- test/mode_twoC_test.h | 37 +- test/mystring_test.cpp | 6 +- test/mystring_test.h | 22 +- test/object_test.cpp | 27 +- test/object_test.h | 42 +- test/parameter_test.cpp | 13 +- test/parameter_test.h | 26 +- test/pseudoaxe_eulerian4C_test.cpp | 789 +++++----- test/pseudoaxe_eulerian4C_test.h | 34 +- test/pseudoaxe_eulerian6C_test.cpp | 678 ++++----- test/pseudoaxe_eulerian6C_test.h | 4 +- test/pseudoaxe_kappa4C_test.cpp | 1033 +++++++------- test/pseudoaxe_kappa4C_test.h | 52 +- test/pseudoaxe_kappa6C_test.cpp | 757 ++++++---- test/pseudoaxe_kappa6C_test.h | 52 +- test/pseudoaxe_twoC_test.cpp | 429 +++--- test/pseudoaxe_twoC_test.h | 30 +- test/quaternion_test.cpp | 34 +- test/quaternion_test.h | 90 +- test/range_test.cpp | 19 +- test/range_test.h | 37 +- test/reflection_test.cpp | 128 +- test/reflection_test.h | 57 +- test/reflectionlist_test.cpp | 106 +- test/reflectionlist_test.h | 55 +- test/sample_test.cpp | 290 ++-- test/sample_test.h | 51 +- test/samplelist_test.cpp | 48 +- test/samplelist_test.h | 31 +- test/source_test.cpp | 53 +- test/source_test.h | 55 +- test/svecmat_test.cpp | 101 +- test/svecmat_test.h | 143 +- test/value_test.cpp | 13 +- test/value_test.h | 53 +- tool/doxygen.py | 23 +- 123 files changed, 9506 insertions(+), 6850 deletions(-) commit 6fb04d11f854219e6713a97da7d0d4984168663c Author: picca Date: Thu Nov 9 17:23:22 2006 +0100 * add some throw to method declaration. include/hkl/reflection_monocrystal.h | 2 +- include/hkl/reflectionfactory.h | 2 +- include/hkl/reflectionlist.h | 2 +- src/reflection_monocrystal.cpp | 2 +- src/reflectionfactory.cpp | 2 +- src/reflectionlist.cpp | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) commit 28447f70ea71205cc903c119e0c1a865d23b5994 Author: picca Date: Thu Nov 9 16:45:20 2006 +0100 * made modifications to pass all tests. doc/uml/next_hkl.dia | 282 ++++++++++++++++++++++++++++------ include/hkl/lattice.h | 20 ++- include/hkl/range.h | 12 ++- include/hkl/reflection.h | 6 +- include/hkl/reflection_monocrystal.h | 10 +- include/hkl/reflectionlist.h | 2 +- src/lattice.cpp | 129 +++++++++------- src/range.cpp | 37 ++--- src/reflection.cpp | 17 +-- src/reflection_monocrystal.cpp | 48 ------ src/reflectionlist.cpp | 4 +- src/sample.cpp | 2 +- src/sample_monocrystal.cpp | 16 +- test/SConscript | 11 +- test/range_test.cpp | 14 +- test/reflection_test.cpp | 46 +++---- test/reflectionlist_test.cpp | 30 ++-- test/sample_test.cpp | 20 ++-- test/svecmat_test.cpp | 12 +- 19 files changed, 430 insertions(+), 288 deletions(-) commit 7b19f1caecce6fe0fe79cc16bad40fdc91919015 Author: picca Date: Thu Nov 9 14:02:59 2006 +0100 * another fit optimization. SConstruct | 2 +- include/hkl/fitparameterlist.h | 4 ++ include/hkl/lattice.h | 4 +- include/hkl/sample_monocrystal.h | 6 ++- include/hkl/value.h | 4 +- src/affinement_simplex.cpp | 112 ++++++++++---------------------------- src/lattice.cpp | 11 ++-- src/sample_monocrystal.cpp | 32 +++++++++--- src/value.cpp | 2 +- 9 files changed, 76 insertions(+), 101 deletions(-) commit 61e92b7c8c21a4936fa20f3f7e2dc67ced762516 Author: picca Date: Wed Nov 8 19:13:58 2006 +0100 * new profiling day. config-win32.py | 1 + include/hkl/lattice.h | 11 ++- include/hkl/range.h | 2 + include/hkl/reflection.h | 56 ++++--------- include/hkl/reflection_monocrystal.h | 4 +- include/hkl/reflectionlist.h | 2 +- include/hkl/svecmat.h | 37 +++++++- src/axe.cpp | 2 +- src/geometry.cpp | 18 ++-- src/lattice.cpp | 108 ++++++++++++++++-------- src/quaternion.cpp | 32 ++++---- src/range.cpp | 14 +++ src/reflection.cpp | 56 +++---------- src/reflection_monocrystal.cpp | 10 ++- src/reflectionfactory.cpp | 2 +- src/reflectionlist.cpp | 10 +-- src/sample_monocrystal.cpp | 11 ++- src/smatrix.cpp | 47 +++++++---- src/source.cpp | 8 +- src/svector.cpp | 155 ++++++++++++++++++---------------- test/affinement_simplex_test.cpp | 10 +- 21 files changed, 328 insertions(+), 268 deletions(-) commit da02f6f255f8a3424d092d69bf38af3d53f06d80 Author: picca Date: Tue Nov 7 18:42:15 2006 +0100 * after refactoring of the svector code. config-linux2.py | 2 +- include/hkl/svecmat.h | 22 ++++++- src/sample_monocrystal.cpp | 7 ++- src/smatrix.cpp | 6 +- src/svector.cpp | 146 +++++++++++++++++++++++++++----------------- 5 files changed, 118 insertions(+), 65 deletions(-) commit d5b2a6b68de660889f63cc047ee970f78f7bac20 Author: picca Date: Tue Nov 7 17:02:52 2006 +0100 * profiling of simplex before svector refactoring doc/uml/next_hkl.dia | 120 +++++++++-- include/hkl/affinement.h | 4 +- include/hkl/fitparameterlist.h | 3 + include/hkl/sample_monocrystal.h | 2 + include/hkl/svecmat.h | 7 +- src/affinement_simplex.cpp | 475 +++++++++++++++++++------------------- src/sample_monocrystal.cpp | 53 +++-- src/svector.cpp | 2 +- 8 files changed, 386 insertions(+), 280 deletions(-) commit cd23eceacb7d0dcbaeb87ddda1d7bb8f64e11f34 Author: picca Date: Tue Nov 7 15:05:53 2006 +0100 * now affinement_simplex works. * add the config-*.py files. config-linux2.py | 1 + config-win32.py | 2 + include/hkl/fitparameterlist.h | 9 +++ include/hkl/lattice.h | 3 + include/hkl/sample_monocrystal.h | 2 + src/HKLException.cpp | 2 +- src/affinement_simplex.cpp | 118 +++++++++++++++++++++++-------------- src/lattice.cpp | 101 ++++++++++++++------------------ src/range.cpp | 34 ++++++------ src/reflection.cpp | 3 +- src/sample_monocrystal.cpp | 19 ++++-- src/smatrix.cpp | 2 + test/SConscript | 26 ++++++--- test/affinement_simplex_test.cpp | 4 +- 14 files changed, 187 insertions(+), 139 deletions(-) commit 8dbda93747238b72c6ffe5f1a7b1d5b930555db0 Author: picca Date: Mon Nov 6 16:13:05 2006 +0100 * remove a bug in the Reflection. _hkl_phi menber was declared in Reflection and reflection::MonoCrystal. include/hkl/reflection.h | 6 +++--- include/hkl/reflection_monocrystal.h | 9 --------- src/reflection.cpp | 6 ++++-- src/reflection_monocrystal.cpp | 2 +- 4 files changed, 8 insertions(+), 15 deletions(-) commit db64d690fe6b6f3e5edfea39126f13c413388883 Author: picca Date: Mon Nov 6 13:08:18 2006 +0100 * format all the files with astyle --style=gnu include/hkl/HKLException.h | 22 +- include/hkl/affinement.h | 56 +- include/hkl/axe.h | 37 +- include/hkl/constants.h | 16 +- include/hkl/convenience.h | 48 +- include/hkl/derivedmode.h | 93 +- include/hkl/derivedpseudoaxe.h | 361 ++-- include/hkl/diffractometer.h | 2881 ++++++++++++++++--------------- include/hkl/diffractometer_eulerian4C.h | 59 +- include/hkl/diffractometer_eulerian6C.h | 52 +- include/hkl/diffractometer_kappa4C.h | 63 +- include/hkl/diffractometer_kappa6C.h | 52 +- include/hkl/diffractometer_twoC.h | 57 +- include/hkl/enums.h | 19 +- include/hkl/fitparameter.h | 45 +- include/hkl/fitparameterlist.h | 33 +- include/hkl/geometry.h | 53 +- include/hkl/geometry_eulerian4C.h | 283 ++-- include/hkl/geometry_eulerian6C.h | 231 ++-- include/hkl/geometry_kappa.h | 115 +- include/hkl/geometry_kappa4C.h | 219 ++-- include/hkl/geometry_kappa6C.h | 243 ++-- include/hkl/geometry_twoC.h | 247 ++-- include/hkl/hklobject.h | 28 +- include/hkl/lattice.h | 187 ++- include/hkl/mode.h | 249 ++-- include/hkl/mode_eulerian4C.h | 198 ++-- include/hkl/mode_eulerian6C.h | 113 +- include/hkl/mode_kappa4C.h | 33 +- include/hkl/mode_kappa6C.h | 33 +- include/hkl/mode_twoC.h | 94 +- include/hkl/mymap.h | 966 ++++++------ include/hkl/mystring.h | 17 +- include/hkl/myvector.h | 893 +++++----- include/hkl/object.h | 193 ++- include/hkl/parameter.h | 25 +- include/hkl/portability.h | 12 +- include/hkl/pseudoaxe.h | 309 ++-- include/hkl/pseudoaxe_eulerian4C.h | 219 ++-- include/hkl/pseudoaxe_eulerian6C.h | 107 +- include/hkl/pseudoaxe_kappa4C.h | 120 +- include/hkl/pseudoaxe_kappa6C.h | 64 +- include/hkl/pseudoaxe_twoC.h | 90 +- include/hkl/quaternion.h | 15 +- include/hkl/range.h | 32 +- include/hkl/reflection.h | 189 ++- include/hkl/reflection_monocrystal.h | 51 +- include/hkl/reflectionfactory.h | 43 +- include/hkl/reflectionlist.h | 203 ++-- include/hkl/sample.h | 59 +- include/hkl/sample_monocrystal.h | 67 +- include/hkl/samplefactory.h | 23 +- include/hkl/samplelist.h | 49 +- include/hkl/source.h | 38 +- include/hkl/svecmat.h | 630 ++++---- include/hkl/value.h | 35 +- src/HKLException.cpp | 108 +- src/affinement.cpp | 65 +- src/affinement_simplex.cpp | 504 +++--- src/axe.cpp | 161 +- src/convenience.cpp | 84 +- src/diffractometer_eulerian4C.cpp | 67 +- src/diffractometer_eulerian6C.cpp | 50 +- src/diffractometer_kappa.cpp | 20 +- src/diffractometer_kappa4C.cpp | 85 +- src/diffractometer_kappa6C.cpp | 78 +- src/diffractometer_twoC.cpp | 57 +- src/fitparameter.cpp | 105 +- src/fitparameterlist.cpp | 115 +- src/geometry.cpp | 710 ++++---- src/geometry_eulerian4C.cpp | 347 ++-- src/geometry_eulerian6C.cpp | 276 ++-- src/geometry_kappa.cpp | 112 +- src/geometry_kappa4C.cpp | 357 ++-- src/geometry_kappa6C.cpp | 308 ++-- src/geometry_twoC.cpp | 247 ++-- src/hklobject.cpp | 79 +- src/lattice.cpp | 631 ++++---- src/mode_eulerian4C.cpp | 509 +++--- src/mode_eulerian6C.cpp | 861 +++++----- src/mode_twoC.cpp | 114 +- src/mystring.cpp | 99 +- src/object.cpp | 143 +- src/parameter.cpp | 71 +- src/pseudoaxe_eulerian4C.cpp | 412 +++--- src/pseudoaxe_eulerian6C.cpp | 499 +++--- src/pseudoaxe_kappa4C.cpp | 558 +++--- src/pseudoaxe_twoC.cpp | 522 +++--- src/quaternion.cpp | 399 +++--- src/range.cpp | 137 +- src/reflection.cpp | 228 ++-- src/reflection_monocrystal.cpp | 128 +- src/reflectionfactory.cpp | 37 +- src/reflectionlist.cpp | 385 +++-- src/sample.cpp | 252 ++-- src/sample_monocrystal.cpp | 394 +++--- src/samplefactory.cpp | 45 +- src/samplelist.cpp | 325 ++-- src/source.cpp | 239 ++-- src/svector.cpp | 355 ++-- src/value.cpp | 237 ++-- 101 files changed, 11320 insertions(+), 10864 deletions(-) commit 442cda584d275ef3f95e083a9bb3474e939f613c Author: picca frederic Date: Sat Nov 4 09:40:49 2006 +0100 * remove a bug in smatrix::operator == when nan src/smatrix.cpp | 564 +++++++++++++++++++++++++++---------------------------- 1 files changed, 279 insertions(+), 285 deletions(-) commit 26c7507a35ca2db6bb3ad91ed07ad6b3a1833c8b Author: picca Date: Thu Nov 2 18:20:04 2006 +0100 * work on affinement doc/uml/next_hkl.dia | 1003 ++++---------------------------------- include/hkl/crystal.h | 869 --------------------------------- include/hkl/crystallist.h | 87 ---- include/hkl/diffractometer.h | 301 ++++++------ include/hkl/fitparameter.h | 2 +- include/hkl/fitparameterlist.h | 8 +- include/hkl/lattice.h | 2 + src/HKLException.cpp | 2 +- src/affinement_simplex.cpp | 14 +- src/fitparameter.cpp | 2 +- src/lattice.cpp | 38 ++- src/range.cpp | 1 + test/SConscript | 3 +- test/affinement_simplex_test.cpp | 162 ++++--- test/affinement_simplex_test.h | 40 +- test/crystallist_test.cpp | 80 --- test/crystallist_test.h | 40 -- 17 files changed, 419 insertions(+), 2235 deletions(-) commit 62514ef8dfba338c42efb78b6f7f47892493a3be Author: picca Date: Thu Nov 2 16:44:59 2006 +0100 * add the SampleList and SampleFactory classes. * add the SampleList tests. doc/uml/next_hkl.dia | 700 ++++++++++++++++++++++----- include/hkl/enums.h | 10 + include/hkl/reflection.h | 17 +- include/hkl/reflectionfactory_monocrystal.h | 35 -- include/hkl/sample.h | 2 + include/hkl/sample_monocrystal.h | 4 +- include/hkl/samplefactory.h | 29 ++ include/hkl/samplelist.h | 42 ++ src/SConscript | 2 + src/reflection.cpp | 20 +- src/reflectionfactory_monocrystal.cpp | 23 - src/samplefactory.cpp | 39 ++ src/samplelist.cpp | 190 ++++++++ test/SConscript | 1 + test/samplelist_test.cpp | 48 ++ test/samplelist_test.h | 28 ++ 16 files changed, 988 insertions(+), 202 deletions(-) commit d4e10584fb2683eae1c7739f51ea13fadafdfa42 Author: picca Date: Tue Oct 31 20:14:06 2006 +0100 * update the uml diagramme doc/uml/next_hkl.dia | 361 ++++++++++++++++++++++++++++++++++++++------------ include/hkl/sample.h | 6 +- test/SConscript | 2 +- 3 files changed, 279 insertions(+), 90 deletions(-) commit 132226fb106619ef700910cc663fe9bb1327aed5 Author: picca Date: Tue Oct 31 19:59:31 2006 +0100 * now the sample Class is ok. doc/uml/next_hkl.dia | 312 ++++++++++++++++++++++++++++------- include/hkl/fitparameterlist.h | 17 +-- include/hkl/lattice.h | 9 +- include/hkl/mystring.h | 21 ++- include/hkl/sample.h | 11 +- include/hkl/sample_monocrystal.h | 6 +- src/fitparameter.cpp | 9 +- src/fitparameterlist.cpp | 33 +---- src/geometry_eulerian4C.cpp | 8 +- src/lattice.cpp | 24 +++- src/mystring.cpp | 38 ++++- src/range.cpp | 2 +- src/reflection.cpp | 13 +- src/reflectionlist.cpp | 5 +- src/sample.cpp | 334 +++----------------------------------- src/sample_monocrystal.cpp | 183 +++++++-------------- test/SConscript | 4 +- test/fitparameter_test.cpp | 11 ++ test/lattice_test.cpp | 18 ++ test/lattice_test.h | 2 + test/reflection_test.cpp | 9 + test/reflectionlist_test.cpp | 47 ++++--- test/sample_test.cpp | 333 ++++---------------------------------- test/sample_test.h | 20 --- 24 files changed, 548 insertions(+), 921 deletions(-) commit 0ea586ae18cd488630dcc636f67ff173a478c709 Author: picca Date: Mon Oct 30 19:52:15 2006 +0100 * start working on the sample part and the fitparameterlist TODO | 1 + doc/uml/next_hkl.dia | 964 +++++++++++++++++++++++----------- include/hkl/fitparameterlist.h | 135 ++--- include/hkl/reflection.h | 7 +- include/hkl/reflection_monocrystal.h | 2 + include/hkl/reflectionlist.h | 4 + include/hkl/sample.h | 75 +++ include/hkl/sample_monocrystal.h | 67 +++ include/hkl/svecmat.h | 2 + src/SConscript | 1 + src/affinement_simplex.cpp | 10 +- src/fitparameterlist.cpp | 133 +++--- src/reflection.cpp | 4 +- src/sample.cpp | 431 +++++++++++++++ src/sample_monocrystal.cpp | 268 ++++++++++ src/smatrix.cpp | 23 + test/reflection_test.cpp | 2 +- test/sample_test.cpp | 465 ++++++++++++++++ test/sample_test.h | 59 ++ 19 files changed, 2191 insertions(+), 462 deletions(-) commit 4afe5d3fb464579b0f666b3e6090893e10a26ff3 Author: picca Date: Fri Oct 27 16:27:45 2006 +0200 * remove the relevance in the Reflection class. * update all the reflection test. doc/uml/next_hkl.dia | 100 +++++++++++++++++++++------------- include/hkl/enums.h | 16 +++--- include/hkl/reflection.h | 9 +--- include/hkl/reflection_monocrystal.h | 1 - include/hkl/reflectionfactory.h | 1 - src/reflection.cpp | 17 +----- src/reflection_monocrystal.cpp | 22 ++++---- src/reflectionfactory.cpp | 2 +- test/SConscript | 2 +- test/reflection_test.cpp | 99 ++++++++++++++++++---------------- test/reflection_test.h | 5 +- test/reflectionlist_test.cpp | 4 +- 12 files changed, 140 insertions(+), 138 deletions(-) commit c087c58e900471cb4e99d870a7fd98e708454f7f Author: picca Date: Fri Oct 27 15:10:06 2006 +0200 * modification of the ReflectionFactory doc/uml/next_hkl.dia | 552 +++------------------------------------ include/hkl/enums.h | 6 + include/hkl/reflectionfactory.h | 18 +- include/hkl/reflectionlist.h | 1 - src/SConscript | 1 - src/reflectionfactory.cpp | 21 ++- src/reflectionlist.cpp | 16 +- 7 files changed, 71 insertions(+), 544 deletions(-) commit a0de38547101f60ddc8c6730c2da0d9f47a59d54 Author: picca Date: Fri Oct 27 14:00:29 2006 +0200 * add many ReflectionList test methods. doc/uml/next_hkl.dia | 6 ++-- test/reflectionlist_test.cpp | 51 +++++++++++++++++++++++++++++++++++++---- test/reflectionlist_test.h | 6 +++++ 3 files changed, 55 insertions(+), 8 deletions(-) commit 588de2c474613ef4e9335a88211c644f6b34b6ea Author: picca Date: Fri Oct 27 13:32:44 2006 +0200 * add the forgotten reflectionlist test files. test/reflectionlist_test.cpp | 58 ++++++++++++++++++++++++++++++++++++++++++ test/reflectionlist_test.h | 32 +++++++++++++++++++++++ 2 files changed, 90 insertions(+), 0 deletions(-) commit 5f62637397c7c185a77cf69d5d77316e46249f55 Author: picca Date: Fri Oct 27 13:24:46 2006 +0200 * remove a bug in the Value class * rename ReflectionListFactory into ReflectionList * add the enums header doc/uml/hkl.dia | 1679 +++++++++++++++-------- doc/uml/next_hkl.dia | 621 +-------- include/hkl/enums.h | 4 + include/hkl/reflectionlist.h | 113 ++ include/hkl/reflectionlistfactory.h | 111 -- include/hkl/reflectionlistfactory_monocrystal.h | 28 - src/SConscript | 3 +- src/fitparameter.cpp | 2 +- src/reflectionlist.cpp | 243 ++++ src/reflectionlistfactory.cpp | 223 --- src/reflectionlistfactory_monocrystal.cpp | 33 - src/value.cpp | 8 +- test/SConscript | 2 +- test/lattice_test.cpp | 2 +- test/reflectionlistfactory_test.cpp | 39 - test/reflectionlistfactory_test.h | 28 - test/value_test.cpp | 24 + test/value_test.h | 4 + 18 files changed, 1554 insertions(+), 1613 deletions(-) commit 6edcbf8d8af06bdcbbe8a22932cb030b880ee902 Author: picca Date: Wed Oct 25 18:03:40 2006 +0200 * refactoring of the reflection part (cherry picked from 0484821076069bc9e86ebf8b73a85e74fb659383 commit) TODO | 1 + doc/uml/next_hkl.dia | 6849 +++++++++++++++++------ include/hkl/axe.h | 11 +- include/hkl/geometry.h | 29 +- include/hkl/geometry_eulerian4C.h | 38 +- include/hkl/geometry_eulerian6C.h | 25 +- include/hkl/geometry_kappa.h | 8 +- include/hkl/geometry_kappa4C.h | 21 +- include/hkl/geometry_kappa6C.h | 25 +- include/hkl/geometry_twoC.h | 17 +- include/hkl/mymap.h | 18 +- include/hkl/pseudoaxe.h | 8 +- include/hkl/reflection.h | 365 +-- include/hkl/reflection_monocrystal.h | 55 + include/hkl/reflectionfactory.h | 38 + include/hkl/reflectionfactory_monocrystal.h | 35 + include/hkl/reflectionlist.h | 653 --- include/hkl/reflectionlistfactory.h | 111 + include/hkl/reflectionlistfactory_monocrystal.h | 28 + src/SConscript | 13 +- src/axe.cpp | 6 + src/geometry.cpp | 205 +- src/geometry_eulerian4C.cpp | 206 +- src/geometry_eulerian6C.cpp | 202 +- src/geometry_kappa.cpp | 16 +- src/geometry_kappa4C.cpp | 162 +- src/geometry_kappa6C.cpp | 201 +- src/geometry_twoC.cpp | 102 +- src/reflection.cpp | 142 + src/reflection_monocrystal.cpp | 82 + src/reflectionfactory.cpp | 14 + src/reflectionfactory_monocrystal.cpp | 23 + src/reflectionlistfactory.cpp | 223 + src/reflectionlistfactory_monocrystal.cpp | 33 + test/SConscript | 10 +- test/crystal_test.cpp | 462 -- test/crystal_test.h | 64 - test/geometry_eulerian4C_test.cpp | 38 +- test/geometry_test.cpp | 70 +- test/geometry_test.h | 5 +- test/reflection_test.cpp | 77 +- test/reflection_test.h | 5 +- test/reflectionlistfactory_test.cpp | 39 + test/reflectionlistfactory_test.h | 28 + 44 files changed, 6654 insertions(+), 4109 deletions(-) commit ad8d853aa33c066fc8b5f180fc99ae96b21adf8b Author: picca Date: Wed Oct 4 15:59:30 2006 +0200 * modification of the lyx doc doc/hkl.lyx | 2225 ++++++++++++++++++++++++++++++++--------------------------- 1 files changed, 1198 insertions(+), 1027 deletions(-) commit f35e7ca54f65406989e734269661c07c7729f4be Author: picca Date: Wed Oct 4 15:58:54 2006 +0200 * add the Lattice tests TODO | 1 + doc/uml/next_hkl.dia | 2070 ++++++++++++++++++++++++++----------------------- include/hkl/lattice.h | 15 +- src/lattice.cpp | 100 ++- test/SConscript | 3 +- test/lattice_test.cpp | 288 +++++--- test/lattice_test.h | 30 +- 7 files changed, 1376 insertions(+), 1131 deletions(-) commit f89fbf519fdb1e1e28eb9fd6d71d816d35107159 Author: picca Date: Wed Oct 4 15:56:18 2006 +0200 * modification of a HKLException message of the set_current methode. src/range.cpp | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) commit 0e087db1b5eca592cfc87c40a22a3803eea18618 Author: picca Date: Wed Oct 4 15:54:45 2006 +0200 * change the printToStream format of FitParameter src/fitparameter.cpp | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) commit 1f785b3d36631856cbe1b317ad8893e913835c23 Author: picca Date: Fri Sep 22 18:19:26 2006 +0200 * update the uml diagramme. doc/uml/newt_hkl.dia |15134 -------------------------------------------------- doc/uml/next_hkl.dia |14937 +++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 14921 insertions(+), 15150 deletions(-) commit c20a3234495f3530a3acd1abeda7d396f3d178e5 Author: picca Date: Thu Sep 7 18:53:47 2006 +0200 DO NOT COMPILE doc/uml/newt_hkl.dia |15134 ++++++++++++++++++++++++++++++++++++++++ include/hkl/axe.h | 4 +- include/hkl/crystal.h | 244 +- include/hkl/fitparameterlist.h | 142 +- include/hkl/geometry.h | 6 +- include/hkl/hklobject.h | 78 + include/hkl/lattice.h | 82 + include/hkl/parameter.h | 76 + include/hkl/portability.h | 19 + include/hkl/reflectionlist.h | 653 ++ include/hkl/source.h | 30 +- include/hkl/value.h | 39 + src/SConscript | 7 +- src/affinement.cpp | 2 + src/affinement_simplex.cpp | 6 +- src/axe.cpp | 2 +- src/fitparameterlist.cpp | 32 +- src/hklobject.cpp | 43 + src/lattice.cpp | 287 + src/parameter.cpp | 44 + src/source.cpp | 104 +- src/value.cpp | 12 + test/SConscript | 4 +- test/crystal_test.cpp | 60 +- test/hklobject_test.cpp | 48 + test/hklobject_test.h | 26 + test/parameter_test.cpp | 43 + test/parameter_test.h | 26 + test/source_test.cpp | 4 +- 29 files changed, 16939 insertions(+), 318 deletions(-) commit fe136dc24ab598e9124aacc5ffae37965cfb30b4 Author: picca Date: Fri Sep 1 18:47:03 2006 +0200 * begin of the refactoring DO NOT COMPILE yet SConstruct | 2 +- TODO | 11 +- doc/Doxyfile | 1 - doc/uml/next_hkl.dia |26631 +------------------------------ include/hkl/axe.h | 204 +- include/hkl/config.h | 19 - include/hkl/constants.h | 2 + include/hkl/diffractometer.h | 94 +- include/hkl/diffractometer_eulerian6C.h | 2 +- include/hkl/fitparameter.h | 94 +- include/hkl/fitparameterlist.h | 128 +- include/hkl/mymap.h | 2 +- include/hkl/myvector.h | 2 +- include/hkl/objectwithparameters.h | 117 - include/hkl/pseudoaxe.h | 8 +- include/hkl/range.h | 115 +- include/hkl/svecmat.h | 2 +- include/hkl/value.h | 100 +- src/SConscript | 16 +- src/axe.cpp | 168 +- src/convenience.cpp | 2 +- src/diffractometer_eulerian6C.cpp | 10 +- src/fitparameter.cpp | 75 +- src/fitparameterlist.cpp | 11 - src/gui/axespinbutton.cpp | 150 +- src/gui/axespinbutton.h | 35 +- src/gui/diffractometer2.glade | 4 +- src/gui/hklwindow.cpp | 68 +- src/gui/hklwindow.h | 7 +- src/gui/main.cpp | 10 +- src/gui/pseudoaxespinbutton.cpp | 169 +- src/gui/pseudoaxespinbutton.h | 33 +- src/mystring.cpp | 2 +- src/objectwithparameters.cpp | 89 - src/pseudoaxe_eulerian6C.cpp | 32 +- src/pseudoaxe_twoC.cpp | 10 + src/range.cpp | 78 +- src/value.cpp | 98 +- test/SConscript | 13 +- test/axe_test.cpp | 124 +- test/axe_test.h | 2 - test/fitparameter_test.cpp | 89 +- test/fitparameter_test.h | 18 +- test/objectwithparameters_test.cpp | 66 - test/objectwithparameters_test.h | 28 - test/range_test.cpp | 63 +- test/range_test.h | 8 +- test/value_test.cpp | 75 +- test/value_test.h | 11 +- 49 files changed, 1196 insertions(+), 27902 deletions(-) commit a421ea546daf149771bfc3be131ef734ab6cd19b Author: picca Date: Thu Aug 31 18:54:30 2006 +0200 * add the ObjectReadOnly class. with this class you can only set the name and the description in the constructor. include/hkl/object.h | 197 +++++++++++++++++++++++++++++++++----------------- src/object.cpp | 89 ++++++++++------------- 2 files changed, 170 insertions(+), 116 deletions(-) commit d987346c3f727cfb4a25fd61c74085a793eba6d5 Author: picca Date: Wed Aug 23 17:21:08 2006 +0200 * add the PseudoAxeSpinbutton to the gui. * add the isValid method to the Geometry classes. * change the pseudoAxe interface + get_initialized() + get_min() + get_max() * add all the related test functions. TODO | 13 ++- include/hkl/derivedpseudoaxe.h | 76 ++++++++-- include/hkl/diffractometer.h | 20 ++- include/hkl/geometry.h | 10 ++ include/hkl/geometry_kappa.h | 7 + include/hkl/pseudoaxe.h | 189 ++++++++++++++--------- include/hkl/pseudoaxe_eulerian4C.h | 9 +- include/hkl/pseudoaxe_eulerian6C.h | 16 ++- include/hkl/pseudoaxe_kappa4C.h | 24 ++- include/hkl/pseudoaxe_twoC.h | 32 +++-- src/axe.cpp | 4 +- src/geometry.cpp | 9 + src/geometry_kappa.cpp | 10 ++ src/gui/SConscript | 1 + src/gui/axespinbutton.cpp | 1 - src/gui/hklwindow.cpp | 81 +++++++++- src/gui/hklwindow.h | 9 + src/gui/main.cpp | 9 +- src/gui/pseudoaxespinbutton.cpp | 89 +++++++++++ src/gui/pseudoaxespinbutton.h | 30 ++++ src/pseudoaxe_eulerian4C.cpp | 108 +++++++------ src/pseudoaxe_eulerian6C.cpp | 166 ++++++++++++-------- src/pseudoaxe_kappa4C.cpp | 187 +++++++++++++---------- src/pseudoaxe_twoC.cpp | 274 +++++++++++++++++---------------- test/axe_test.cpp | 8 +- test/geometry_eulerian4C_test.cpp | 3 +- test/geometry_eulerian4C_test.h | 64 ++++---- test/geometry_eulerian6C_test.cpp | 6 +- test/geometry_kappa6C_test.cpp | 2 +- test/geometry_kappa6C_test.h | 62 ++++---- test/geometry_test.cpp | 12 ++ test/geometry_test.h | 2 + test/geometry_twoC_test.h | 70 +++++----- test/pseudoaxe_eulerian4C_test.cpp | 156 +++++++++++++++---- test/pseudoaxe_eulerian6C_test.cpp | 76 ++++++++-- test/pseudoaxe_kappa4C_test.cpp | 297 +++++++++++++++++++++++++++--------- test/pseudoaxe_kappa6C_test.cpp | 181 ++++++++++++++++++----- test/pseudoaxe_twoC_test.cpp | 124 +++++++++++---- 38 files changed, 1684 insertions(+), 753 deletions(-) commit a9980b3eaa90952072e1c17e3c40cb73ca805f8e Author: picca Date: Fri Aug 11 19:08:54 2006 +0200 *add the PseudoAxeInterface *add a gui base on gtkmm SConstruct | 2 +- include/hkl/derivedpseudoaxe.h | 70 +- include/hkl/diffractometer.h | 8 +- include/hkl/pseudoaxe.h | 72 +- include/hkl/pseudoaxe_eulerian4C.h | 10 +- include/hkl/pseudoaxe_eulerian6C.h | 28 +- include/hkl/pseudoaxe_kappa4C.h | 30 +- include/hkl/pseudoaxe_twoC.h | 51 +- src/SConscript | 2 +- src/diffractometer_eulerian4C.cpp | 8 +- src/diffractometer_eulerian6C.cpp | 6 +- src/diffractometer_kappa4C.cpp | 14 +- src/diffractometer_kappa6C.cpp | 12 +- src/diffractometer_twoC.cpp | 6 +- src/gui/SConscript | 28 + src/gui/axespinbutton.cpp | 48 + src/gui/axespinbutton.h | 28 + src/gui/diffractometer2.glade | 2775 ++++++++++++++++++++++++++++++++++++ src/gui/hklwindow.cpp | 1762 +++++++++++++++++++++++ src/gui/hklwindow.h | 173 +++ src/gui/main.cpp | 63 + src/gui/modelcolumns.h | 33 + src/pseudoaxe_eulerian4C.cpp | 59 +- src/pseudoaxe_eulerian6C.cpp | 81 +- src/pseudoaxe_kappa4C.cpp | 105 +- src/pseudoaxe_twoC.cpp | 107 +- test/pseudoaxe_eulerian4C_test.cpp | 113 +- test/pseudoaxe_eulerian6C_test.cpp | 97 +- test/pseudoaxe_kappa4C_test.cpp | 136 +- test/pseudoaxe_kappa6C_test.cpp | 90 +- test/pseudoaxe_twoC_test.cpp | 67 +- 31 files changed, 5492 insertions(+), 592 deletions(-) commit cc8358f44a2a70c4cb5db6df04cfa4d0067416b4 Author: picca Date: Fri Aug 11 15:39:19 2006 +0200 * resolv a bug in the simplex affinement method * add some usefull methode to the DiffractometerInterface: getAxe and setAxesFromCrystalReflection include/hkl/crystal.h | 137 +++++++++----- include/hkl/diffractometer.h | 157 ++++++++++++++- src/affinement_simplex.cpp | 66 ++++++- test/affinement_simplex_test.cpp | 151 +++++++------- test/crystal_test.cpp | 411 ++++++++++++++++++++------------------ 5 files changed, 593 insertions(+), 329 deletions(-) commit 94116eb4fc55be62962a7c405866595b598efa76 Author: picca Date: Wed Jul 26 18:34:39 2006 +0200 * add the pseudoAxes to the geometry::printToStream() include/hkl/diffractometer.h | 35 +++++++++++++++++++++++++++-------- include/hkl/pseudoaxe.h | 2 +- 2 files changed, 28 insertions(+), 9 deletions(-) commit 7b73c78de34324e6d4fb58516a492a5eaa6e7272 Author: picca Date: Wed Jul 26 17:32:05 2006 +0200 * update the TODO list TODO | 13 ++++--------- 1 files changed, 4 insertions(+), 9 deletions(-) commit 5d2db5585e4ed98197b3fcc749af358d46fae024 Author: picca Date: Wed Jul 26 16:55:11 2006 +0200 * update the unit test with non deprecated class test/main.cpp | 18 +++++++++--------- 1 files changed, 9 insertions(+), 9 deletions(-) commit b98373bcd1eb4f319cb777e2664320254f605d8f Author: picca Date: Wed Jul 26 16:34:45 2006 +0200 * add the profile option to the build system SConstruct | 27 +++++++++++++++++++++------ 1 files changed, 21 insertions(+), 6 deletions(-) commit bbaff8ac1a2cd83456d599d6072dca5854b85687 Author: picca Date: Wed Jul 26 14:36:08 2006 +0200 * put all the myvector files into only one. include/hkl/linux/myvector.h | 503 --------------------------------------- include/hkl/myvector.h | 542 +++++++++++++++++++++++++++++++++++++++++- include/hkl/win32/myvector.h | 444 ---------------------------------- 3 files changed, 540 insertions(+), 949 deletions(-) commit 1b77d370affa8238ff2fbcf5327367db2d9af8f3 Author: picca Date: Tue Jul 25 18:40:41 2006 +0200 now most of the library is based on templates. include/hkl/crystal.h | 46 +- include/hkl/derivedmode.h | 17 +- include/hkl/derivedpseudoaxe.h | 6 +- include/hkl/diffractometer.h | 370 +++++++------- include/hkl/linux/mymap.h | 541 -------------------- include/hkl/linux/myvector.h | 47 +- include/hkl/mode.h | 74 +++- include/hkl/mymap.h | 595 ++++++++++++++++++++++- include/hkl/object.h | 181 ++++---- include/hkl/pseudoaxe.h | 17 +- include/hkl/source.h | 197 +------- include/hkl/win32/mymap.h | 424 ---------------- src/HKLException.cpp | 21 +- src/SConscript | 6 +- src/diffractometer_eulerian4C.cpp | 4 +- src/diffractometer_kappa4C.cpp | 2 +- src/geometry.cpp | 33 +- src/geometry_eulerian4C.cpp | 4 + src/geometry_eulerian6C.cpp | 4 + src/geometry_kappa4C.cpp | 28 +- src/geometry_kappa6C.cpp | 12 +- src/geometry_twoC.cpp | 4 + src/mode_eulerian4C.cpp | 308 +++++------- src/mode_twoC.cpp | 54 +-- src/mystring.cpp | 5 +- src/object.cpp | 16 +- src/pseudoaxe_eulerian4C.cpp | 162 ++++--- src/pseudoaxe_eulerian6C.cpp | 31 +- src/pseudoaxe_kappa4C.cpp | 14 +- src/pseudoaxe_twoC.cpp | 73 ++-- src/quaternion.cpp | 9 +- src/source.cpp | 169 ++++--- src/svector.cpp | 13 +- src/value.cpp | 2 +- test/SConscript | 15 +- test/crystal_test.cpp | 2 + test/crystallist_test.cpp | 12 + test/crystallist_test.h | 2 + test/diffractometer_eulerian4C_test.cpp | 830 +++++++++++++++--------------- test/diffractometer_kappa4C_test.cpp | 1 - test/geometry_eulerian4C_test.cpp | 12 +- test/geometry_kappa4C_test.cpp | 65 +++- test/geometry_kappa6C_test.cpp | 47 ++- test/geometry_test.cpp | 31 +- test/geometry_twoC_test.cpp | 12 +- test/mode_eulerian4C_test.cpp | 115 +++-- test/mode_twoC_test.cpp | 70 ++- test/pseudoaxe_eulerian4C_test.cpp | 33 +- test/pseudoaxe_eulerian6C_test.cpp | 19 +- test/pseudoaxe_kappa4C_test.cpp | 235 +++++----- test/pseudoaxe_kappa4C_test.h | 4 +- test/pseudoaxe_kappa6C_test.cpp | 140 +++--- test/pseudoaxe_kappa6C_test.h | 8 +- test/pseudoaxe_twoC_test.cpp | 6 +- test/source_test.cpp | 18 +- test/source_test.h | 2 + test/svecmat_test.cpp | 2 +- 57 files changed, 2512 insertions(+), 2658 deletions(-) commit 8c63bafe19f3eddf38ae425c261f6e7cd197775e Author: picca Date: Thu Jun 29 14:37:20 2006 +0200 * DO NOT COMPILE include/hkl/axe.h | 13 +- include/hkl/crystal.h | 1038 ++++++++++++++---- include/hkl/crystallist.h | 105 ++- include/hkl/derivedmode.h | 67 ++ include/hkl/derivedpseudoaxe.h | 163 +++ include/hkl/diffractometer.h | 1840 ++++++++++++++++++++++--------- include/hkl/diffractometer_eulerian4C.h | 52 +- include/hkl/diffractometer_eulerian6C.h | 49 +- include/hkl/diffractometer_kappa.h | 42 - include/hkl/diffractometer_kappa4C.h | 60 +- include/hkl/diffractometer_kappa6C.h | 8 +- include/hkl/diffractometer_twoC.h | 23 +- include/hkl/geometry.h | 37 +- include/hkl/geometry_eulerian4C.h | 71 ++- include/hkl/geometry_eulerian6C.h | 170 ++- include/hkl/geometry_kappa.h | 6 + include/hkl/geometry_kappa4C.h | 76 +- include/hkl/geometry_kappa6C.h | 91 ++- include/hkl/geometry_twoC.h | 76 ++- include/hkl/mode.h | 123 ++- include/hkl/mode_eulerian4C.h | 52 +- include/hkl/mode_eulerian6C.h | 153 +--- include/hkl/mode_kappa4C.h | 131 +-- include/hkl/mode_kappa6C.h | 143 +--- include/hkl/mode_twoC.h | 9 +- include/hkl/pseudoaxe.h | 170 ++- include/hkl/pseudoaxe_eulerian4C.h | 173 +--- include/hkl/pseudoaxe_eulerian6C.h | 104 +-- include/hkl/pseudoaxe_kappa4C.h | 195 +--- include/hkl/pseudoaxe_kappa6C.h | 222 +---- include/hkl/pseudoaxe_twoC.h | 60 +- include/hkl/reflection.h | 697 ++++++------ src/SConscript | 28 +- src/crystal.cpp | 609 ---------- src/crystallist.cpp | 33 - src/diffractometer.cpp | 724 ------------ src/diffractometer_eulerian4C.cpp | 80 +- src/diffractometer_eulerian6C.cpp | 9 +- src/diffractometer_kappa4C.cpp | 81 +- src/diffractometer_kappa6C.cpp | 16 +- src/diffractometer_twoC.cpp | 8 +- src/geometry.cpp | 190 ++-- src/geometry_eulerian4C.cpp | 274 +++-- src/geometry_eulerian6C.cpp | 269 +++-- src/geometry_kappa.cpp | 8 + src/geometry_kappa4C.cpp | 265 +++-- src/geometry_kappa6C.cpp | 293 +++--- src/geometry_twoC.cpp | 158 ++- src/mode.cpp | 38 - src/mode_eulerian4C.cpp | 60 +- src/mode_eulerian6C.cpp | 191 +---- src/mode_kappa4C.cpp | 189 ---- src/mode_kappa6C.cpp | 194 ---- src/mode_twoC.cpp | 46 +- src/pseudoaxe.cpp | 18 - src/pseudoaxe_eulerian4C.cpp | 302 +----- src/pseudoaxe_eulerian6C.cpp | 215 +--- src/pseudoaxe_kappa4C.cpp | 420 +------ src/pseudoaxe_kappa6C.cpp | 488 -------- src/pseudoaxe_twoC.cpp | 119 +-- src/reflection.cpp | 161 --- test/SConscript | 24 +- test/affinement_simplex_test.cpp | 22 +- test/affinement_simplex_test.h | 2 +- test/crystal_test.cpp | 333 +++--- test/crystal_test.h | 2 +- test/crystallist_test.cpp | 46 +- test/crystallist_test.h | 3 + test/diffractometer_eulerian4C_test.cpp | 472 ++++----- test/diffractometer_eulerian4C_test.h | 102 +- test/diffractometer_kappa4C_test.cpp | 41 +- test/diffractometer_kappa4C_test.h | 2 +- test/diffractometer_kappa6C_test.cpp | 54 +- test/diffractometer_kappa6C_test.h | 2 +- test/diffractometer_twoC_test.cpp | 30 +- test/geometry_eulerian4C_test.cpp | 3 +- test/geometry_eulerian6C_test.cpp | 5 +- test/geometry_kappa4C_test.cpp | 23 +- test/geometry_kappa6C_test.cpp | 24 +- test/geometry_twoC_test.cpp | 4 + test/geometry_twoC_test.h | 2 +- test/mode_eulerian4C_test.cpp | 8 +- test/mode_eulerian4C_test.h | 2 +- test/mode_kappa4C_test.cpp | 188 ++-- test/mode_kappa4C_test.h | 4 +- test/mode_kappa6C_test.cpp | 222 ++-- test/mode_kappa6C_test.h | 4 +- test/mode_twoC_test.cpp | 142 ++-- test/mode_twoC_test.h | 2 +- test/pseudoaxe_eulerian4C_test.cpp | 38 +- test/pseudoaxe_eulerian6C_test.cpp | 26 +- test/pseudoaxe_kappa4C_test.cpp | 17 +- test/pseudoaxe_kappa6C_test.cpp | 60 +- test/pseudoaxe_kappa6C_test.h | 2 +- test/reflection_test.cpp | 124 +- 95 files changed, 5785 insertions(+), 7955 deletions(-) commit 2c89d376ca102d5ddef064f5b90d872351de58a5 Author: picca Date: Thu Jun 22 14:04:41 2006 +0200 * add the psi pseudoAxe to the kappa diffractometers TODO | 2 +- include/hkl/HKLException.h | 3 - include/hkl/svecmat.h | 185 ------------------------- src/HKLException.cpp | 300 +++++++++++----------------------------- src/diffractometer_kappa4C.cpp | 1 + src/diffractometer_kappa6C.cpp | 1 + 6 files changed, 87 insertions(+), 405 deletions(-) commit 2ae66cf84550dd8cc7d3846ff926b57737f54dac Author: picca Date: Mon Jun 19 15:27:50 2006 +0200 * update the version of the library VERSION | 2 +- include/hkl/config.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit 1e4a35be57e58cb4760d163aee3ec0679c1de83b Author: picca Date: Mon Jun 19 15:19:29 2006 +0200 * modification of the pseudoAxe API (add the uninitialize method) * add the doc/SConscript file to generate the doc with : scons doc doc/SConscript | 2 + include/hkl/pseudoaxe.h | 28 +++++++------------------ src/mystring.cpp | 6 ++-- src/pseudoaxe.cpp | 7 ++--- src/pseudoaxe_eulerian4C.cpp | 2 +- src/pseudoaxe_eulerian6C.cpp | 7 ++--- src/pseudoaxe_kappa4C.cpp | 46 +++++++++++++++++++++--------------------- src/pseudoaxe_twoC.cpp | 14 ++++++------ 8 files changed, 50 insertions(+), 62 deletions(-) commit 0ea3b21303830b11e066b7081d0150392cff5ea9 Author: picca Date: Thu Jun 8 16:11:28 2006 +0200 * Modification of the scons system - remove the bksys directory - add a tool directory with the doxygen tool SConstruct | 164 +++++++++++++++++++--------- binding/python/SConscript | 20 ++-- bksys/__init__.py | 116 ------------------- bksys/bksys.py | 170 ---------------------------- bksys/boost_python.py | 117 -------------------- bksys/cppunit.py | 127 --------------------- bksys/generic.py | 191 -------------------------------- bksys/gtkmm.py | 132 ---------------------- bksys/gtkmm2.4.py | 130 ---------------------- bksys/linux2/detect_bksys.py | 34 ------ bksys/linux2/detect_boost_python.py | 17 --- bksys/linux2/detect_cppunit.py | 26 ----- bksys/linux2/detect_generic.py | 11 -- bksys/linux2/detect_python.py | 19 --- bksys/python.py | 89 --------------- bksys/win32/detect_bksys.py | 36 ------ bksys/win32/detect_cppunit.py | 13 -- bksys/win32/detect_generic.py | 17 --- src/SConscript | 12 +-- test/SConscript | 26 +++- tool/doxygen.py | 208 +++++++++++++++++++++++++++++++++++ 21 files changed, 355 insertions(+), 1320 deletions(-) commit f63cfd1efc3e90f3e3e5424b96a2f19eb2313b0e Author: picca Date: Wed Jun 7 10:57:08 2006 +0200 * update the doc include/hkl/geometry_kappa6C.h | 6 +++--- include/hkl/geometry_twoC.h | 2 +- include/hkl/linux/mymap.h | 10 +++++----- include/hkl/objectwithparameters.h | 19 +++++++------------ test/pseudoaxe_kappa6C_test.cpp | 2 +- 5 files changed, 17 insertions(+), 22 deletions(-) commit ba96243587b546daae215fcd513ddf2d81f9c7ba Author: picca Date: Tue Jun 6 18:04:47 2006 +0200 * add the random test to the euleria4C and kappa4C pseudoAxe test/pseudoaxe_eulerian4C_test.cpp | 59 ++++++++++++++++++++++++++++++++++ test/pseudoaxe_kappa4C_test.cpp | 61 +++++++++++++++++++++++++++++++++++- 2 files changed, 119 insertions(+), 1 deletions(-) commit 14525001e82a37dc696e5fba8d18d1a89bb30d1c Author: picca Date: Tue Jun 6 17:15:05 2006 +0200 * add random test for all modes. * change the Value copy constructor to be correct * update the pseudoAxe::eulerian6C::Tth, add the direction parameter to deal with gamma = delta = 0. if direction = 1 choose the vertical diffraction plan if direction = 0 choose the horizontal one. TODO | 1 + binding/python/diffractometer_kappa_wrap.cpp | 3 +- binding/python/diffractometer_wrap.cpp | 2 +- include/hkl/affinement.h | 2 +- include/hkl/diffractometer.h | 8 +- include/hkl/geometry.h | 13 +- include/hkl/mode_eulerian6C.h | 426 ++++++++++------------ include/hkl/objectwithparameters.h | 10 +- include/hkl/pseudoaxe_eulerian6C.h | 63 ++-- src/SConscript | 1 + src/diffractometer.cpp | 36 +-- src/diffractometer_kappa.cpp | 3 +- src/geometry.cpp | 39 ++ src/mode_eulerian4C.cpp | 19 +- src/mode_eulerian6C.cpp | 491 +++++++++----------------- src/objectwithparameters.cpp | 11 +- src/pseudoaxe_eulerian6C.cpp | 96 +++--- src/value.cpp | 2 +- test/affinement_simplex_test.cpp | 2 + test/diffractometer_eulerian4C_test.cpp | 8 +- test/diffractometer_twoC_test.cpp | 6 +- test/geometry_twoC_test.cpp | 20 +- test/geometry_twoC_test.h | 4 + test/mode_eulerian4C_test.cpp | 346 ++++++++++++------ test/mode_eulerian4C_test.h | 8 +- test/mode_kappa4C_test.cpp | 113 ++++++ test/mode_kappa4C_test.h | 6 + test/mode_kappa6C_test.cpp | 113 ++++++ test/mode_kappa6C_test.h | 6 + test/objectwithparameters_test.cpp | 10 +- test/pseudoaxe_eulerian6C_test.cpp | 6 +- 31 files changed, 1061 insertions(+), 813 deletions(-) commit 91a32a12d876ba9e91cc5f9a928fd96f514213fd Author: picca Date: Thu Jun 1 15:04:09 2006 +0200 * add the pseudoAxe::kappa6C "tth" and "q" + test functions TODO | 6 +- include/hkl/geometry_kappa4C.h | 6 ++ include/hkl/geometry_kappa6C.h | 13 ++++ include/hkl/pseudoaxe_kappa6C.h | 94 ++++++++++++++++++++++-- src/diffractometer_kappa6C.cpp | 2 + src/geometry_kappa4C.cpp | 4 + src/geometry_kappa6C.cpp | 38 ++++++++++ src/pseudoaxe_eulerian6C.cpp | 43 ++++++----- src/pseudoaxe_kappa6C.cpp | 152 +++++++++++++++++++++++++++++++++++++++ test/SConscript | 2 +- test/pseudoaxe_kappa6C_test.cpp | 137 ++++++++++++++++++++++++++++------- test/pseudoaxe_kappa6C_test.h | 7 ++- 12 files changed, 447 insertions(+), 57 deletions(-) commit 507a5b5d88f7ac7a23892c90b38e79af2516705d Author: picca Date: Wed May 31 16:22:18 2006 +0200 * add the pseudoAxe::eulerian6C::Tth, Q and eulerian4C::vertical::Psi + test functions TODO | 8 +- include/hkl/geometry.h | 6 + include/hkl/geometry_eulerian6C.h | 13 + include/hkl/pseudoaxe_eulerian6C.h | 129 ++++++++++ src/SConscript | 1 + src/affinement_simplex.cpp | 459 +++++++++++++++++++----------------- src/diffractometer_eulerian6C.cpp | 12 +- src/geometry.cpp | 19 ++ src/geometry_eulerian4C.cpp | 15 ++ src/geometry_eulerian6C.cpp | 22 ++ src/pseudoaxe_eulerian6C.cpp | 334 ++++++++++++++++++++++++++ src/svector.cpp | 20 +- test/SConscript | 1 + test/geometry_eulerian6C_test.cpp | 57 ++++- test/geometry_eulerian6C_test.h | 4 + test/pseudoaxe_eulerian6C_test.cpp | 297 +++++++++++++++++++++++ test/pseudoaxe_eulerian6C_test.h | 39 +++ 17 files changed, 1190 insertions(+), 246 deletions(-) commit e5e4e3ffd1a9b10ee6fca12d8a2bcb6b0090967b Author: picca Date: Tue May 23 14:09:26 2006 +0200 * add the geometry::Eulerian6C::setFromGeometry method and its test function. include/hkl/geometry_eulerian6C.h | 8 +++ src/geometry_eulerian6C.cpp | 101 +++++++++++++++++++++++++++++++++++++ test/geometry_eulerian6C_test.cpp | 39 ++++++++++++++ test/geometry_eulerian6C_test.h | 2 + 4 files changed, 150 insertions(+), 0 deletions(-) commit 1ecb565292dba5fe75061e84a1f2945cd88175fa Author: picca Date: Tue May 23 10:59:20 2006 +0200 * clean the pseudoAxe code (remove the unnecessary dynamic_cast) src/pseudoaxe_eulerian4C.cpp | 6 +++--- src/pseudoaxe_kappa4C.cpp | 2 +- src/pseudoaxe_kappa6C.cpp | 20 +++----------------- 3 files changed, 7 insertions(+), 21 deletions(-) commit eaf5395c0f4ed24556f8c66c310fee5fba7862b1 Author: picca Date: Mon May 22 18:08:38 2006 +0200 * add the HKLEXCEPTION macro to take care of the location of the exception. * update all class to use HKLEXCEPTION. include/hkl/HKLException.h | 481 +++++------ include/hkl/linux/mymap.h | 43 +- include/hkl/linux/myvector.h | 732 ++++++++-------- include/hkl/win32/mymap.h | 43 +- include/hkl/win32/myvector.h | 798 +++++++++--------- src/convenience.cpp | 16 +- src/crystal.cpp | 146 ++-- src/diffractometer.cpp | 147 ++-- src/diffractometer_eulerian4C.cpp | 3 + src/diffractometer_eulerian6C.cpp | 189 +---- src/diffractometer_kappa4C.cpp | 49 +- src/diffractometer_kappa6C.cpp | 53 +- src/fitparameter.cpp | 140 ++-- src/fitparameterlist.cpp | 188 ++-- src/geometry.cpp | 24 +- src/geometry_eulerian4C.cpp | 5 +- src/geometry_eulerian6C.cpp | 44 +- src/geometry_kappa4C.cpp | 10 +- src/geometry_kappa6C.cpp | 5 +- src/geometry_twoC.cpp | 23 +- src/mode.cpp | 10 +- src/mode_eulerian4C.cpp | 95 ++- src/mode_eulerian6C.cpp | 1687 ++++++++++++++++--------------------- src/mode_kappa4C.cpp | 60 +- src/mode_kappa6C.cpp | 60 +- src/mystring.cpp | 84 +- src/object.cpp | 164 ++-- src/objectwithparameters.cpp | 138 ++-- src/pseudoaxe_eulerian4C.cpp | 9 +- src/pseudoaxe_kappa4C.cpp | 50 +- src/pseudoaxe_twoC.cpp | 50 +- src/range.cpp | 116 ++-- src/smatrix.cpp | 701 ++++++---------- src/source.cpp | 5 +- src/svector.cpp | 180 ---- src/value.cpp | 152 ++-- 36 files changed, 2901 insertions(+), 3799 deletions(-) commit 3e5dff905fad96e0e06699ea576d13399f7527c5 Author: picca Date: Mon May 22 15:00:57 2006 +0200 * update the gtk frontend TODO | 6 +- binding/python/diffractometer.gazpacho | 152 ++++++++++++++++++++++++++++---- binding/python/diffractometer2.py | 101 +++++++++++++-------- 3 files changed, 200 insertions(+), 59 deletions(-) commit 70b2fbbbf483fdb58cbbd3956c3da8468d4a5857 Author: picca Date: Fri May 19 15:33:08 2006 +0200 * add the pseudoAxe::kappa4C::vertical::twoC::Th2th, Q2th and Q with test functions. * now pseudoAxe::initialize throw an exception depending one pseudoAxe. * modification in the pseudoAxe to call correctly all virtual method with int the virtual method. TODO | 1 + include/hkl/geometry_kappa4C.h | 10 + include/hkl/pseudoaxe.h | 2 +- include/hkl/pseudoaxe_eulerian4C.h | 10 +- include/hkl/pseudoaxe_kappa4C.h | 96 ++++++++- include/hkl/pseudoaxe_kappa6C.h | 8 +- include/hkl/pseudoaxe_twoC.h | 35 ++- src/geometry_kappa4C.cpp | 9 + src/pseudoaxe_eulerian4C.cpp | 49 +++-- src/pseudoaxe_kappa4C.cpp | 437 +++++++++++++++++++++++++++++------- src/pseudoaxe_kappa6C.cpp | 8 +- src/pseudoaxe_twoC.cpp | 154 +++++++++---- test/SConscript | 5 +- test/geometry_kappa4C_test.cpp | 15 ++ test/geometry_kappa4C_test.h | 68 +++--- test/pseudoaxe_kappa4C_test.cpp | 232 +++++++++++++++++--- test/pseudoaxe_kappa4C_test.h | 8 +- test/pseudoaxe_twoC_test.cpp | 35 ++- 18 files changed, 936 insertions(+), 246 deletions(-) commit 53bd70219dd900673f763b420503477cf50a8e15 Author: picca Date: Thu May 18 17:18:39 2006 +0200 * add the th2th, q2th and q pseudoAxe::eulerian4C::Vertical * add the test function of thoses pseudoaxe. * modification of the setFromGeometry function, add a stric flag to deal with the extra axes when doing conversion between Geometries. TODO | 11 +- include/hkl/geometry.h | 3 +- include/hkl/geometry_eulerian4C.h | 8 +- include/hkl/geometry_kappa4C.h | 3 +- include/hkl/geometry_kappa6C.h | 3 +- include/hkl/geometry_twoC.h | 9 ++- include/hkl/pseudoaxe_eulerian4C.h | 114 +++++++++++------- src/geometry.cpp | 2 +- src/geometry_eulerian4C.cpp | 21 ++- src/geometry_kappa4C.cpp | 19 ++- src/geometry_kappa6C.cpp | 37 +++++- src/geometry_twoC.cpp | 20 ++-- src/mode_kappa4C.cpp | 20 ++-- src/mode_kappa6C.cpp | 20 ++-- src/pseudoaxe_eulerian4C.cpp | 213 +++++++++++++++++++++++++++++++++ src/pseudoaxe_kappa4C.cpp | 22 ++-- src/pseudoaxe_kappa6C.cpp | 40 +++--- test/geometry_eulerian4C_test.cpp | 10 +- test/geometry_kappa4C_test.cpp | 6 +- test/geometry_kappa6C_test.cpp | 6 +- test/geometry_twoC_test.cpp | 16 ++-- test/mode_kappa4C_test.cpp | 4 +- test/mode_kappa6C_test.cpp | 4 +- test/pseudoaxe_eulerian4C_test.cpp | 231 ++++++++++++++++++++++++++++++------ test/pseudoaxe_eulerian4C_test.h | 8 +- test/pseudoaxe_kappa4C_test.cpp | 10 +- test/pseudoaxe_kappa6C_test.cpp | 24 ++-- test/pseudoaxe_twoC_test.cpp | 84 +++++++------- test/pseudoaxe_twoC_test.h | 2 +- 29 files changed, 709 insertions(+), 261 deletions(-) commit 7d9a8c7b4e298b1e9a49b329e079fa51556b657c Author: picca Date: Wed May 17 16:28:25 2006 +0200 * update the setFromGeometry method of all geometries include/hkl/geometry_twoC.h | 22 ++-------- src/geometry_eulerian4C.cpp | 59 +++++++++++++++++---------- src/geometry_kappa4C.cpp | 54 +++++++++++++++++-------- src/geometry_kappa6C.cpp | 60 ++++++++++++++++++--------- src/geometry_twoC.cpp | 94 ++++++++++++++++++++++++------------------ src/pseudoaxe_kappa4C.cpp | 2 +- 6 files changed, 173 insertions(+), 118 deletions(-) commit a52d8862905d6246d56c65f54666d31ee0ec7e19 Author: picca Date: Wed May 17 14:06:34 2006 +0200 * update the TODO TODO | 18 ++++++++++++++---- 1 files changed, 14 insertions(+), 4 deletions(-) commit 0f0e44befc03e319e519420643a1d1c5850c7d2a Author: picca Date: Wed May 17 13:58:25 2006 +0200 * add the diffractometer::twoC::Vertical and test functions bksys/linux2/detect_bksys.py | 4 +- include/hkl/diffractometer_twoC.h | 58 +++++ src/SConscript | 1 + src/diffractometer_twoC.cpp | 44 ++++ src/mode_twoC.cpp | 2 +- test/SConscript | 1 + test/diffractometer_twoC_test.cpp | 421 +++++++++++++++++++++++++++++++++++++ test/diffractometer_twoC_test.h | 61 ++++++ 8 files changed, 589 insertions(+), 3 deletions(-) commit 571bf7231e5310c7fce4f3f133270fb7484fcecb Author: picca Date: Tue May 16 16:42:25 2006 +0200 * add the twoC modes "symetric" and "fix_incidence" and test functions TODO | 7 ++- include/hkl/mode_twoC.h | 53 +++++++++++++++++++++++ src/SConscript | 1 + src/mode_twoC.cpp | 72 ++++++++++++++++++++++++++++++++ test/SConscript | 1 + test/mode_twoC_test.cpp | 106 +++++++++++++++++++++++++++++++++++++++++++++++ test/mode_twoC_test.h | 41 ++++++++++++++++++ 7 files changed, 278 insertions(+), 3 deletions(-) commit b0f9651709be4acb7b8f950b911b36af2eb5fafc Author: picca Date: Tue May 16 13:58:07 2006 +0200 * add the pseudoAxe::TwoC::Vertical with test functions. * add the setFromGeometry method to Geometries. * remove CVS header of some files. TODO | 12 +- include/hkl/constants.h | 145 +-------- include/hkl/crystal.h | 266 --------------- include/hkl/geometry.h | 235 +------------- include/hkl/geometry_eulerian4C.h | 24 +-- include/hkl/geometry_kappa4C.h | 23 +-- include/hkl/geometry_kappa6C.h | 13 +- include/hkl/pseudoaxe.h | 4 +- include/hkl/pseudoaxe_eulerian4C.h | 85 +++++- include/hkl/pseudoaxe_kappa4C.h | 24 +- include/hkl/pseudoaxe_kappa6C.h | 16 +- include/hkl/pseudoaxe_twoC.h | 111 +++++++ src/SConscript | 1 + src/crystal.cpp | 303 +----------------- src/diffractometer.cpp | 9 +- src/geometry.cpp | 4 + src/geometry_eulerian4C.cpp | 117 +++----- src/geometry_kappa4C.cpp | 137 ++++----- src/geometry_kappa6C.cpp | 74 +++-- src/pseudoaxe_eulerian4C.cpp | 29 +- src/pseudoaxe_kappa4C.cpp | 48 ++-- src/pseudoaxe_kappa6C.cpp | 71 +++-- src/pseudoaxe_twoC.cpp | 247 ++++++++++++++ src/reflection.cpp | 536 +++++++++---------------------- src/source.cpp | 364 ++++++--------------- test/SConscript | 1 + test/crystal_test.cpp | 36 +- test/diffractometer_eulerian4C_test.cpp | 6 +- test/pseudoaxe_twoC_test.cpp | 152 +++++++++ test/pseudoaxe_twoC_test.h | 39 +++ 30 files changed, 1190 insertions(+), 1942 deletions(-) commit 2b17a2dead48bf0ba572ac93aecfe715c8c98d81 Author: picca Date: Thu May 11 15:31:06 2006 +0200 * add the twoC geometry and is test functions TODO | 4 + include/hkl/geometry_twoC.h | 79 +++++++++++++++++++++ src/SConscript | 1 + src/geometry_twoC.cpp | 90 ++++++++++++++++++++++++ test/SConscript | 1 + test/geometry_twoC_test.cpp | 163 +++++++++++++++++++++++++++++++++++++++++++ test/geometry_twoC_test.h | 45 ++++++++++++ 7 files changed, 383 insertions(+), 0 deletions(-) commit 3457b83d80db3dbf3fc3054595c971aa5b95d691 Author: picca Date: Tue May 9 17:47:29 2006 +0200 * update the TODO list * change the name of pseudoAxe::kappa6C::kappa4C::psi in "psi_v" TODO | 16 +++++++++++----- src/pseudoaxe_kappa6C.cpp | 2 +- 2 files changed, 12 insertions(+), 6 deletions(-) commit a6903bfeba68d9aab12b6acb071a1a0220de034c Author: picca Date: Tue May 9 16:59:50 2006 +0200 * add the pseudoAxe::kappa6C::kappa4C::vertical and their test functions include/hkl/geometry_eulerian4C.h | 2 +- include/hkl/geometry_kappa4C.h | 13 ++- include/hkl/geometry_kappa6C.h | 7 + include/hkl/pseudoaxe_kappa4C.h | 9 +- include/hkl/pseudoaxe_kappa6C.h | 103 +++++++++++----- src/geometry_eulerian4C.cpp | 4 +- src/geometry_kappa4C.cpp | 40 ++++++- src/geometry_kappa6C.cpp | 12 ++ src/pseudoaxe_eulerian4C.cpp | 2 +- src/pseudoaxe_kappa6C.cpp | 256 ++++++++++++++++++++++++++++-------- test/SConscript | 1 + test/geometry_kappa6C_test.cpp | 1 - test/pseudoaxe_kappa6C_test.cpp | 179 ++++++++++++++++++++++++++ test/pseudoaxe_kappa6C_test.h | 41 ++++++ 14 files changed, 569 insertions(+), 101 deletions(-) commit dbbfc43f62ff6c5535b3d0dba0a881f4aeeb7272 Author: picca Date: Thu May 4 13:48:53 2006 +0200 * add the pseudoAxe::kappa4C::vertical::Psi and is test function TODO | 22 ++-- include/hkl/geometry_eulerian4C.h | 139 +++++++++++++++++------- include/hkl/geometry_kappa4C.h | 47 ++++++++- include/hkl/pseudoaxe_kappa4C.h | 68 +++++++++--- include/hkl/pseudoaxe_kappa6C.h | 6 +- src/geometry_eulerian4C.cpp | 209 ++++++++++++++++++++++++++----------- src/geometry_kappa4C.cpp | 143 ++++++++++++++++++-------- src/pseudoaxe_eulerian4C.cpp | 18 ++-- src/pseudoaxe_kappa4C.cpp | 85 ++++++++++++++-- src/pseudoaxe_kappa6C.cpp | 27 ++--- test/pseudoaxe_kappa4C_test.cpp | 111 +++++++++++++++++--- test/pseudoaxe_kappa4C_test.h | 7 +- 12 files changed, 653 insertions(+), 229 deletions(-) commit 452fef17be32c9bd7346a3f9e099decd8a00f56b Author: picca Date: Wed Apr 26 15:20:11 2006 +0200 * now all vertical modes are working on win32 and linux include/hkl/mode_eulerian4C.h | 2 +- include/hkl/mode_kappa4C.h | 16 ++--- include/hkl/mode_kappa6C.h | 56 +++++++++++--- src/mode_kappa6C.cpp | 66 ++++++++++++---- test/SConscript | 1 + test/mode_kappa4C_test.cpp | 154 +++++++++++++++++++++++++++++++++++ test/mode_kappa4C_test.h | 39 +++++++++ test/mode_kappa6C_test.cpp | 178 +++++++++++++++++++++++++++++++++++++++++ test/mode_kappa6C_test.h | 39 +++++++++ 9 files changed, 514 insertions(+), 37 deletions(-) commit c97c726da8fea13916fc9e0bf7328780ba502824 Author: picca Date: Wed Apr 26 13:33:15 2006 +0200 * now mode::kappa4C works properly on windows include/hkl/mode_kappa4C.h | 44 ++++++++++++++++++- src/mode_kappa4C.cpp | 106 ++++++++++++++++++++++++++++++-------------- 2 files changed, 116 insertions(+), 34 deletions(-) commit 6445604fb1297a76d8f9b98a27d6a628d7ef5bc3 Author: picca Date: Wed Apr 26 10:29:57 2006 +0200 * update the mode::kappa4C before refactoring of the mode du to a bug of VC6 include/hkl/mode_eulerian4C.h | 24 ++++++++++++------------ include/hkl/mode_kappa4C.h | 30 +++++++++++++++--------------- src/mode_kappa4C.cpp | 3 ++- test/SConscript | 1 + 4 files changed, 30 insertions(+), 28 deletions(-) commit 6ca268ec4a66b3bb58dd7ed373a9b8767a6dab2c Author: picca Date: Mon Apr 24 13:32:16 2006 +0200 * add the test functions for the setFromGeometry of the kappa4C::Vertical and Kappa6C classes include/hkl/geometry_kappa4C.h | 8 +++++- include/hkl/geometry_kappa6C.h | 9 ++++++- src/geometry_kappa4C.cpp | 43 ++++++++++++++++++++++------------ src/geometry_kappa6C.cpp | 49 +++++++++++++++++++++++++-------------- test/geometry_kappa4C_test.cpp | 26 +++++++++++++++++++++ test/geometry_kappa4C_test.h | 2 + test/geometry_kappa6C_test.cpp | 29 +++++++++++++++++++++++ test/geometry_kappa6C_test.h | 2 + 8 files changed, 133 insertions(+), 35 deletions(-) commit f10e489f3815a2fde2dfb20700fe4a9484b301c4 Author: picca Date: Mon Apr 24 11:46:16 2006 +0200 * add the test functions for geometry::eulerian4C::Vertical::setFromGeometry TODO | 2 +- include/hkl/geometry_eulerian4C.h | 11 ++++++++++- src/geometry_eulerian4C.cpp | 36 ++++++++++++++++++++++-------------- test/geometry_eulerian4C_test.cpp | 37 +++++++++++++++++++++++++++++++++++++ test/geometry_eulerian4C_test.h | 2 ++ 5 files changed, 72 insertions(+), 16 deletions(-) commit 40066244225ec7ab1140bdc5ef819d66f2777639 Author: picca Date: Thu Apr 20 17:39:12 2006 +0200 * update the TODO list TODO | 20 ++++++++++++++------ src/pseudoaxe_kappa6C.cpp | 6 +++--- 2 files changed, 17 insertions(+), 9 deletions(-) commit 33b5e3ebc11e03ba3a514e1ba631d92a2977dafe Author: picca Date: Thu Apr 20 16:26:34 2006 +0200 * add the pseudoAxe::kappa6C::kappa4C::Vertical include/hkl/pseudoaxe_kappa4C.h | 4 +- include/hkl/pseudoaxe_kappa6C.h | 120 +++++++++++++++++++++++ src/SConscript | 1 + src/diffractometer_kappa4C.cpp | 6 +- src/diffractometer_kappa6C.cpp | 6 + src/pseudoaxe_kappa6C.cpp | 200 +++++++++++++++++++++++++++++++++++++++ 6 files changed, 332 insertions(+), 5 deletions(-) commit 77e3988300d8ed4f0124a782e4a434d53e31615e Author: picca Date: Wed Apr 19 17:03:54 2006 +0200 * add the kappa6C modes using the mode::eulerian4C::Vertical include/hkl/geometry_eulerian4C.h | 7 +- include/hkl/geometry_kappa4C.h | 8 +- include/hkl/geometry_kappa6C.h | 3 + include/hkl/mode_eulerian6C.h | 463 +++++++++++++++++++------------------ include/hkl/mode_kappa6C.h | 119 ++++++++++ src/SConscript | 1 + src/diffractometer_kappa6C.cpp | 9 +- src/geometry_eulerian4C.cpp | 24 ++- src/geometry_kappa4C.cpp | 2 +- src/geometry_kappa6C.cpp | 23 ++ src/mode_kappa4C.cpp | 20 +- src/mode_kappa6C.cpp | 160 +++++++++++++ 12 files changed, 585 insertions(+), 254 deletions(-) commit ee4176cf30d082dd0fa18204c33c4eee91121464 Author: picca Date: Wed Apr 19 15:05:21 2006 +0200 * add a free method to the MyMap class. binding/python/diffractometer_eulerian4C_wrap.cpp | 17 +- binding/python/diffractometer_kappa4C_wrap.cpp | 16 +- include/hkl/linux/mymap.h | 966 +++++++++++---------- include/hkl/win32/mymap.h | 747 ++++++++-------- src/diffractometer_eulerian4C.cpp | 17 +- src/diffractometer_kappa4C.cpp | 16 +- src/diffractometer_kappa6C.cpp | 10 +- 7 files changed, 890 insertions(+), 899 deletions(-) commit 189f3e1636869714943c893fef306e7657d64ff5 Author: picca Date: Wed Apr 19 12:45:56 2006 +0200 * small modifications to make it compile with MSVC6 bksys/win32/detect_generic.py | 2 +- src/mode_kappa4C.cpp | 11 ++++++----- src/pseudoaxe_eulerian4C.cpp | 6 +++--- 3 files changed, 10 insertions(+), 9 deletions(-) commit 034cea905926d8ad7910b96484c1c3c87ac0f272 Author: picca Date: Wed Apr 19 11:52:22 2006 +0200 * modification to separate vertical and horizontal diffractometers binding/python/diffractometer_eulerian4C_wrap.cpp | 14 +- binding/python/diffractometer_kappa4C_wrap.cpp | 18 +- doc/example/psi.cpp | 4 +- include/hkl/diffractometer_kappa4C.h | 6 +- include/hkl/geometry_eulerian4C.h | 21 +- include/hkl/geometry_kappa4C.h | 71 ++-- include/hkl/mode_eulerian4C.h | 244 +++++----- include/hkl/mode_kappa4C.h | 123 +++--- include/hkl/pseudoaxe_eulerian4C.h | 249 +++++----- include/hkl/pseudoaxe_kappa4C.h | 141 +++--- src/diffractometer_eulerian4C.cpp | 14 +- src/diffractometer_kappa4C.cpp | 24 +- src/geometry_eulerian4C.cpp | 12 +- src/geometry_kappa4C.cpp | 10 +- src/mode_eulerian4C.cpp | 558 +++++++++++---------- src/mode_kappa4C.cpp | 240 +++++----- src/pseudoaxe_eulerian4C.cpp | 288 ++++++------ src/pseudoaxe_kappa4C.cpp | 350 +++++++------- test/affinement_simplex_test.h | 2 +- test/crystal_test.h | 2 +- test/diffractometer_kappa4C_test.cpp | 4 +- test/diffractometer_kappa4C_test.h | 4 +- test/geometry_eulerian4C_test.cpp | 28 +- test/geometry_eulerian4C_test.h | 2 +- test/geometry_kappa4C_test.cpp | 36 +- test/geometry_kappa4C_test.h | 2 +- test/mode_eulerian4C_test.cpp | 14 +- test/mode_eulerian4C_test.h | 6 +- test/pseudoaxe_eulerian4C_test.cpp | 40 +- test/pseudoaxe_eulerian4C_test.h | 6 +- test/pseudoaxe_kappa4C_test.cpp | 12 +- test/pseudoaxe_kappa4C_test.h | 2 +- test/reflection_test.h | 2 +- 33 files changed, 1290 insertions(+), 1259 deletions(-) commit 10ed094e41256eee225f1afea84d9835407b200b Author: picca Date: Tue Apr 18 13:24:10 2006 +0200 * remove unnecessary members of the Kappa4C pseudoAxe. include/hkl/pseudoaxe_kappa4C.h | 4 ---- src/pseudoaxe_kappa4C.cpp | 4 ---- test/pseudoaxe_kappa4C_test.cpp | 3 ++- 3 files changed, 2 insertions(+), 9 deletions(-) commit d5dc5995bb5f13dc59d8bda16525d3133a4a3ad1 Author: picca Date: Wed Apr 12 14:52:11 2006 +0200 * now kappa4C is ready with all eulerian4C modes implemented. SConstruct | 1 + TODO | 15 ++- binding/python/diffractometer2.py | 2 +- binding/python/diffractometer_kappa4C_wrap.cpp | 7 +- include/hkl/geometry_eulerian4C.h | 61 ++++++----- include/hkl/geometry_kappa4C.h | 5 + include/hkl/mode_kappa4C.h | 133 ++++++++++++++-------- src/SConscript | 1 + src/diffractometer_kappa4C.cpp | 7 +- src/geometry_eulerian4C.cpp | 80 ++++++++----- src/geometry_kappa4C.cpp | 21 ++++ src/mode_kappa4C.cpp | 145 ++++++++++++++++++++++++ 12 files changed, 363 insertions(+), 115 deletions(-) commit 54d87dcd37066cb290f3b1802e4aa4fbb81a21fd Author: picca Date: Mon Apr 10 10:58:42 2006 +0200 * add the Eulerian pseudoAxes and their test fonctions for the kappa4C geometry. binding/python/diffractometer_kappa4C_wrap.cpp | 6 +- include/hkl/pseudoaxe.h | 2 +- include/hkl/pseudoaxe_eulerian4C.h | 4 +- include/hkl/pseudoaxe_kappa4C.h | 8 +- src/pseudoaxe_eulerian4C.cpp | 2 +- src/pseudoaxe_kappa4C.cpp | 101 ++++++++++++++---------- test/pseudoaxe_kappa4C_test.cpp | 84 +------------------ 7 files changed, 74 insertions(+), 133 deletions(-) commit 55879b90df4a5a416be1ba7abd9c27901bc472ca Author: picca Date: Thu Apr 6 16:14:06 2006 +0200 * start the pseudoaxe refactoring binding/python/diffractometer2.py | 12 +- binding/python/diffractometer_eulerian4C_wrap.cpp | 3 +- binding/python/diffractometer_eulerian4C_wrap.h | 1 - binding/python/diffractometer_kappa4C_wrap.cpp | 52 ++++ binding/python/diffractometer_kappa4C_wrap.h | 18 ++ binding/python/diffractometer_kappa_wrap.cpp | 9 + binding/python/diffractometer_kappa_wrap.h | 18 ++ binding/python/diffractometer_wrap.cpp | 309 +++++++++++++++++++++ binding/python/diffractometer_wrap.h | 91 ++++++ include/hkl/diffractometer_eulerian4C.h | 3 - include/hkl/pseudoaxe_kappa4C.h | 118 ++++++++ src/diffractometer_eulerian4C.cpp | 3 + src/diffractometer_kappa4C.cpp | 16 + src/pseudoaxe_kappa4C.cpp | 209 ++++++++++++++ test/SConscript | 1 + test/pseudoaxe_kappa4C_test.cpp | 162 +++++++++++ test/pseudoaxe_kappa4C_test.h | 37 +++ 17 files changed, 1051 insertions(+), 11 deletions(-) commit e7766c9de99e8684dfdc3d5b730a1db3f4ed3b99 Author: picca Date: Wed Apr 5 17:19:21 2006 +0200 * add the kappa4C pseudoAxes binding/python/SConscript | 3 + binding/python/diffractometer.gazpacho | 50 ++-- binding/python/diffractometer2.py | 74 +++-- binding/python/diffractometer_eulerian4C_wrap.cpp | 356 +++------------------ binding/python/diffractometer_eulerian4C_wrap.h | 78 +----- binding/python/hkl_wrap.cpp | 109 ++++--- include/hkl/diffractometer.h | 10 +- include/hkl/diffractometer_kappa4C.h | 92 ++++++ include/hkl/mode.h | 244 ++------------- src/SConscript | 1 + src/diffractometer_kappa4C.cpp | 12 + src/diffractometer_kappa6C.cpp | 12 + src/mode.cpp | 16 + src/mode_eulerian4C.cpp | 203 ------------ 14 files changed, 338 insertions(+), 922 deletions(-) commit 4988b2292a9eb0420c85846c927b085d05b040d9 Author: picca Date: Wed Mar 29 09:05:39 2006 +0200 * add forgotten files include/hkl/diffractometer_kappa.h | 42 ++++++++++++++++++++++++++++++++++ include/hkl/diffractometer_kappa6C.h | 39 +++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 0 deletions(-) commit e07c6ce897716a702fd52994d95a540067e4c3f8 Author: picca Date: Mon Mar 27 18:28:55 2006 +0200 * add the diffractometer kappa 4c and 6C + test functions include/hkl/diffractometer.h | 1590 ++++++++++++++-------------------- include/hkl/diffractometer_kappa4C.h | 64 +- src/SConscript | 3 + src/diffractometer.cpp | 359 +-------- src/diffractometer_eulerian6C.cpp | 76 +- src/diffractometer_kappa.cpp | 16 + src/diffractometer_kappa4C.cpp | 27 +- src/diffractometer_kappa6C.cpp | 26 + test/SConscript | 2 + test/diffractometer_kappa4C_test.cpp | 48 + test/diffractometer_kappa4C_test.h | 28 + test/diffractometer_kappa6C_test.cpp | 54 ++ test/diffractometer_kappa6C_test.h | 28 + 13 files changed, 934 insertions(+), 1387 deletions(-) commit d9d61711e0a2461cdcf91c2a56beabc76e75eb70 Author: picca Date: Mon Mar 27 15:26:27 2006 +0200 * add the geometry Eulerian 4C and 6C test functions include/hkl/geometry_eulerian6C.h | 12 +++ src/geometry_eulerian6C.cpp | 13 +++- test/SConscript | 2 + test/geometry_eulerian4C_test.cpp | 120 ++++++++++++++++++++++++ test/geometry_eulerian4C_test.h | 43 +++++++++ test/geometry_eulerian6C_test.cpp | 137 ++++++++++++++++++++++++++++ test/geometry_eulerian6C_test.h | 43 +++++++++ test/geometry_test.cpp | 181 +++++++++---------------------------- test/geometry_test.h | 59 ++++-------- 9 files changed, 434 insertions(+), 176 deletions(-) commit 67443e81bab02d2d92c8d432d6f5d7486e650a9b Author: picca Date: Mon Mar 27 14:35:05 2006 +0200 * add the geometry kappa 4c and 6C test functions. src/geometry_kappa6C.cpp | 4 +- test/SConscript | 2 + test/geometry_kappa4C_test.cpp | 142 +++++++++++++++++++++++++++++++++++++ test/geometry_kappa4C_test.h | 44 ++++++++++++ test/geometry_kappa6C_test.cpp | 150 ++++++++++++++++++++++++++++++++++++++++ test/geometry_kappa6C_test.h | 42 +++++++++++ 6 files changed, 382 insertions(+), 2 deletions(-) commit b9b1d24672a0a615dc232b179e06010052b78067 Author: picca Date: Thu Mar 23 18:09:08 2006 +0100 * add the kappa geometry for the kappa4C and kappa6C include/hkl/geometry.h | 78 ++++++++++++++++++++-------------------- include/hkl/geometry_kappa.h | 60 ++++++++++++++++++++++++++++++ include/hkl/geometry_kappa4C.h | 45 ++++++++++++++--------- include/hkl/geometry_kappa6C.h | 45 +++++++++++++++++++++++ src/SConscript | 3 ++ src/geometry_kappa.cpp | 40 ++++++++++++++++++++ src/geometry_kappa4C.cpp | 32 +++++++++++------ src/geometry_kappa6C.cpp | 38 +++++++++++++++++++ 8 files changed, 274 insertions(+), 67 deletions(-) commit f971a98d6e1a88dbaeef3c3abdbe2f496e1f43a6 Author: picca Date: Wed Mar 22 17:43:38 2006 +0100 * update the TODO list and the Makefile.vc TODO | 2 +- src/Makefile.vc | 55 +++++++++++++++++++++++++---------------------- src/diffractometer.cpp | 12 +++++----- 3 files changed, 36 insertions(+), 33 deletions(-) commit 5f049a439adc84a98879e62715d8da778868747f Author: picca Date: Thu Mar 2 17:59:39 2006 +0100 * clean the bksys files bksys/bksys.py | 1 - bksys/cppunit.py | 3 +-- bksys/win32/detect_cppunit.py | 3 +-- 3 files changed, 2 insertions(+), 5 deletions(-) commit f855c54d964f184eaf351b86e71faef88cccc941 Author: picca Date: Thu Mar 2 14:02:46 2006 +0100 * add the detect_bksys.py file for win32 bksys/win32/detect_bksys.py | 36 ++++++++++++++++++++++++++++++++++++ 1 files changed, 36 insertions(+), 0 deletions(-) commit 3207b706e76238886ff35b937548c53c124395a7 Author: picca Date: Thu Mar 2 13:58:28 2006 +0100 * update to compile with MSVC6 SConstruct | 12 +- bksys/__init__.py | 190 +++++++++++----------- bksys/bksys.py | 302 ++++++++++++++++++------------------ bksys/win32/detect_cppunit.py | 15 +- bksys/win32/detect_generic.py | 2 +- include/hkl/affinement.h | 11 +- include/hkl/config.h | 2 +- include/hkl/mode.h | 2 +- include/hkl/mymap.h | 2 +- include/hkl/myvector.h | 2 +- include/hkl/pseudoaxe.h | 2 +- include/hkl/win32/mymap.h | 2 - src/affinement.cpp | 82 +++++----- src/affinement_simplex.cpp | 15 ++- src/convenience.cpp | 6 + src/mode.cpp | 6 +- test/pseudoaxe_eulerian4C_test.cpp | 5 +- 17 files changed, 331 insertions(+), 327 deletions(-) commit af8a0bccc926937655e516c176447f50e608fb1c Author: picca Date: Tue Feb 28 17:42:18 2006 +0100 * modification of the uml diagramm SConstruct | 14 +- doc/uml/hkl.dia | 1685 +++++++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 1467 insertions(+), 232 deletions(-) commit e389307513cfc9937b0b1ac4fc0aaf8e1ac54a54 Author: picca Date: Fri Feb 24 17:25:10 2006 +0100 * update the documentation of quaternion.h include/hkl/quaternion.h | 287 +++++++++++++++++++++++----------------------- 1 files changed, 143 insertions(+), 144 deletions(-) commit c8fe7b59f732189d362c88200fe68f1dc24b15df Author: picca Date: Fri Feb 24 12:13:53 2006 +0100 * add the psi pseudomotor of the Eulerian4C diffractometer. TODO | 5 +- binding/python/diffractometer.gazpacho | 142 ++-- binding/python/diffractometer.py | 1097 +++++++++++---------- binding/python/diffractometer2.py | 383 +++++--- binding/python/diffractometer_eulerian4C_wrap.cpp | 284 ++++-- binding/python/diffractometer_eulerian4C_wrap.h | 17 +- binding/python/hkl_wrap.cpp | 12 +- doc/example/psi.cpp | 2 +- include/hkl/diffractometer.h | 218 +++-- include/hkl/geometry.h | 2 +- include/hkl/pseudoaxe.h | 29 +- include/hkl/pseudoaxe_eulerian4C.h | 8 +- include/hkl/quaternion.h | 17 +- src/diffractometer.cpp | 22 +- src/geometry.cpp | 550 ++++++----- src/pseudoaxe.cpp | 1 - src/pseudoaxe_eulerian4C.cpp | 32 +- src/quaternion.cpp | 361 ++++---- src/svector.cpp | 426 ++++---- test/geometry_test.cpp | 22 +- test/pseudoaxe_eulerian4C_test.cpp | 44 +- test/quaternion_test.cpp | 51 +- test/quaternion_test.h | 7 +- 23 files changed, 2060 insertions(+), 1672 deletions(-) commit 0b2246ae6a5c90a18b37bb88e89c37203f85d04a Author: picca Date: Fri Feb 10 15:54:52 2006 +0100 * add the get_value of the Psi pseudoAxe * add the convenience function normalizeAngle * move the _atan2 and _asin in the hkl::convenience namespace and rename them atan2 and asin include/hkl/convenience.h | 35 + include/hkl/mode.h | 20 +- include/hkl/pseudoaxe.h | 45 +- include/hkl/pseudoaxe_eulerian4C.h | 192 +++--- include/hkl/quaternion.h | 4 +- src/SConscript | 1 + src/convenience.cpp | 49 ++ src/crystal.cpp | 1125 ++++++++++++++-------------- src/diffractometer.cpp | 1458 ++++++++++++++++++------------------ src/mode.cpp | 48 +- src/mode_eulerian4C.cpp | 568 +++++++------- src/pseudoaxe.cpp | 13 +- src/pseudoaxe_eulerian4C.cpp | 314 ++++---- src/quaternion.cpp | 71 ++- test/pseudoaxe_eulerian4C_test.cpp | 129 ++-- test/pseudoaxe_eulerian4C_test.h | 9 +- 16 files changed, 2096 insertions(+), 1985 deletions(-) commit 62aa233b89e81ab33c46fe63da40434b13789258 Author: picca Date: Thu Feb 9 10:41:42 2006 +0100 * now the pseudoAxe::Psi::set_value is working bksys/linux2/detect_generic.py | 2 +- doc/example/plot.gnuplot | 48 ++++++++ doc/example/psi.cpp | 8 +- include/hkl/axe.h | 162 ++++++++++++++----------- include/hkl/geometry.h | 10 ++- include/hkl/geometry_eulerian4C.h | 11 ++ include/hkl/pseudoaxe_eulerian4C.h | 15 +-- src/axe.cpp | 40 +++++-- src/geometry.cpp | 17 +++ src/geometry_eulerian4C.cpp | 10 ++ src/pseudoaxe_eulerian4C.cpp | 234 ++++++++++++++++++------------------ test/axe_test.cpp | 56 +++++++-- test/axe_test.h | 24 ++-- test/geometry_test.cpp | 39 ++++++ test/geometry_test.h | 4 + 15 files changed, 444 insertions(+), 236 deletions(-) commit 632172d34923318c0c1345cbf515e85f7b9d6345 Author: picca Date: Fri Feb 3 16:42:55 2006 +0100 * update comments and add the second solution to the psi pseudoAxe doc/Doxyfile | 6 ++-- doc/example/plot.gnuplot | 40 ++++++++++++++++++----- include/hkl/diffractometer.h | 4 +- include/hkl/fitparameterlist.h | 26 ++++++++-------- include/hkl/geometry.h | 7 ++-- include/hkl/linux/mymap.h | 4 +- include/hkl/pseudoaxe_eulerian4C.h | 9 +++-- include/hkl/range.h | 61 +++++++++++++++++++---------------- src/pseudoaxe_eulerian4C.cpp | 36 +++++++++++++-------- 9 files changed, 116 insertions(+), 77 deletions(-) commit fc9a5dd35f73c5b4364b2e9d82322b47e3b09361 Author: picca Date: Thu Feb 2 18:14:08 2006 +0100 * add the psi example use to compute curves * add the gnuplot script to plot these curves modified: SConstruct new file: doc/example/SConscript new file: doc/example/plot.gnuplot new file: doc/example/psi.cpp modified: include/hkl/diffractometer.h SConstruct | 2 +- doc/example/SConscript | 15 + doc/example/plot.gnuplot | 15 + doc/example/psi.cpp | 50 +++ include/hkl/diffractometer.h | 854 +++++++++++++++++++++--------------------- 5 files changed, 508 insertions(+), 428 deletions(-) commit 3ee6413b092193e97ace00790608b60ed45cca50 Author: picca Date: Thu Feb 2 14:30:23 2006 +0100 * modified: bksys/linux2/detect_cppunit.py to fill CXXFLAGS only if needed bksys/linux2/detect_cppunit.py | 14 +++++++++----- 1 files changed, 9 insertions(+), 5 deletions(-) commit a221387369dfe8df34030e213d19708b3a7844c3 Merge: ef99b4b db5768a Author: picca Date: Thu Feb 2 11:30:48 2006 +0100 Merge branch 'cvshead' commit db5768a4bdabba2a0ea80bd3275183c3a903bb6d Author: picca Date: Thu Feb 2 09:48:32 2006 +0000 * bksys modification to compile only the python binding on linux * modification of the diffractometer_Euerlai4C_test to compile with MSVC6 SConstruct | 16 ++++++++++++---- bksys/cppunit.py | 6 ++++-- test/diffractometer_eulerian4C_test.cpp | 30 +++++++++++++++--------------- 3 files changed, 31 insertions(+), 21 deletions(-) commit ef99b4b00c1f3569d33854cf299f2360db8cd5d5 Author: picca Date: Wed Feb 1 16:20:21 2006 +0100 * add the clean target to the project. bksys/bksys.py | 5 +++++ bksys/generic.py | 7 +++++++ 2 files changed, 12 insertions(+), 0 deletions(-) commit 5f096ba6ecf0ac3eed7328ddc03da66295f8c723 Author: picca Date: Wed Feb 1 14:42:17 2006 +0000 * add the affinement dialog to the gtk frontend binding/python/diffractometer.gazpacho | 842 ++++++++++++++++++++++++++++++-- binding/python/diffractometer2.py | 58 +-- 2 files changed, 825 insertions(+), 75 deletions(-) commit b05984f40c9adb35fbb83667e0f1a06e3926704d Author: picca Date: Wed Feb 1 14:42:08 2006 +0000 * add the new crystal dialog to the frontend binding/python/diffractometer.gazpacho | 541 +++++++++++++++++++------------- binding/python/diffractometer2.py | 5 +- 2 files changed, 318 insertions(+), 228 deletions(-) commit 9f690807cedd350093d6e469fc9e70648563337b Author: picca Date: Wed Feb 1 14:41:59 2006 +0000 * update the gtk frontend to works with gazpacho binding/python/diffractometer.gazpacho | 1307 ++++----------------- binding/python/diffractometer.py | 15 +- binding/python/diffractometer2.py | 63 +- binding/python/diffractometer_eulerian4C_wrap.cpp | 17 + 4 files changed, 291 insertions(+), 1111 deletions(-) commit ff9218190c47e4880ca21fe210d14e686fda3165 Author: picca Date: Wed Feb 1 14:41:21 2006 +0000 * update diffractometer.h to use string instead of MyString. * So python binding ca compile without modification. * add link to the hkl library for the binding. * the diffractometer application is working now. binding/python/diffractometer.py | 15 ++++++--------- binding/python/diffractometer_eulerian4C_wrap.cpp | 17 ----------------- include/hkl/diffractometer.h | 8 +++++++- src/diffractometer.cpp | 8 +++++++- 4 files changed, 20 insertions(+), 28 deletions(-) commit 228ea237199f7305483a201e54537ec3a88503b2 Author: picca Date: Wed Feb 1 15:28:06 2006 +0100 * add the affinement dialog to the gtk frontend binding/python/diffractometer.gazpacho | 842 ++++++++++++++++++++++++++++++-- binding/python/diffractometer2.py | 58 +-- 2 files changed, 825 insertions(+), 75 deletions(-) commit a3f5e98c1a3467eeac29ec0c5a464807e1db60fe Author: picca Date: Wed Feb 1 14:34:00 2006 +0100 * add the new crystal dialog to the frontend binding/python/diffractometer.gazpacho | 541 +++++++++++++++++++------------- binding/python/diffractometer2.py | 5 +- 2 files changed, 318 insertions(+), 228 deletions(-) commit ac297c572a8b4fbf3a774bcc3570e55eeabb281c Author: picca Date: Wed Feb 1 14:18:15 2006 +0100 * update the gtk frontend to works with gazpacho binding/python/diffractometer.gazpacho | 1005 +++++++++++++++++++++ binding/python/diffractometer.glade | 32 +- binding/python/diffractometer.py | 15 +- binding/python/diffractometer2.py | 649 +++++++++++++ binding/python/diffractometer_eulerian4C_wrap.cpp | 17 + binding/python/diffractometer_eulerian4C_wrap.h | 4 + bksys/gtkmm.py | 132 +++ bksys/gtkmm2.4.py | 130 +++ 8 files changed, 1948 insertions(+), 36 deletions(-) commit 2a6bb45695d68cc879bacbd23f00a8fb12731244 Author: picca Date: Tue Jan 31 10:00:34 2006 +0100 * update diffractometer.h to use string instead of MyString. * So python binding ca compile without modification. * add link to the hkl library for the binding. * the diffractometer application is working now. SConstruct | 5 +- binding/python/SConscript | 13 +- binding/python/diffractometer.py | 2 +- binding/python/diffractometer_eulerian4C_wrap.cpp | 12 +- include/hkl/diffractometer.h | 117 +++++----- src/diffractometer.cpp | 242 ++++++++++++++------- 6 files changed, 238 insertions(+), 153 deletions(-) commit 210598b734620fb333f3559b245f1c2daf387a5e Author: picca Date: Mon Jan 30 17:41:32 2006 +0100 * remove the construction of python binding by default * create a mymap.h and myvector.h deauling with the platform during compilation no more need to add include path depending on the platform. SConstruct | 3 +-- TODO | 2 +- include/hkl/linux/mymap.h | 6 +++--- include/hkl/linux/myvector.h | 6 +++--- include/hkl/mymap.h | 12 ++++++++++++ include/hkl/myvector.h | 12 ++++++++++++ include/hkl/win32/mymap.h | 6 +++--- include/hkl/win32/myvector.h | 6 +++--- src/SConscript | 6 ------ test/SConscript | 6 ------ 10 files changed, 38 insertions(+), 27 deletions(-) commit d462c6508b32b517161d93d81dfa8027658fa059 Author: picca Date: Mon Jan 30 16:38:17 2006 +0100 * update bksys to compile properly on linux SConstruct | 4 +- binding/python/diffractometer.py | 4 + binding/python/diffractometer_eulerian4C_wrap.cpp | 26 +++++--- binding/python/diffractometer_eulerian4C_wrap.h | 6 +- binding/python/hkl_wrap.cpp | 2 +- binding/python/reflection_wrap.cpp | 32 ---------- bksys/boost_python.py | 67 ++++++++++++--------- bksys/generic.py | 3 +- include/hkl/mystring.h | 6 ++ src/mystring.cpp | 3 + 10 files changed, 76 insertions(+), 77 deletions(-) commit 38b64182e3a6fbb2c8fc6afd7ba566ae95b89494 Author: picca Date: Mon Jan 30 14:56:28 2006 +0100 * update the bksys system to add the boost_python module SConstruct | 6 +- binding/SConscript | 2 - binding/python/SConscript | 27 ++- binding/python/diffractometer_eulerian4C_wrap.cpp | 8 +- binding/python/diffractometer_eulerian4C_wrap.h | 1 + bksys/boost_python.py | 108 +++++++ bksys/cppunit.py | 183 ++++++------ bksys/generic.py | 334 +++++++++++---------- bksys/linux2/detect_boost_python.py | 17 + bksys/linux2/detect_cppunit.py | 27 +- bksys/linux2/detect_python.py | 19 ++ bksys/python.py | 89 ++++++ bksys/win32/detect_generic.py | 2 +- 13 files changed, 539 insertions(+), 284 deletions(-) commit 3c003acf6608233c5ae412d302c9c183bbe50fb9 Author: picca Date: Fri Jan 27 16:46:59 2006 +0100 modified: bksys/linux2/detect_cppunit.py bksys/linux2/detect_cppunit.py | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) commit 71b4d48abde6a2827dd71deccaa6d4b00cc870be Author: picca Date: Fri Jan 27 15:28:40 2006 +0100 modified: bksys/linux2/detect_generic.py deleted: toto bksys/linux2/detect_generic.py | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit c5722bcd78b9a8469cbc348e04b8805d4f2267c6 Author: picca Date: Fri Jan 27 15:18:51 2006 +0100 new file: toto 0 files changed, 0 insertions(+), 0 deletions(-) commit 4b15fca5af9c73fcd35453a2600bc3c8b6205a02 Author: picca Date: Fri Jan 27 15:03:11 2006 +0100 deleted: release_notes.txt release_notes.txt | 16 ---------------- 1 files changed, 0 insertions(+), 16 deletions(-) commit 696d941ed850130adfd23ea0edfc3b9221282203 Author: picca Date: Fri Jan 27 15:01:40 2006 +0100 new file: release_notes.txt release_notes.txt | 16 ++++++++++++++++ 1 files changed, 16 insertions(+), 0 deletions(-) commit 2cb7dba40c74462fe57c54a6c0453afb36fdaf90 Author: picca Date: Thu Jan 26 18:27:55 2006 +0100 include/hkl/linux/mymap.h | 530 ++++++++++++++++++++++++++++++++++++++++++ include/hkl/linux/myvector.h | 498 +++++++++++++++++++++++++++++++++++++++ include/hkl/win32/mymap.h | 420 +++++++++++++++++++++++++++++++++ include/hkl/win32/myvector.h | 458 ++++++++++++++++++++++++++++++++++++ 4 files changed, 1906 insertions(+), 0 deletions(-) commit 9b7da4dcbd7de9c7a7088016743da2fd30e37713 Author: picca Date: Thu Jan 26 18:26:30 2006 +0100 release_notes.txt | 16 ---------------- 1 files changed, 0 insertions(+), 16 deletions(-) commit a24fd18d4a8bb0398e3d0946a368b7ece9008123 Author: picca Date: Thu Jan 26 16:29:34 2006 +0000 * rename readme.txt README README | 37 +++++++++++++++++++++++++++++++++++++ readme.txt | 37 ------------------------------------- 2 files changed, 37 insertions(+), 37 deletions(-) commit e5f46b6b1959bdab857b81ecbae3a696073797dc Author: picca Date: Thu Jan 26 15:28:24 2006 +0000 * Add the VERSION file VERSION | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) commit c5a779e1e8eb67e45df3b9fced1e5ef5e5069140 Author: picca Date: Thu Jan 26 14:24:51 2006 +0000 * update documentation TODO | 6 +- doc/Doxyfile | 10 +- include/hkl/affinement.h | 104 +++++++------- include/hkl/axe.h | 6 +- include/hkl/crystal.h | 14 ++- include/hkl/diffractometer.h | 52 ++++--- include/hkl/fitparameter.h | 102 +++++++------- include/hkl/geometry.h | 61 ++++---- include/hkl/mode.h | 72 ++++++---- include/hkl/mode_eulerian4C.h | 54 ++++---- include/hkl/mode_eulerian6C.h | 271 +++++++----------------------------- include/hkl/mystring.h | 24 +++- include/hkl/object.h | 69 ++++++---- include/hkl/objectwithparameters.h | 79 ++++++----- include/hkl/pseudoaxe.h | 13 +- include/hkl/pseudoaxe_eulerian4C.h | 55 ++------ include/hkl/quaternion.h | 113 ++++++++-------- include/hkl/range.h | 2 +- include/hkl/reflection.h | 39 +++--- include/hkl/value.h | 110 ++++++++------- src/diffractometer.cpp | 7 +- src/fitparameter.cpp | 4 +- src/geometry.cpp | 4 +- src/mode.cpp | 8 +- src/pseudoaxe_eulerian4C.cpp | 4 - src/value.cpp | 3 +- 26 files changed, 590 insertions(+), 696 deletions(-) commit c9124da9d415981c8a7b8daf8d200ea1fedbe970 Author: picca Date: Wed Jan 25 13:46:25 2006 +0000 * remove lattice.cpp and vertex.cpp src/lattice.cpp | 149 ------------------------------------------------------- src/vertex.cpp | 132 ------------------------------------------------ 2 files changed, 0 insertions(+), 281 deletions(-) commit 0d5908c1a2ec450b7c63ef667be6c6900c2ea8e2 Author: picca Date: Wed Jan 25 13:44:39 2006 +0000 * remove constant.cpp superseded by constant.h src/constants.cpp | 141 ----------------------------------------------------- 1 files changed, 0 insertions(+), 141 deletions(-) commit e1f7b6b260c6057beedb7a726a3c7cab51f909d3 Author: picca Date: Tue Jan 24 16:37:43 2006 +0000 * update scons files to compile with the new includes location src/SConscript | 6 +++--- test/SConscript | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) commit eacd28be00e69601062067084efac1ff4db0b22c Author: picca Date: Tue Jan 24 16:18:30 2006 +0000 *move the includes files include/HKLException.h | 315 ---------- include/affinement.h | 160 ----- include/axe.h | 121 ---- include/config.h | 19 - include/constants.h | 160 ----- include/crystal.h | 491 --------------- include/crystallist.h | 54 -- include/diffractometer.h | 1032 ------------------------------ include/diffractometer_eulerian4C.h | 143 ----- include/diffractometer_eulerian6C.h | 73 --- include/diffractometer_kappa4C.h | 41 -- include/fitparameter.h | 134 ---- include/fitparameterlist.h | 93 --- include/geometry.h | 381 ------------ include/geometry_eulerian4C.h | 28 - include/geometry_eulerian6C.h | 30 - include/geometry_kappa4C.h | 30 - include/hkl/HKLException.h | 318 ++++++++++ include/hkl/affinement.h | 160 +++++ include/hkl/axe.h | 121 ++++ include/hkl/config.h | 19 + include/hkl/constants.h | 163 +++++ include/hkl/crystal.h | 494 +++++++++++++++ include/hkl/crystallist.h | 54 ++ include/hkl/diffractometer.h | 1035 +++++++++++++++++++++++++++++++ include/hkl/diffractometer_eulerian4C.h | 143 +++++ include/hkl/diffractometer_eulerian6C.h | 73 +++ include/hkl/diffractometer_kappa4C.h | 41 ++ include/hkl/fitparameter.h | 134 ++++ include/hkl/fitparameterlist.h | 93 +++ include/hkl/geometry.h | 384 ++++++++++++ include/hkl/geometry_eulerian4C.h | 28 + include/hkl/geometry_eulerian6C.h | 30 + include/hkl/geometry_kappa4C.h | 30 + include/hkl/mode.h | 293 +++++++++ include/hkl/mode_eulerian4C.h | 132 ++++ include/hkl/mode_eulerian6C.h | 410 ++++++++++++ include/hkl/mode_kappa4C.h | 69 ++ include/hkl/mystring.h | 24 + include/hkl/object.h | 105 ++++ include/hkl/objectwithparameters.h | 107 ++++ include/hkl/pseudoaxe.h | 66 ++ include/hkl/pseudoaxe_eulerian4C.h | 166 +++++ include/hkl/quaternion.h | 152 +++++ include/hkl/range.h | 136 ++++ include/hkl/reflection.h | 384 ++++++++++++ include/hkl/source.h | 279 +++++++++ include/hkl/svecmat.h | 541 ++++++++++++++++ include/hkl/value.h | 131 ++++ include/lattice.h | 52 -- include/linux/mymap.h | 452 -------------- include/linux/myvector.h | 447 ------------- include/mode.h | 290 --------- include/mode_eulerian4C.h | 132 ---- include/mode_eulerian6C.h | 410 ------------ include/mode_kappa4C.h | 69 -- include/mystring.h | 24 - include/object.h | 105 ---- include/objectwithparameters.h | 107 ---- include/pseudoaxe.h | 66 -- include/pseudoaxe_eulerian4C.h | 166 ----- include/quaternion.h | 152 ----- include/range.h | 136 ---- include/reflection.h | 381 ------------ include/source.h | 276 -------- include/svecmat.h | 538 ---------------- include/value.h | 131 ---- include/vertex.h | 150 ----- include/win32/mymap.h | 420 ------------- include/win32/myvector.h | 458 -------------- 70 files changed, 6315 insertions(+), 8267 deletions(-) commit a824eddf08228cb666f4be12850146ae3b8238ec Author: picca Date: Tue Jan 24 14:56:30 2006 +0000 *** empty log message *** include/linux/mystring.h | 24 ------------------------ include/mystring.h | 24 ++++++++++++++++++++++++ include/win32/mystring.h | 24 ------------------------ 3 files changed, 24 insertions(+), 48 deletions(-) commit ac74a01e545b7bf065863740a946ebc50bcdae94 Author: picca Date: Tue Jan 24 14:54:09 2006 +0000 * now serialization works on win32 include/win32/mymap.h | 21 +++++++++++++++------ include/win32/myvector.h | 15 +++++++++++++-- 2 files changed, 28 insertions(+), 8 deletions(-) commit b859055bdecca48f19eaf200e42e2c04458349f4 Author: picca Date: Tue Jan 24 14:31:23 2006 +0000 * add the MyString class include/affinement.h | 4 +- include/axe.h | 6 +- include/crystal.h | 9 +- include/crystallist.h | 6 +- include/diffractometer.h | 126 +++--- include/fitparameter.h | 6 +- include/fitparameterlist.h | 3 +- include/geometry.h | 23 +- include/linux/mymap.h | 706 +++++++++++++++--------------- include/linux/mystring.h | 24 + include/linux/myvector.h | 737 ++++++++++++++++--------------- include/object.h | 18 +- include/objectwithparameters.h | 10 +- include/pseudoaxe.h | 5 +- include/range.h | 4 +- include/reflection.h | 15 +- include/value.h | 6 +- include/win32/mymap.h | 48 +- include/win32/mystring.h | 24 + include/win32/myvector.h | 35 +- src/SConscript | 1 + src/affinement.cpp | 2 +- src/axe.cpp | 2 +- src/crystal.cpp | 9 +- src/crystallist.cpp | 2 +- src/diffractometer.cpp | 135 +++--- src/fitparameter.cpp | 2 +- src/geometry.cpp | 49 +-- src/mystring.cpp | 47 ++ src/object.cpp | 18 +- src/objectwithparameters.cpp | 8 +- src/range.cpp | 2 +- src/reflection.cpp | 11 +- src/value.cpp | 2 +- test/SConscript | 1 + test/axe_test.cpp | 4 +- test/crystal_test.cpp | 2 +- test/diffractometer_eulerian4C_test.cpp | 30 +- test/geometry_test.cpp | 10 +- test/mystring_test.cpp | 29 ++ test/mystring_test.h | 24 + test/object_test.cpp | 8 +- test/objectwithparameters_test.cpp | 6 +- test/reflection_test.cpp | 2 +- 44 files changed, 1201 insertions(+), 1020 deletions(-) commit 0c810e475098dcdc483fa70adf02f24b51966cd0 Author: picca Date: Tue Jan 24 09:06:46 2006 +0000 * update the win32 part include/linux/mymap.h | 30 -------------------- include/win32/mymap.h | 70 +++++++++++++++++++++++++++++++++++++++++------- src/diffractometer.cpp | 6 ++-- 3 files changed, 63 insertions(+), 43 deletions(-) commit e6cff6276cd384a0b8d805b19848acbaf2a9ed12 Author: picca Date: Mon Jan 23 16:14:55 2006 +0000 * now diffractometer serialization works!!! SConstruct | 4 +- doc/uml/hkl.dia | 1972 ++++++++++++++++++++++++++++--- include/affinement.h | 4 +- include/diffractometer.h | 14 +- include/diffractometer_eulerian4C.h | 2 +- include/linux/mymap.h | 213 +++- include/mode.h | 7 +- include/pseudoaxe.h | 4 +- include/reflection.h | 6 +- src/axe.cpp | 7 +- src/crystal.cpp | 104 ++- src/diffractometer.cpp | 104 ++- src/diffractometer_eulerian4C.cpp | 6 +- src/geometry.cpp | 59 +- src/reflection.cpp | 38 +- test/SConscript | 12 +- test/diffractometer_eulerian4C_test.cpp | 49 + 17 files changed, 2282 insertions(+), 323 deletions(-) commit 73cac96f3ca8743f640a86b7f467f4bba51e4432 Author: picca Date: Mon Jan 16 15:41:48 2006 +0000 * bksys update bksys/linux2/detect_cppunit.py | 3 +- bksys/linux2/detect_generic.py | 2 +- bksys/win32/detect_cppunit.py | 7 +++- bksys/win32/detect_generic.py | 56 +++------------------------------------ 4 files changed, 12 insertions(+), 56 deletions(-) commit e9cd3b34472e706a53d68c11a0b1613942f51017 Author: picca Date: Mon Jan 16 15:30:09 2006 +0000 * update bksys SConstruct | 15 +- bksys/__init__.py | 56 +++-- bksys/bksys.py | 449 +++++++--------------------------------- bksys/cppunit.py | 13 +- bksys/generic.py | 66 ++++--- bksys/linux2/detect_bksys.py | 10 +- bksys/linux2/detect_cppunit.py | 5 + bksys/linux2/detect_generic.py | 57 +----- 8 files changed, 175 insertions(+), 496 deletions(-) commit 25c7f3a17528e1d2bf7f7409042e0f4cfbf1791a Author: picca Date: Mon Jan 16 09:22:10 2006 +0000 *update bksys bksys/bksys.py | 8 ++++---- bksys/cppunit.py | 8 ++++---- bksys/generic.py | 6 +++--- 3 files changed, 11 insertions(+), 11 deletions(-) commit 85cea40d89cdab9c276161334235745365ca7736 Author: picca Date: Fri Jan 13 13:47:57 2006 +0000 * start refactoring of bksys SConstruct | 10 +---- bksys/__init__.py | 62 +++++++++++++----------------- bksys/bksys.py | 87 +++++++++++++++++++++++++++++++++++------- bksys/cppunit.py | 2 +- bksys/generic.py | 2 +- bksys/linux2/detect_bksys.py | 58 ++++++--------------------- test/SConscript | 3 +- 7 files changed, 119 insertions(+), 105 deletions(-) commit 3182ec44748769270c2562bffd5369902077771c Author: picca Date: Thu Jan 12 13:41:24 2006 +0000 * now it works on win32 and linux include/win32/mymap.h | 4 ++-- test/SConscript | 2 +- test/reflection_test.cpp | 3 --- 3 files changed, 3 insertions(+), 6 deletions(-) commit 434377bdb8f9fcf84cc56fdebe3169f10f0f1b4e Author: picca Date: Thu Jan 12 13:06:54 2006 +0000 * modification of MyMap for win32 include/win32/mymap.h | 19 +++++++++++++++++++ src/geometry.cpp | 3 +-- test/reflection_test.cpp | 3 +++ 3 files changed, 23 insertions(+), 2 deletions(-) commit 39c58d7bb71d8f4b0f0f8ba985cfb603974a7f42 Author: picca Date: Thu Jan 12 12:43:43 2006 +0000 * work on the persistance test/SConscript | 5 +++-- test/geometry_test.cpp | 8 ++++---- test/reflection_test.cpp | 4 ++-- 3 files changed, 9 insertions(+), 8 deletions(-) commit bd330b6fa56a742b1f088451884d3e16cc8bfda3 Author: picca Date: Thu Jan 12 09:52:13 2006 +0000 * clean the bksys files bksys/bksys.py | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) commit 8748a79f8e8e387fb7089e51678606a36c207881 Author: picca Date: Thu Jan 12 09:18:09 2006 +0000 * now bksys works on win32 bksys/bksys.py | 1 + bksys/generic.py | 2 +- bksys/win32/detect_cppunit.py | 2 + include/win32/mymap.h | 57 ++++++++++++++++++++++ include/win32/myvector.h | 104 ++++++++++++++++++++++++++++++++++++----- src/SConscript | 2 +- test/SConscript | 2 +- 7 files changed, 155 insertions(+), 15 deletions(-) commit 88ca1d1cd6240ba801580e29fcd5eddaaf71eb5b Author: picca Date: Wed Jan 11 16:34:08 2006 +0000 *** empty log message *** bksys/bksys.pyc | Bin 13026 -> 0 bytes 1 files changed, 0 insertions(+), 0 deletions(-) commit ee7543951104e6474a233512d90cfbd8002f25d6 Author: picca Date: Wed Jan 11 16:33:24 2006 +0000 * add ToStream to MyStarMap bksys/bksys.pyc | Bin 11370 -> 13026 bytes include/win32/mymap.h | 22 ++++++++++++++++++++++ 2 files changed, 22 insertions(+), 0 deletions(-) commit efcb9e985aed4f755deef67e835eac65b3ca7b3b Author: picca Date: Wed Jan 11 15:30:55 2006 +0000 * update bksys to work on windows bksys/__init__.py | 25 +++++++++++++------------ bksys/bksys.py | 15 ++++++++++++--- bksys/bksys.pyc | Bin 12685 -> 11370 bytes bksys/cppunit.py | 25 +++++++++++++++---------- bksys/generic.py | 12 +++++++++++- bksys/linux2/detect_bksys.py | 12 ++++++++++++ bksys/linux2/detect_generic.py | 11 ----------- bksys/win32/detect_cppunit.py | 6 ++---- bksys/win32/detect_generic.py | 16 +--------------- 9 files changed, 66 insertions(+), 56 deletions(-) commit 5ea3753e54c4bc929d56aa43db0edb2bb641ea2a Author: picca Date: Wed Jan 11 13:44:01 2006 +0000 * refactoring of bksys bksys/linux2/detect_bksys.py | 54 +++++++++++++++++++++++++++++++ bksys/linux2/detect_cppunit.py | 18 ++++++++++ bksys/linux2/detect_generic.py | 69 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 141 insertions(+), 0 deletions(-) commit c7a4a07debfc10328d1a3d336608ac691f1c6d76 Author: picca Date: Wed Jan 11 13:41:42 2006 +0000 *remove the unix directory bksys/unix/detect_bksys.py | 54 ---------------- bksys/unix/detect_cppunit.py | 23 ------- bksys/unix/detect_generic.py | 142 ------------------------------------------ 3 files changed, 0 insertions(+), 219 deletions(-) commit 268c92553f8351e391126fb0df0a0d736fcfb083 Author: picca Date: Wed Jan 11 13:12:37 2006 +0000 *update bksys SConstruct | 14 +- bksys/__init__.py | 109 ++++ bksys/bksys.py | 387 ++++++++++++++ bksys/bksys.pyc | Bin 0 -> 12685 bytes bksys/cppunit.py | 119 ++--- bksys/generic.py | 1159 +++-------------------------------------- bksys/unix/detect_bksys.py | 54 ++ bksys/win32/detect_generic.py | 90 +--- test/SConscript | 10 +- test/main.cpp | 16 + 10 files changed, 710 insertions(+), 1248 deletions(-) commit b19d05907c32c6947b001d1219f6a714d21d853f Author: picca Date: Fri Jan 6 17:13:24 2006 +0000 *** empty log message *** bksys/generic.py | 3 ++- bksys/win32/detect_cppunit.py | 3 ++- test/SConscript | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) commit 2e6e56fdf47dc95f6c2fbb0812115be888d81f5a Author: picca Date: Fri Jan 6 16:28:49 2006 +0000 * bksys modifications bksys/cppunit.py | 3 ++- bksys/win32/detect_cppunit.py | 26 +++++++------------------- 2 files changed, 9 insertions(+), 20 deletions(-) commit 596f6bfed6e5dd7716aca572bdc98409e52b7b3d Author: picca Date: Fri Jan 6 16:24:29 2006 +0000 * modification of the bksys files SConstruct | 3 +- TODO | 3 + bksys/cppunit.py | 35 +- bksys/unix/detect_cppunit.py | 13 +- bksys/win32/detect_cppunit.py | 17 +- include/affinement.h | 13 + include/config.h | 6 + include/crystal.h | 346 +++++----- include/crystallist.h | 8 - include/diffractometer.h | 982 ++++++++++++++------------- include/linux/mymap.h | 28 + include/mode.h | 13 +- include/pseudoaxe.h | 14 - include/pseudoaxe_eulerian4C.h | 29 +- include/reflection.h | 225 ++++--- include/svecmat.h | 6 +- src/affinement.cpp | 23 + src/crystal.cpp | 964 ++++++++++++++------------- src/crystallist.cpp | 1 + src/diffractometer.cpp | 1114 ++++++++++++++++--------------- src/pseudoaxe.cpp | 12 - src/pseudoaxe_eulerian4C.cpp | 38 +- src/reflection.cpp | 41 +- src/smatrix.cpp | 7 +- src/svector.cpp | 7 +- test/affinement_simplex_test.cpp | 20 + test/affinement_simplex_test.h | 2 + test/crystal_test.cpp | 21 + test/crystal_test.h | 3 +- test/crystallist_test.cpp | 23 + test/crystallist_test.h | 2 + test/diffractometer_eulerian4C_test.cpp | 41 +- test/diffractometer_eulerian4C_test.h | 6 +- test/mode_eulerian4C_test.cpp | 28 + test/mode_eulerian4C_test.h | 3 + test/pseudoaxe_eulerian4C_test.cpp | 19 +- test/pseudoaxe_eulerian4C_test.h | 2 + test/reflection_test.cpp | 35 +- test/reflection_test.h | 6 +- 39 files changed, 2293 insertions(+), 1866 deletions(-) commit 9c2197a6bd75a3297e36986a64f9730ef2da670c Author: picca Date: Fri Jan 6 11:03:33 2006 +0000 *** empty log message *** bksys/cppunit.py | 25 ++++++++++++++--------- bksys/win32/detect_cppunit.py | 42 ++++++++++++++++++++++++++++------------ 2 files changed, 44 insertions(+), 23 deletions(-) commit 87aa14ce93593e46c96ea7116a5fe41c06954d19 Author: picca Date: Fri Jan 6 09:17:49 2006 +0000 * remove the unnecessary bksys files SConstruct | 2 +- bksys/compiler.py | 79 ---- bksys/lowlevel.py | 100 ----- bksys/unix/detect_lowlevel.py | 848 ---------------------------------------- bksys/win32/detect_lowlevel.py | 33 -- 5 files changed, 1 insertions(+), 1061 deletions(-) commit 04b04e48aca1bd6eea2d2b777e70b242fa0bdfc5 Author: picca Date: Thu Jan 5 16:34:57 2006 +0000 add the necessary files for bksys on win32 SConstruct | 2 +- bksys/compiler.py | 79 +++++++++++++++++++++++++++++++++++++++++ bksys/win32/detect_cppunit.py | 20 ++++++++++ bksys/win32/detect_generic.py | 3 +- 4 files changed, 102 insertions(+), 2 deletions(-) commit 072562723169c3795076124582eddf1e1bdadaaf Author: picca Date: Thu Jan 5 15:55:09 2006 +0000 * modification of SCons files for bksys SConstruct | 92 ++++++++++++++++++++++++++++-------------------------- src/SConscript | 76 ++++++++++++++++++++++---------------------- test/SConscript | 60 +++++++++++++++--------------------- 3 files changed, 111 insertions(+), 117 deletions(-) commit b77566c628ed9fb2146f195c0d9ef03ba8901f2b Author: picca Date: Thu Jan 5 15:50:47 2006 +0000 add the bksys system for unix bksys/cppunit.py | 97 ++++ bksys/generic.py | 1173 ++++++++++++++++++++++++++++++++++++++++ bksys/lowlevel.py | 100 ++++ bksys/unix/detect_cppunit.py | 20 + bksys/unix/detect_generic.py | 142 +++++ bksys/unix/detect_lowlevel.py | 848 +++++++++++++++++++++++++++++ bksys/win32/detect_generic.py | 148 +++++ bksys/win32/detect_lowlevel.py | 33 ++ 8 files changed, 2561 insertions(+), 0 deletions(-) commit cd83c021cccda61140dd302dc6e48ae9c617ef36 Author: picca Date: Tue Dec 13 16:58:26 2005 +0000 * now serialization is on the way. TODO | 1 + include/linux/mymap.h | 8 +++----- src/fitparameter.cpp | 6 +++--- src/geometry.cpp | 1 + src/object.cpp | 48 +++++++++--------------------------------------- src/range.cpp | 4 ++-- test/SConscript | 14 ++++++++++---- test/geometry_test.cpp | 8 +++++--- test/object_test.cpp | 19 +++++++++++++------ test/range_test.cpp | 2 +- test/value_test.cpp | 1 - 11 files changed, 48 insertions(+), 64 deletions(-) commit f9517dabb6210b6e9832bcb4f1f78f2512f4291e Author: picca Date: Tue Dec 13 12:44:24 2005 +0000 *** empty log message *** include/mymap.h | 300 ------------------------------- include/myvector.h | 506 ---------------------------------------------------- 2 files changed, 0 insertions(+), 806 deletions(-) commit f6a5619c7b06a815ee61523e945c62d4c3526277 Author: picca Date: Tue Dec 13 10:57:25 2005 +0000 *now compile on windows include/win32/mymap.h | 123 +++++++++++++++------------------------------ include/win32/myvector.h | 3 +- src/object.cpp | 10 ++-- test/object_test.cpp | 3 +- 4 files changed, 48 insertions(+), 91 deletions(-) commit 0d4dde6cdcd2538cc1f5e0ce442dcddea9d7f898 Author: picca Date: Tue Dec 13 09:57:59 2005 +0000 *** empty log message *** include/linux/mymap.h | 269 ++++++++++++++++++++++++++++ include/linux/myvector.h | 438 ++++++++++++++++++++++++++++++++++++++++++++++ include/win32/mymap.h | 306 ++++++++++++++++++++++++++++++++ include/win32/myvector.h | 367 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 1380 insertions(+), 0 deletions(-) commit b54034f062a45d698a4a864911b9a37189c194c3 Author: picca Date: Tue Dec 13 09:56:34 2005 +0000 *for test include/crystallist.h | 62 +++++++++++++++++++++++++++++++++++++++++++++ src/crystallist.cpp | 32 +++++++++++++++++++++++ test/crystallist_test.cpp | 49 +++++++++++++++++++++++++++++++++++ test/crystallist_test.h | 33 ++++++++++++++++++++++++ 4 files changed, 176 insertions(+), 0 deletions(-) commit a0ef632df1fdedae8b3998d7a6054de5f1d8b4e4 Author: picca Date: Tue Dec 13 09:53:53 2005 +0000 * fir windows test compile. TODO | 28 ++- doc/uml/hkl.dia | 453 +++++++++++++++++++++++++--- include/axe.h | 162 ++++++----- include/constants.h | 8 +- include/crystal.h | 9 +- include/diffractometer.h | 34 ++- include/fitparameter.h | 201 +++++++------ include/fitparameterlist.h | 6 +- include/geometry.h | 24 ++- include/object.h | 59 +++-- include/objectwithparameters.h | 15 +- include/quaternion.h | 233 ++++++++------- include/range.h | 215 +++++++------ include/source.h | 194 +++++++------ include/svecmat.h | 31 ++- include/value.h | 26 ++- src/SConscript | 1 + src/axe.cpp | 133 +++++---- src/diffractometer.cpp | 69 ++++- src/fitparameter.cpp | 42 ++- src/fitparameterlist.cpp | 142 +++++----- src/geometry.cpp | 65 ++++ src/object.cpp | 110 ++++++- src/objectwithparameters.cpp | 18 ++ src/quaternion.cpp | 36 ++- src/range.cpp | 78 +++-- src/smatrix.cpp | 511 ++++++++++++++++--------------- src/source.cpp | 185 +++++++----- src/svector.cpp | 29 ++- src/value.cpp | 30 ++- test/SConscript | 7 +- test/axe_test.cpp | 31 ++- test/axe_test.h | 17 +- test/diffractometer_eulerian4C_test.cpp | 94 +++++- test/diffractometer_eulerian4C_test.h | 6 + test/fitparameter_test.cpp | 15 + test/fitparameter_test.h | 17 +- test/geometry_test.cpp | 14 + test/geometry_test.h | 2 + test/object_test.cpp | 18 ++ test/object_test.h | 2 + test/objectwithparameters_test.cpp | 23 ++ test/objectwithparameters_test.h | 2 + test/quaternion_test.cpp | 23 ++ test/quaternion_test.h | 2 + test/range_test.cpp | 21 ++ test/range_test.h | 14 +- test/source_test.cpp | 40 ++- test/source_test.h | 18 +- test/svecmat_test.cpp | 93 +++++-- test/svecmat_test.h | 6 + test/value_test.cpp | 20 ++ test/value_test.h | 3 + 53 files changed, 2462 insertions(+), 1173 deletions(-) commit 9b45d9a830e2abc8015ed59381443d5b7ca74acf Author: picca Date: Tue Dec 6 09:31:00 2005 +0000 *** empty log message *** include/crystal.h | 9 ++++++--- src/crystal.cpp | 37 +++++++++++++++++++++++++++++-------- 2 files changed, 35 insertions(+), 11 deletions(-) commit 5fe7aa95f39f29078fd3428ce0d8d5300d7b65b1 Author: picca Date: Mon Dec 5 10:34:43 2005 +0000 * When adding a reflection with the same (hkl) than another one, the flag is automatically set to false. include/crystal.h | 8 +++- include/geometry.h | 11 +++-- include/source.h | 13 +++++- src/crystal.cpp | 34 ++++++++++++++-- src/geometry.cpp | 15 ++++--- src/quaternion.cpp | 3 +- src/source.cpp | 16 ++++++-- test/SConscript | 13 +++--- test/affinement_simplex_test.cpp | 41 +++++++++++-------- test/crystal_test.cpp | 32 ++++++++++++--- test/diffractometer_eulerian4C_test.cpp | 66 +++++++++++++++++++++++++++++- test/diffractometer_eulerian4C_test.h | 2 + test/source_test.cpp | 4 +- 13 files changed, 199 insertions(+), 59 deletions(-) commit 6f4b68bc0b1d54b7d83f8578cc023a780b5fb2cb Author: picca Date: Thu Dec 1 09:41:25 2005 +0000 * modification of the affineCrystal behaviour SConstruct | 3 ++- TODO | 3 ++- include/pseudoaxe_eulerian4C.h | 30 +++++++++++++++++++++++++++--- src/affinement.cpp | 6 +++--- src/affinement_simplex.cpp | 32 ++++++++++++++++---------------- src/diffractometer.cpp | 14 +++++++++++++- src/pseudoaxe_eulerian4C.cpp | 34 +++++++++++++++++----------------- test/SConscript | 1 + test/affinement_simplex_test.cpp | 18 ++++++++++++------ test/pseudoaxe_eulerian4C_test.cpp | 11 ++++++----- 10 files changed, 99 insertions(+), 53 deletions(-) commit 4c88b1b0777d1901a203fa3ffae70470140b4322 Author: picca Date: Fri Nov 25 14:01:46 2005 +0000 * add getCrystalParametersNames SConstruct | 6 +- TODO | 3 +- binding/python/SConscript | 2 +- doc/uml/hkl.dia | 348 ++++++++++--------------------- include/affinement.h | 3 + include/diffractometer.h | 125 ++++++----- include/diffractometer_eulerian4C.h | 1 + include/geometry.h | 223 +++++++++----------- include/geometry_eulerian4C.h | 21 +-- include/mode.h | 11 +- include/objectwithparameters.h | 132 ++++++------ include/pseudoaxe.h | 20 +- include/pseudoaxe_eulerian4C.h | 16 +- src/SConscript | 7 + src/affinement_simplex.cpp | 2 - src/diffractometer.cpp | 116 ++++++----- src/diffractometer_eulerian4C.cpp | 43 +++-- src/geometry.cpp | 79 +++----- src/geometry_eulerian4C.cpp | 11 +- src/mode.cpp | 4 +- src/objectwithparameters.cpp | 27 ++- src/pseudoaxe.cpp | 16 +- src/pseudoaxe_eulerian4C.cpp | 68 +++++-- test/SConscript | 17 +- test/diffractometer_eulerian4C_test.cpp | 26 ++- test/diffractometer_eulerian4C_test.h | 2 + test/libHKL_test.cpp | 3 +- test/pseudoaxe_eulerian4C_test.cpp | 26 +-- test/pseudoaxe_eulerian4C_test.h | 8 +- 29 files changed, 657 insertions(+), 709 deletions(-) commit af98251755365205ec2f2ae0f756903542afd0f7 Author: picca Date: Wed Nov 16 14:30:07 2005 +0000 * update to compile with MSVC++6 include/affinement.h | 1 + include/fitparameter.h | 8 ++---- include/myvector.h | 39 ++++++++++++++++++++++++++----- include/pseudoaxe.h | 5 +-- include/svecmat.h | 12 ++++----- src/fitparameter.cpp | 59 ++++++++++++++++++++++-------------------------- src/svector.cpp | 34 +++++++++------------------ 7 files changed, 82 insertions(+), 76 deletions(-) commit 8df4a173e78fe135272d45f9ff328705a4b6841c Author: picca Date: Wed Nov 16 12:52:38 2005 +0000 * add the pseudoAxe part doc/uml/hkl.dia | 135 +++++++++++++++++++++++++++++++++--- include/pseudoaxe_eulerian4C.h | 113 ++++++++++++++++++++++++++++++ include/svecmat.h | 18 ++++- src/pseudoaxe_eulerian4C.cpp | 77 ++++++++++++++++++++ test/pseudoaxe_eulerian4C_test.cpp | 79 +++++++++++++++++++++ test/pseudoaxe_eulerian4C_test.h | 32 +++++++++ 6 files changed, 440 insertions(+), 14 deletions(-) commit 9563ec09af71a977998e6b74aff1ddf65393ca4b Author: picca Date: Wed Nov 16 12:42:49 2005 +0000 * modified crystal::randomize to deal with different combination of alpha, beta and gamma fit. SConstruct | 2 +- TODO | 7 +- doc/uml/hkl.dia | 158 ++++++- include/crystal.h | 365 +++++++------- include/svecmat.h | 555 +++++++++++---------- src/affinement_simplex.cpp | 21 +- src/crystal.cpp | 840 ++++++++++++++++--------------- src/svector.cpp | 320 +++++++----- test/affinement_simplex_test.cpp | 12 +- test/affinement_simplex_test.h | 2 +- test/diffractometer_eulerian4C_test.cpp | 36 -- test/diffractometer_eulerian4C_test.h | 30 +- test/svecmat_test.cpp | 10 + test/svecmat_test.h | 59 ++- 14 files changed, 1328 insertions(+), 1089 deletions(-) commit a9aaa0faea4de553a677662b3d958cdfa02dc6d5 Author: picca Date: Mon Nov 14 13:34:13 2005 +0000 * update the Simplex method. SConstruct | 2 +- binding/python/diffractometer.glade | 242 +++- binding/python/diffractometer.py | 82 +- binding/python/diffractometer_eulerian4C_wrap.cpp | 8 +- binding/python/diffractometer_eulerian4C_wrap.h | 4 +- binding/python/hkl_wrap.cpp | 4 +- doc/Maxima/E4C_bissector.max | 12 +- doc/uml/hkl.dia | 2212 +++++++++++++-------- include/affinement.h | 14 +- include/diffractometer.h | 937 +++++----- include/geometry.h | 65 +- include/mode.h | 8 +- include/mode_eulerian4C.h | 13 +- include/mode_eulerian6C.h | 35 +- include/pseudoaxe.h | 29 +- include/quaternion.h | 20 + include/reflection.h | 62 +- src/affinement_simplex.cpp | 360 ++-- src/crystal.cpp | 25 +- src/diffractometer.cpp | 20 +- src/diffractometer_eulerian4C.cpp | 6 +- src/diffractometer_eulerian6C.cpp | 7 +- src/geometry.cpp | 19 +- src/mode_eulerian4C.cpp | 413 ++-- src/mode_eulerian6C.cpp | 57 +- src/quaternion.cpp | 258 ++-- src/reflection.cpp | 41 +- test/SConscript | 2 + test/affinement_simplex_test.cpp | 63 +- test/affinement_simplex_test.h | 12 +- test/crystal_test.cpp | 22 +- test/diffractometer_eulerian4C_test.cpp | 36 + test/diffractometer_eulerian4C_test.h | 2 + test/geometry_test.cpp | 26 +- test/geometry_test.h | 34 +- test/mode_eulerian4C_test.cpp | 32 +- test/quaternion_test.cpp | 47 +- test/quaternion_test.h | 66 +- test/reflection_test.cpp | 41 +- test/reflection_test.h | 4 - 40 files changed, 3111 insertions(+), 2231 deletions(-) commit 1197a2e955aec19ddadf3857d8f10b7ae7ade257 Author: picca Date: Fri Oct 28 12:59:26 2005 +0000 *** empty log message *** doc/uml/hkl.dia | 550 +++++++++++++++++++++-------------------- include/geometry_eulerian4C.h | 5 + include/pseudoaxe.h | 6 + src/SConscript | 1 + src/geometry.cpp | 2 +- src/geometry_eulerian4C.cpp | 8 +- 6 files changed, 296 insertions(+), 276 deletions(-) commit 91ba98316476ad4c6157e0dde624117b06664277 Author: picca Date: Thu Oct 27 09:40:42 2005 +0000 * add the PseudoAxe part to the library. * update the uml diagramm doc/uml/hkl.dia | 326 ++++++++++++++++++++++--------- include/diffractometer.h | 79 ++++++-- include/geometry.h | 27 ++- include/pseudoaxe.h | 9 +- src/diffractometer.cpp | 71 ++++++- src/geometry.cpp | 12 ++ test/diffractometer_eulerian4C_test.cpp | 96 +++++----- 7 files changed, 447 insertions(+), 173 deletions(-) commit 8db4880b37fdc8be47360521ce9fadc72704d9fa Author: picca Date: Wed Oct 26 15:54:50 2005 +0000 * derive Mode from ObjectwithParameters * update uml diagram doc/uml/hkl.dia | 124 +++++++++++------------------------- include/mode.h | 54 +++------------- include/objectwithparameters.h | 2 +- src/mode.cpp | 43 ------------ src/mode_eulerian4C.cpp | 23 ++++--- src/objectwithparameters.cpp | 2 +- test/objectwithparameters_test.cpp | 2 +- 7 files changed, 63 insertions(+), 187 deletions(-) commit 5957a2347551110fad7f9f62ae87dacafbbb2b42 Author: picca Date: Wed Oct 26 15:14:20 2005 +0000 * remove AngleConfiguration include/angleconfiguration.h | 329 ------------------------------- include/angleconfiguration_eulerian4C.h | 32 --- include/angleconfiguration_eulerian6C.h | 34 ---- include/angleconfiguration_kappa4C.h | 30 --- test/angleconfiguration_test.cpp | 113 ----------- test/angleconfiguration_test.h | 43 ---- 6 files changed, 0 insertions(+), 581 deletions(-) commit 5eedac15f0dfdb35e50e44e9fdcf70af0963ab18 Author: picca Date: Wed Oct 26 15:11:41 2005 +0000 * AngleConfiguration -> Geometry * add PseudoAxe class doc/uml/hkl.dia | 349 +++++++---- include/diffractometer.h | 20 +- include/diffractometer_eulerian4C.h | 2 +- include/diffractometer_eulerian6C.h | 2 +- include/geometry.h | 354 +++++++++++ include/geometry_eulerian4C.h | 30 + include/geometry_eulerian6C.h | 30 + include/geometry_kappa4C.h | 30 + include/mode.h | 14 +- include/mode_eulerian4C.h | 36 +- include/mode_eulerian6C.h | 78 ++-- include/mode_kappa4C.h | 7 +- include/pseudoaxe.h | 78 +++ include/reflection.h | 19 +- src/SConscript | 31 +- src/angleconfiguration.cpp | 184 ------ src/angleconfiguration_eulerian4C.cpp | 20 - src/angleconfiguration_eulerian6C.cpp | 22 - src/angleconfiguration_kappa4C.cpp | 19 - src/diffractometer.cpp | 24 +- src/diffractometer_eulerian4C.cpp | 6 +- src/diffractometer_eulerian6C.cpp | 20 +- src/geometry.cpp | 192 ++++++ src/geometry_eulerian4C.cpp | 20 + src/geometry_eulerian6C.cpp | 21 + src/geometry_kappa4C.cpp | 18 + src/mode.cpp | 136 ++-- src/mode_eulerian4C.cpp | 62 +- src/mode_eulerian6C.cpp | 1078 ++++++++++++++++----------------- src/pseudoaxe.cpp | 31 + src/reflection.cpp | 43 +- test/SConscript | 2 +- test/affinement_simplex_test.cpp | 53 +- test/affinement_simplex_test.h | 4 +- test/crystal_test.cpp | 68 +- test/crystal_test.h | 4 +- test/geometry_test.cpp | 111 ++++ test/geometry_test.h | 44 ++ test/mode_eulerian4C_test.cpp | 135 ++-- test/mode_eulerian4C_test.h | 4 +- test/reflection_test.cpp | 26 +- test/reflection_test.h | 4 +- 42 files changed, 2117 insertions(+), 1314 deletions(-) commit 1395b2a7d5f06234726d2ca71d56cd7836bd3eed Author: picca Date: Wed Oct 26 08:50:38 2005 +0000 * the true add of ObjectWithParameter class test functions test/objectwithparameters_test.cpp | 41 ++++++++++++++++++++++++++++++++++++ test/objectwithparameters_test.h | 26 ++++++++++++++++++++++ 2 files changed, 67 insertions(+), 0 deletions(-) commit 112a7ceff4cffa2483d8b17bcc227fb61734e6cb Author: picca Date: Wed Oct 26 08:48:11 2005 +0000 * add test functions for ObjectWithParameters class doc/uml/hkl.dia | 142 ++++++++++++++++++++++++++++++++++++++++++++++--------- test/SConscript | 1 + 2 files changed, 120 insertions(+), 23 deletions(-) commit 866d6ddfebfefb728c87d2d82774297650d8deeb Author: picca Date: Tue Oct 25 15:58:16 2005 +0000 * update implementation of the Value class src/value.cpp | 76 +++++++++++++++++++++++++++----------------------------- 1 files changed, 37 insertions(+), 39 deletions(-) commit 37cc7afab93647b6d2ec8a3a0409b719c81c7563 Author: picca Date: Tue Oct 25 15:52:26 2005 +0000 * add the ObjectWithParameters class * documentation of the template MyVector * add overload << for the MyVector template class SConstruct | 2 +- TODO | 2 + doc/uml/hkl.dia | 104 ++++++++++++++++++++++++++++++++------- include/myvector.h | 50 +++++++++++++++++++ include/objectwithparameters.h | 90 ++++++++++++++++++++++++++++++++++ include/value.h | 1 - src/SConscript | 1 + src/objectwithparameters.cpp | 59 ++++++++++++++++++++++ src/value.cpp | 2 +- 9 files changed, 289 insertions(+), 22 deletions(-) commit 2caa117b43d1fb6628c24e1578648329b8f3b7aa Author: picca Date: Tue Oct 25 14:27:31 2005 +0000 * Object add m_description, accessor and test functions doc/uml/hkl.dia | 175 +++++++++++++++++++++++++++++++++++++------------- include/crystal.h | 19 +++-- include/object.h | 117 ++++++++++++++++++++------------- src/crystal.cpp | 29 +++++---- src/object.cpp | 70 ++++++++++++-------- test/object_test.cpp | 23 ++++--- test/object_test.h | 17 +++-- 7 files changed, 294 insertions(+), 156 deletions(-) commit 6d6df56f4423fca74d5711d1e9fad4e9a3644a4a Author: picca Date: Tue Oct 25 12:29:38 2005 +0000 * in axes.cpp use m_axe and m_direction instead of get_axe and get_direction for now in a class I am using directly the menbers not the accessors is it good I don't know? doc/uml/hkl.dia | Bin 18771 -> 1003104 bytes doc/uml/next_hkl.dia | Bin 20274 -> 997320 bytes src/axe.cpp | 8 ++++---- 3 files changed, 4 insertions(+), 4 deletions(-) commit 98d5c66b98482fe8cdcda228f539d5973f7b88de Author: picca Date: Tue Oct 25 11:34:22 2005 +0000 * oops forgot to modify in crystal_test.cpp: #include cristal_test.h test/crystal_test.cpp | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) commit fca08247b750483498a65dd99d304648f58dba00 Author: picca Date: Tue Oct 25 11:32:11 2005 +0000 * rename cristal.h and cristal.cpp -> crystal.h crystal.cpp * same for the cristal_test suite. include/affinement.h | 6 +- include/diffractometer.h | 8 +- src/crystal.cpp | 8 +- test/SConscript | 2 +- test/affinement_simplex_test.h | 2 +- test/cristal_test.cpp | 390 ---------------------------------------- test/cristal_test.h | 63 ------- test/crystal_test.cpp | 390 ++++++++++++++++++++++++++++++++++++++++ test/crystal_test.h | 63 +++++++ test/mode_eulerian4C_test.h | 2 +- 10 files changed, 471 insertions(+), 463 deletions(-) commit 255b0219fe4aa165eb0d25dcc08491e6642ef9fa Author: picca Date: Tue Oct 25 11:25:11 2005 +0000 *** empty log message *** include/cristal.h | 451 ----------------------------------------------------- 1 files changed, 0 insertions(+), 451 deletions(-) commit f21ba9ca3285cf9a6e91ca206714239d5dbb146d Author: picca Date: Tue Oct 25 10:07:37 2005 +0000 * rename cristal.h -> crystal.h include/crystal.h | 454 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 454 insertions(+), 0 deletions(-) commit 6fad31cc0abca6bbe5bbf2ab4308da18a7c81887 Author: picca Date: Tue Oct 25 10:05:42 2005 +0000 * cristal.cpp -> crystal.cpp src/SConscript | 2 +- src/cristal.cpp | 686 ------------------------------------------------------ src/crystal.cpp | 689 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 690 insertions(+), 687 deletions(-) commit 7f933c9e141a92da82b808cd6fc0789239d72313 Author: picca Date: Thu Oct 20 12:48:47 2005 +0000 * right calculation for the number of usable reflections close: #976 #977 TODO | 3 +- include/cristal.h | 28 ++- include/reflection.h | 20 +- src/angleconfiguration.cpp | 14 +- src/cristal.cpp | 763 ++++++++++++++++++++------------------ src/diffractometer.cpp | 40 ++- src/reflection.cpp | 258 +++++++------ test/angleconfiguration_test.cpp | 4 + test/cristal_test.cpp | 17 + test/cristal_test.h | 2 + test/reflection_test.cpp | 56 ++-- test/reflection_test.h | 20 +- 12 files changed, 682 insertions(+), 543 deletions(-) commit 64938494797ff3cd54918aa153437f3e6a0fa617 Author: picca Date: Tue Oct 11 14:23:47 2005 +0000 *** empty log message *** SConstruct | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit c19565c57dfff97823fa7d2f87fd8d242a787c45 Author: picca Date: Tue Oct 11 14:14:26 2005 +0000 *** empty log message *** readme.txt | 33 ++++++++++++++------------------- 1 files changed, 14 insertions(+), 19 deletions(-) commit 6fbdd9c9d7bbb96ceb53f2f1ffbe5cfcf030027f Author: picca Date: Tue Oct 11 14:10:51 2005 +0000 *Modification to take care of the C4786 warning message for the debug version of the library SConstruct | 2 +- include/angleconfiguration.h | 7 ++++++- include/config.h | 5 +++++ include/cristal.h | 7 ++++++- include/diffractometer.h | 7 ++++++- 5 files changed, 24 insertions(+), 4 deletions(-) commit e7cf53df0b07d6c89d75fc0ff7b2846915fd195b Author: picca Date: Tue Oct 11 13:37:09 2005 +0000 * Add debug and profile option to the SConstruct file SConstruct | 31 +++++++++++++++++++++++++------ test/SConscript | 1 - 2 files changed, 25 insertions(+), 7 deletions(-) commit 880c2f25b8c7a1c52f56f2d770dadd42bb9b6fc8 Author: picca Date: Wed Oct 5 13:00:59 2005 +0000 futur uml digramme doc/uml/next_hkl.dia | Bin 0 -> 20274 bytes 1 files changed, 0 insertions(+), 0 deletions(-) commit 81887f08dab13fe57a4ef7fe658e1d9fb5771188 Author: picca Date: Wed Oct 5 12:57:47 2005 +0000 Add most of the figures in the doc doc/Doxyfile-to-tex | 248 - doc/Maxima/E4C_bissector.max | 12 + doc/Maxima/E4C_constant_chi.max | 12 + doc/Maxima/E4C_constant_chi_phi.max | 12 + doc/Maxima/E4C_constant_omega.max | 12 + doc/Maxima/E4C_delta_omega.max | 12 + doc/README.txt | 17 - doc/projetHKL_4C.doc | Bin 268288 -> 0 bytes doc/projetHKL_6C.doc | Bin 118784 -> 0 bytes doc/projetHKL_architecture.mdl | 8918 ----------------------------------- doc/projetHKL_architecture.pdf | Bin 218839 -> 0 bytes doc/projetHKL_reference_manual.pdf | Bin 466018 -> 0 bytes doc/uml/hkl.dia | Bin 0 -> 18771 bytes 13 files changed, 60 insertions(+), 9183 deletions(-) commit a4d4171f1dfdb3c641f9cdb8ef6b0969f6c969bd Author: picca Date: Wed Oct 5 09:02:33 2005 +0000 merge avec la branche head SConstruct | 24 + TODO | 70 + binding/SConscript | 2 + binding/python/SConscript | 14 + binding/python/diffractometer.glade | 3221 ++++++++++++++++++++ binding/python/diffractometer.py | 642 ++++ binding/python/diffractometer_eulerian4C_wrap.cpp | 222 ++ binding/python/diffractometer_eulerian4C_wrap.h | 67 + binding/python/hkl_wrap.cpp | 57 + binding/python/reflection_wrap.cpp | 32 + binding/python/reflection_wrap.h | 18 + doc/Doxyfile | 270 ++ doc/hkl.lyx | 3231 +++++++++++++++++++++ include/HKLException.h | 315 ++ include/affinement.h | 137 + include/angleconfiguration.h | 324 +++ include/angleconfiguration_eulerian4C.h | 32 + include/angleconfiguration_eulerian6C.h | 34 + include/angleconfiguration_kappa4C.h | 30 + include/axe.h | 103 + include/config.h | 8 + include/constants.h | 156 + include/cristal.h | 430 +++ include/diffractometer.h | 906 ++++++ include/diffractometer_eulerian4C.h | 142 + include/diffractometer_eulerian6C.h | 73 + include/diffractometer_kappa4C.h | 41 + include/fitparameter.h | 123 + include/fitparameterlist.h | 92 + include/lattice.h | 52 + include/mode.h | 309 ++ include/mode_eulerian4C.h | 137 + include/mode_eulerian6C.h | 421 +++ include/mode_kappa4C.h | 70 + include/mymap.h | 300 ++ include/myvector.h | 429 +++ include/object.h | 63 + include/quaternion.h | 117 + include/range.h | 121 + include/reflection.h | 360 +++ include/source.h | 249 ++ include/svecmat.h | 472 +++ include/value.h | 116 + include/vertex.h | 150 + readme.txt | 41 +- src/HKLException.cpp | 68 +- src/HKLException.h | 308 -- src/LibUser.cpp | 208 -- src/Makefile | 157 - src/Makefile.linux | 157 + src/Makefile.vc | 44 +- src/SConscript | 36 + src/affinement.cpp | 22 + src/affinement_simplex.cpp | 207 ++ src/angleconfig.h | 389 --- src/angleconfiguration.cpp | 184 ++ src/angleconfiguration_eulerian4C.cpp | 20 + src/angleconfiguration_eulerian6C.cpp | 22 + src/angleconfiguration_kappa4C.cpp | 19 + src/axe.cpp | 67 + src/constants.cpp | 113 +- src/constants.h | 170 -- src/cristal.cpp | 864 ++++-- src/cristal.h | 253 -- src/diffractometer.cpp | 3225 ++++----------------- src/diffractometer.h | 770 ----- src/diffractometer_eulerian4C.cpp | 41 + src/diffractometer_eulerian6C.cpp | 215 ++ src/diffractometer_kappa4C.cpp | 15 + src/eulerian_angleConfiguration6C.cpp | 212 -- src/eulerian_angleconfiguration4C.cpp | 163 -- src/eulerian_bissectormode4C.cpp | 588 ---- src/eulerian_diffractometer6C.cpp | 2010 ------------- src/eulerian_mode6C.cpp | 1166 -------- src/fitparameter.cpp | 74 + src/fitparameterlist.cpp | 106 + src/kappa_angleconfiguration4C.cpp | 151 - src/lattice.cpp | 149 + src/main.cpp | 910 ------ src/mode.cpp | 95 + src/mode.h | 676 ----- src/mode_eulerian4C.cpp | 489 ++++ src/mode_eulerian6C.cpp | 1009 +++++++ src/object.cpp | 35 + src/quaternion.cpp | 137 + src/range.cpp | 50 + src/reflection.cpp | 357 ++- src/reflection.h | 188 -- src/smatrix.cpp | 374 ++- src/source.cpp | 196 ++- src/source.h | 159 - src/svecmat.h | 336 --- src/svector.cpp | 343 ++- src/value.cpp | 76 + src/vertex.cpp | 132 + test/SConscript | 44 + test/affinement_simplex_test.cpp | 73 + test/affinement_simplex_test.h | 37 + test/angleconfiguration_test.cpp | 109 + test/angleconfiguration_test.h | 43 + test/axe_test.cpp | 65 + test/axe_test.h | 35 + test/cristal_test.cpp | 373 +++ test/cristal_test.h | 61 + test/diffractometer_eulerian4C_test.cpp | 365 +++ test/diffractometer_eulerian4C_test.h | 51 + test/diffractometer_test.cpp | 366 +++ test/diffractometer_test.h | 54 + test/fitparameter_test.cpp | 54 + test/fitparameter_test.h | 31 + test/lattice_test.cpp | 146 + test/lattice_test.h | 39 + test/libHKL_test.cpp | 15 + test/mode_eulerian4C_test.cpp | 118 + test/mode_eulerian4C_test.h | 38 + test/object_test.cpp | 47 + test/object_test.h | 29 + test/quaternion_test.cpp | 169 ++ test/quaternion_test.h | 58 + test/range_test.cpp | 50 + test/range_test.h | 31 + test/reflection_test.cpp | 102 + test/reflection_test.h | 46 + test/source_test.cpp | 74 + test/source_test.h | 41 + test/svecmat_test.cpp | 282 ++ test/svecmat_test.h | 77 + test/value_test.cpp | 71 + test/value_test.h | 35 + 129 files changed, 23079 insertions(+), 12128 deletions(-) commit 7217579f8770d850ad2655a90d847d5afc7555d8 Author: picca Date: Fri Feb 11 15:52:45 2005 +0000 documentation src/mode.h | 766 +++++++++++++++++++++++++++++++++++++----------------------- 1 files changed, 469 insertions(+), 297 deletions(-) commit 6c21981ce6ebdf629a8cae305e445c9377d35827 Author: picca Date: Fri Feb 11 14:30:17 2005 +0000 documentation src/diffractometer.h | 850 ++++++++++++++++++++++++++++++++++---------------- 1 files changed, 573 insertions(+), 277 deletions(-) commit 62228a6dfb9a0e5cb410a7da8dd8982e17561aff Author: picca Date: Thu Feb 10 16:47:04 2005 +0000 documentation update src/angleconfig.h | 485 +++++++++++++++++++++++++++++------------------------ 1 files changed, 269 insertions(+), 216 deletions(-) commit dfd8f995709112a5af73bc2f88fa53eda64c2e73 Author: picca Date: Thu Feb 10 16:16:12 2005 +0000 mistake in the comment after #endif src/constants.h | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) commit 592b14f52e925626aeb398bdf58a7e842a3769e5 Author: picca Date: Thu Feb 10 14:09:34 2005 +0000 documentation src/constants.h | 147 +++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 93 insertions(+), 54 deletions(-) commit a017ef29c534929359d01d31292eff3cc4f3b913 Author: picca Date: Thu Feb 10 13:20:07 2005 +0000 documentation src/cristal.h | 294 ++++++++++++++++++++++++++++++++++----------------------- 1 files changed, 176 insertions(+), 118 deletions(-) commit e48580adab165f4bbd14342c7110ab882879a99c Author: picca Date: Thu Feb 10 09:19:49 2005 +0000 Rewrite of the documentation src/HKLException.h | 208 +++++++++++++++++++++++++++++++++++----------------- 1 files changed, 139 insertions(+), 69 deletions(-) commit 3c1951af5eeb823f6e10f2a62ba13ea045620ab5 Author: picca Date: Tue Feb 8 17:03:08 2005 +0000 update the documentation src/reflection.cpp | 32 +++++++++++++++- src/reflection.h | 101 +++++++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 114 insertions(+), 19 deletions(-) commit 9f789cfe23bf64a2223fe0654acfa9e6c62fe33c Author: picca Date: Tue Feb 8 15:52:27 2005 +0000 update for doxygen src/Makefile | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) commit be81041247de60c08c9c88d450e3093a5ced60e3 Author: picca Date: Tue Feb 8 15:51:05 2005 +0000 update the documenattion src/reflection.h | 27 ++++-- src/source.cpp | 43 ++++++-- src/source.h | 131 ++++++++++++++++++------ src/svecmat.h | 296 ++++++++++++++++++++++++++++++++++++++++++----------- src/svector.cpp | 14 ++- 5 files changed, 393 insertions(+), 118 deletions(-) commit 6959b190c9ce105309724b969ab76347a181ab02 Author: dupuy Date: Thu Jan 27 16:05:46 2005 +0000 modif pour release_0_5_2 doc/projetHKL_reference_manual.pdf | Bin 351240 -> 466018 bytes 1 files changed, 0 insertions(+), 0 deletions(-) commit fb1c91b1375bf149026bbafa0e69d255fc97c8b8 Author: delos Date: Thu Jan 27 09:23:53 2005 +0000 Commentaires pour CVS en tete des fichiers src/HKLException.cpp | 45 ++++++++ src/HKLException.h | 45 ++++++++ src/LibUser.cpp | 44 +++++++ src/angleconfig.h | 46 ++++++++- src/constants.cpp | 47 ++++++++- src/constants.h | 44 +++++++ src/cristal.cpp | 44 +++++++ src/cristal.h | 44 +++++++ src/diffractometer.cpp | 44 +++++++ src/diffractometer.h | 44 +++++++ src/eulerian_angleConfiguration6C.cpp | 44 +++++++ src/eulerian_angleconfiguration4C.cpp | 44 +++++++ src/eulerian_bissectormode4C.cpp | 60 ++++++++-- src/eulerian_diffractometer6C.cpp | 52 ++++++++- src/eulerian_mode6C.cpp | 199 +++++++++++++++++++++++++++++++-- src/kappa_angleconfiguration4C.cpp | 44 +++++++ src/mode.h | 49 ++++++++- src/reflection.cpp | 44 +++++++ src/reflection.h | 44 +++++++ src/smatrix.cpp | 44 +++++++ src/source.cpp | 44 +++++++ src/source.h | 44 +++++++ src/svecmat.h | 44 +++++++ src/svector.cpp | 44 +++++++ 24 files changed, 1218 insertions(+), 29 deletions(-) commit 145d7d79f2fcd7bcbb6ac4b412120edc27f8a16e Author: dupuy Date: Wed Jan 26 11:10:41 2005 +0000 modification avant release 5.2 readme.txt | 15 ++++++++++----- release_notes.txt | 4 ++++ 2 files changed, 14 insertions(+), 5 deletions(-) commit 25da915ad165f49c1da49a82dd65b278f2c58384 Author: delos Date: Wed Jan 26 10:41:26 2005 +0000 Makefile Linux src/Makefile | 43 +++++++++++++++++++++++++++++++------------ 1 files changed, 31 insertions(+), 12 deletions(-) commit fddadbe4c241f9d940138cc16c85873a1295d237 Author: delos Date: Tue Jan 25 15:08:19 2005 +0000 PREMIERE VERSION PORTABLE LINUX - WINDOWS !!! src/LibUser.cpp | 93 +++++------ src/diffractometer.cpp | 310 +++++++++++++++------------------ src/diffractometer.h | 15 +- src/eulerian_angleConfiguration6C.cpp | 28 ++-- src/eulerian_angleconfiguration4C.cpp | 22 ++-- src/eulerian_bissectormode4C.cpp | 7 - src/eulerian_diffractometer6C.cpp | 156 ++++++++-------- src/eulerian_mode6C.cpp | 22 ++-- src/kappa_angleconfiguration4C.cpp | 14 +- src/mode.h | 25 ++-- src/reflection.cpp | 75 +++----- src/smatrix.cpp | 22 ++- src/source.cpp | 8 +- src/svecmat.h | 5 +- src/svector.cpp | 6 +- 15 files changed, 378 insertions(+), 430 deletions(-) commit ad59582800ce14740f2b8e8f10d35ec2c23bd865 Author: delos Date: Mon Jan 24 16:49:09 2005 +0000 Ajout de eulerian_diffractometer6C.cpp (sans l'espace) src/eulerian_diffractometer6C.cpp | 1966 +++++++++++++++++++++++++++++++++++++ 1 files changed, 1966 insertions(+), 0 deletions(-) commit 15aebc18395aefcdb78377e08c3d836ff14de7d4 Author: delos Date: Mon Jan 24 16:47:01 2005 +0000 Suppression de eulerian_ diffractometer6C.cpp (suppression de l'espace) src/eulerian_ diffractometer6C.cpp | 1966 ------------------------------------ 1 files changed, 0 insertions(+), 1966 deletions(-) commit 06665e99a36a37ef3609c81c1b97d9a0efc4c5af Author: delos Date: Fri Jan 21 16:15:55 2005 +0000 Corrections du mode 3C bras levant, nouvelle mthode de rsolution doc/projetHKL_6C.doc | Bin 112128 -> 118784 bytes 1 files changed, 0 insertions(+), 0 deletions(-) commit bc0ebca92da0ea8ddb1e09d5b2d2f2c4d50b2056 Author: dupuy Date: Thu Jan 20 15:37:02 2005 +0000 modif pour release_0_5_1 release_notes.txt | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit d58a10ccf3e7f7d43d047060a5c2bc1fb1d46b33 Author: dupuy Date: Wed Jan 19 13:36:06 2005 +0000 modif pour compil linux src/Makefile | 11 +++----- src/cristal.cpp | 74 +++++++++++++++++++++++++++--------------------------- src/svecmat.h | 4 +- 3 files changed, 43 insertions(+), 46 deletions(-) commit f0ab86c0425fa78e3e9e454dca1a6b106c6e831d Author: dupuy Date: Wed Jan 19 11:23:24 2005 +0000 marche pas : svector.h src/Makefile | 93 +++++++-------------------------------------------------- 1 files changed, 12 insertions(+), 81 deletions(-) commit 86ed62a00c213a1241fd44570425bfde9f19cd30 Author: dupuy Date: Wed Jan 19 11:06:42 2005 +0000 plus de repertoire pour les obj src/Makefile | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit e38714f2e95bc2c6ef568f1187111123e0ee0d09 Author: dupuy Date: Wed Jan 19 11:03:41 2005 +0000 ajout des dependance src/Makefile | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 69 insertions(+), 0 deletions(-) commit dcc99560be908024228e7accda6894041fda6344 Author: dupuy Date: Wed Jan 19 10:59:41 2005 +0000 pour la compil avec des makefile sous linux src/Makefile | 140 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 140 insertions(+), 0 deletions(-) commit 4e67d89aa9284b1fad34698d9b59c5bb1a4e6b1d Author: dupuy Date: Wed Jan 19 10:07:54 2005 +0000 pour la compil avec des makefile src/README-compil.txt | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) commit a38c388a2ba2e7e45c493e2802fcc8da5886778f Author: delos Date: Wed Jan 19 09:17:18 2005 +0000 Corrections mineures doc/projetHKL_4C.doc | Bin 268288 -> 268288 bytes doc/projetHKL_6C.doc | Bin 101888 -> 112128 bytes src/diffractometer.h | 76 ++++++------------ src/eulerian_ diffractometer6C.cpp | 5 +- src/eulerian_bissectormode4C.cpp | 7 +- src/eulerian_mode6C.cpp | 149 ++++++++++++++++++++++++++++++++++-- src/mode.h | 18 +++-- src/reflection.h | 41 ++++------ src/svecmat.h | 18 ++--- 9 files changed, 211 insertions(+), 103 deletions(-) commit 0dd1e4dc39a9424362b06a4ec05c91f5bd501c86 Author: delos Date: Fri Jan 14 15:05:48 2005 +0000 Ajout du mode omega constant 4C src/LibUser.cpp | 9 +- src/eulerian_bissectormode4C.cpp | 240 ++++++++++++++++++++++++++++++++++++-- src/mode.h | 67 +++++++++-- 3 files changed, 293 insertions(+), 23 deletions(-) commit 8ad996869b1acf91df7098e079f033b3966388cc Author: delos Date: Fri Jan 14 15:05:15 2005 +0000 no message doc/projetHKL_6C.doc | Bin 100864 -> 101888 bytes doc/projetHKL_architecture.mdl | 512 ++++++++++++++++++++++++---------------- 2 files changed, 303 insertions(+), 209 deletions(-) commit 73eda918c4689dd08b17c973ec5e176d53a430ce Author: delos Date: Fri Jan 14 13:15:20 2005 +0000 no message doc/projetHKL_4C.doc | Bin 267776 -> 268288 bytes doc/projetHKL_6C.doc | Bin 100864 -> 100864 bytes 2 files changed, 0 insertions(+), 0 deletions(-) commit f7826ca7e1159a969758f15cc9230f7e414f4cb9 Author: delos Date: Fri Jan 14 13:07:55 2005 +0000 Corrections du mode 3C bras levant src/angleconfig.h | 119 ++++++++++++-------- src/eulerian_ diffractometer6C.cpp | 216 ++++++++++++++++++++++++++++++------ src/eulerian_mode6C.cpp | 180 +++++++++++++++--------------- src/mode.h | 65 ++++------- 4 files changed, 370 insertions(+), 210 deletions(-) commit 2f5a4fd1022ea1d2702e7934df4f55e78cbdeadc Author: dupuy Date: Tue Jan 11 10:17:13 2005 +0000 ajout du logo soleil doc/projetHKL_4C.doc | Bin 257536 -> 267776 bytes doc/projetHKL_6C.doc | Bin 91648 -> 100864 bytes 2 files changed, 0 insertions(+), 0 deletions(-) commit 987e74b2497a84a22a55091c9b76ad446bcecd7c Author: dupuy Date: Tue Jan 11 10:10:09 2005 +0000 ajout du logo soleil commit fab46612b382b55818ac53e9a01fab04edcc43ae Author: dupuy Date: Tue Jan 11 09:42:20 2005 +0000 mise jour pour la release_0_5 readme.txt | 12 ++++++++++++ release_notes.txt | 5 +++-- 2 files changed, 15 insertions(+), 2 deletions(-) commit 9a7cec8a984cb0afc7abbac4827a53dc569d95cb Author: dupuy Date: Tue Jan 11 09:32:36 2005 +0000 generation du pdf pour la release_0_5 doc/projetHKL_reference_manual.pdf | Bin 336602 -> 351240 bytes 1 files changed, 0 insertions(+), 0 deletions(-) commit cccf4f25f2f59700111ce7874af26c304dd795ee Author: dupuy Date: Tue Jan 11 09:31:28 2005 +0000 correction (mauvais fichier commiter precedemment) : generation du pdf pour la release_0_5 doc/projetHKL_architecture.pdf | Bin 351240 -> 218839 bytes 1 files changed, 0 insertions(+), 0 deletions(-) commit 7e4dc80d186efe38bc75489977e31d43fdcf5c35 Author: dupuy Date: Tue Jan 11 09:22:30 2005 +0000 generation du pdf pour la release_0_5 doc/projetHKL_architecture.pdf | Bin 218839 -> 351240 bytes 1 files changed, 0 insertions(+), 0 deletions(-) commit 722ed4a653887294c88539f902c4bbb0c50e2a8d Author: dupuy Date: Tue Jan 11 09:18:30 2005 +0000 generation du latex pour la release_0_5 doc/Doxyfile-to-tex | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 81ef03e2f43c0ccb5fadbf70e26b69888a46fc25 Author: dupuy Date: Mon Jan 10 18:19:09 2005 +0000 avant tag pour la release 0.5 release_notes.txt | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) commit e0620f030fe563b4ef0a19edbb47a84ef5741645 Author: dupuy Date: Mon Jan 10 18:16:03 2005 +0000 nouveau pdf, en une seule page doc/projetHKL_architecture.pdf | Bin 406062 -> 218839 bytes 1 files changed, 0 insertions(+), 0 deletions(-) commit a72746ffbc801e85ef07dc52bb355e15fbfdfb1d Author: dupuy Date: Mon Jan 10 18:15:29 2005 +0000 mise a jour du repertoire doc (nettoyage) doc/README.txt | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit 88df7f170dc6c0cadc91a1cf7c82f9619a24bf9b Author: dupuy Date: Mon Jan 10 17:48:01 2005 +0000 mise a jour du repertoire doc (nettoyage) doc/README.txt | 17 +++++++++++++++-- 1 files changed, 15 insertions(+), 2 deletions(-) commit 3eff6090e0f5b4d12af55995cd8e3c97e0ca3aea Author: dupuy Date: Mon Jan 10 17:40:13 2005 +0000 renommer en projetHKL_6C.doc doc/projetHKL_6C.doc | Bin 0 -> 91648 bytes 1 files changed, 0 insertions(+), 0 deletions(-) commit b0349d9949b58fcf43b8b82065d72aef52bbf2e9 Author: dupuy Date: Mon Jan 10 17:38:11 2005 +0000 renommer en projetHKL_4C.doc doc/projetHKL_4C.doc | Bin 0 -> 257536 bytes 1 files changed, 0 insertions(+), 0 deletions(-) commit 0fa05ebdeac41a16ee2575ae60bb1794409fdd8b Author: dupuy Date: Mon Jan 10 17:07:52 2005 +0000 remplac par les fichiers projetHKL_4C.doc et projetHKL_6C.doc doc/pilotage-diffract.doc | Bin 347648 -> 0 bytes doc/projetHKL_1.doc | Bin 257536 -> 0 bytes doc/projetHKL_4C.doc | Bin 257536 -> 0 bytes doc/projetHKL_6C.doc | Bin 91648 -> 0 bytes 4 files changed, 0 insertions(+), 0 deletions(-) commit 705227854f55c44424aade434b46e9c0aac5507e Author: delos Date: Mon Jan 10 15:37:20 2005 +0000 Test en 6C mode 4C horizontal et 4C vertical, implementation du 3C bras levant en cours doc/projetHKL_1.doc | Bin 258048 -> 257536 bytes doc/projetHKL_4C.doc | Bin 258048 -> 257536 bytes doc/projetHKL_6C.doc | Bin 90624 -> 91648 bytes src/eulerian_ diffractometer6C.cpp | 538 +++++++++++++++++++++++++++++++++++- src/eulerian_mode6C.cpp | 306 ++++++++++++++++++++ src/mode.h | 131 +++++---- 6 files changed, 912 insertions(+), 63 deletions(-) commit 29c19c73cca2a42eca72320efa352e74e3c888a6 Author: delos Date: Thu Jan 6 14:46:17 2005 +0000 Corrections du 6-cercles en mode 4C horizontal et vertical doc/pilotage-diffract.doc | Bin 347648 -> 347648 bytes doc/projetHKL_1.doc | Bin 258048 -> 258048 bytes doc/projetHKL_4C.doc | Bin 258048 -> 258048 bytes doc/projetHKL_6C.doc | Bin 87040 -> 90624 bytes src/angleconfig.h | 8 +- src/eulerian_ diffractometer6C.cpp | 601 ++++++++++++++++++++++++++++++++- src/eulerian_angleconfiguration4C.cpp | 31 +- src/eulerian_bissectormode4C.cpp | 45 +-- src/eulerian_mode6C.cpp | 62 ++-- 9 files changed, 664 insertions(+), 83 deletions(-) commit d4105a569af4fb2ca7149ebae80e235c3e4d4196 Author: dupuy Date: Tue Jan 4 13:22:24 2005 +0000 regeneration du pdf avec la doc de l'implementation du 6C doc/projetHKL_reference_manual.pdf | Bin 154729 -> 336602 bytes 1 files changed, 0 insertions(+), 0 deletions(-) commit e61bdf5708fdcc0551313abfacffcb6f3d074222 Author: delos Date: Wed Dec 22 15:45:55 2004 +0000 Ajout du 6-cercles avec modes 4C horizontal et vertical doc/projetHKL_1.doc | Bin 257536 -> 258048 bytes doc/projetHKL_4C.doc | Bin 257536 -> 258048 bytes doc/projetHKL_6C.doc | Bin 86528 -> 87040 bytes doc/projetHKL_architecture.mdl | 765 +++++++++++++++++++++------------ src/LibUser.cpp | 8 + src/angleconfig.h | 119 +++++- src/diffractometer.cpp | 12 +- src/diffractometer.h | 163 ++++++-- src/eulerian_ diffractometer6C.cpp | 696 ++++++++++++++++++++++++++++++ src/eulerian_angleConfiguration6C.cpp | 168 +++++++ src/eulerian_mode6C.cpp | 546 +++++++++++++++++++++++ src/mode.h | 124 +++++- src/source.h | 2 +- 13 files changed, 2267 insertions(+), 336 deletions(-) commit 952f7c271d694a285b013b929e9aa03414a13df7 Author: dupuy Date: Tue Dec 21 13:22:36 2004 +0000 ajout fichier release_notes.txt release_notes.txt | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit ca0bc8a80325ec8515f96f8885031cb30b7a86a1 Author: delos Date: Thu Dec 16 14:40:34 2004 +0000 no message doc/projetHKL_1.doc | Bin 254976 -> 257536 bytes doc/projetHKL_4C.doc | Bin 254976 -> 257536 bytes doc/projetHKL_6C.doc | Bin 86528 -> 86528 bytes 3 files changed, 0 insertions(+), 0 deletions(-) commit f867d357a6854040abcb3d31e596ca51274c6115 Author: delos Date: Wed Dec 15 16:35:44 2004 +0000 6C en 4C + Mathematica 5.1 doc/projetHKL_6C.doc | Bin 77312 -> 86528 bytes 1 files changed, 0 insertions(+), 0 deletions(-) commit df98b020643c56784ea6af86120e55f92855ec29 Author: delos Date: Wed Dec 15 14:00:08 2004 +0000 Calcul de U en 6 cercles et calcul de qaz doc/projetHKL_6C.doc | Bin 64512 -> 77312 bytes 1 files changed, 0 insertions(+), 0 deletions(-) commit 4c28fb0face989a32436e22f47e60084f71c6518 Author: delos Date: Wed Dec 15 10:55:14 2004 +0000 documentation src/diffractometer.h | 29 +++++++++++++++++++++++++---- 1 files changed, 25 insertions(+), 4 deletions(-) commit 7af7bc15599ed8398bc3b263a1f9e9c675f92997 Author: delos Date: Wed Dec 15 10:52:53 2004 +0000 Nouvelle doc operationnelle en deux parties (remplace pilotage-diffract.doc) doc/projetHKL_1.doc | Bin 0 -> 254976 bytes doc/projetHKL_4C.doc | Bin 0 -> 254976 bytes doc/projetHKL_6C.doc | Bin 0 -> 64512 bytes 3 files changed, 0 insertions(+), 0 deletions(-) commit 5d9f669e9445b633b73a2c2ffa7f373e986d8a12 Author: delos Date: Tue Dec 7 14:42:34 2004 +0000 Calcul de (h,k,l) partir de (omga,phi,chi) refonte des signatures de fonctions src/diffractometer.cpp | 40 +++++++++++++++++++------------------- src/eulerian_bissectormode4C.cpp | 4 +- src/mode.h | 30 ++++++++++++++-------------- 3 files changed, 37 insertions(+), 37 deletions(-) commit 8eb0a271f2f3c4db5f1af5f16ff4c3096a905178 Author: delos Date: Tue Dec 7 14:25:16 2004 +0000 Calcul de (h,k,l) partir de (omga,phi,chi) src/diffractometer.cpp | 539 +++++++++++++++++++++++++++++++++++++- src/diffractometer.h | 88 +++++-- src/eulerian_bissectormode4C.cpp | 118 +++++++-- src/mode.h | 107 +++++++- 4 files changed, 793 insertions(+), 59 deletions(-) commit 76745d6a6ec606490db301a142a3f3680459edaa Author: delos Date: Thu Dec 2 14:05:16 2004 +0000 plus de doc src/cristal.h | 30 ++++++++++++++++++++++++++++-- src/eulerian_bissectormode4C.cpp | 6 +++--- src/source.h | 4 ++++ 3 files changed, 35 insertions(+), 5 deletions(-) commit c0c5d4e64c58156e59ea8650696eb7b1bcb5a26f Author: delos Date: Thu Dec 2 10:27:05 2004 +0000 plus de doc src/cristal.h | 6 +++--- src/diffractometer.h | 34 ++++++++++++++++++++++++++++++---- src/mode.h | 39 +++++++++++++++++++++++++++++++++++---- src/source.h | 7 +++---- 4 files changed, 71 insertions(+), 15 deletions(-) commit 35044ce57444ad4c62804e43ae89407f2591a5b2 Author: delos Date: Wed Dec 1 16:10:49 2004 +0000 6cercles mode bras levant doc/pilotage-diffract.doc | Bin 341504 -> 347648 bytes 1 files changed, 0 insertions(+), 0 deletions(-) commit ab75d9305774aaf9fd11545acccaef08c49137a6 Author: delos Date: Tue Nov 30 15:04:58 2004 +0000 6cercles intro+commentaires doc/pilotage-diffract.doc | Bin 337920 -> 341504 bytes src/source.h | 2 +- 2 files changed, 1 insertions(+), 1 deletions(-) commit 75f96240b5e7f4fad83e115ea2657988af1cd7a1 Author: delos Date: Tue Nov 30 11:15:55 2004 +0000 6cercles intro doc/pilotage-diffract.doc | Bin 332288 -> 337920 bytes 1 files changed, 0 insertions(+), 0 deletions(-) commit cf88b734108d8be840ee769b034ac34023960edf Author: delos Date: Fri Nov 26 10:34:01 2004 +0000 Ajout de tests (Rafin) + pb de Q dans (yOz) doc/pilotage-diffract.doc | Bin 328192 -> 332288 bytes src/Makefile.vc | 3 +- src/cristal.h | 28 +- src/diffractometer.cpp | 676 +++++++++++++++++++++++++++++++++++++- src/diffractometer.h | 86 ++++-- src/eulerian_bissectormode4C.cpp | 13 +- src/mode.h | 47 ++- 7 files changed, 787 insertions(+), 66 deletions(-) commit 3f3058b293a29304d262f7807144910eb3bf3abc Author: buteau Date: Wed Nov 24 18:07:04 2004 +0000 added PDF version of class hierarchy doc/projetHKL_architecture.pdf | Bin 0 -> 406062 bytes 1 files changed, 0 insertions(+), 0 deletions(-) commit c1bdaae4100cde04e701aa4a2e4ef6a1dec175b6 Author: dupuy Date: Wed Nov 24 13:38:51 2004 +0000 ajout du fichier readme.txt dans le repertoire doc doc/README.txt | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) commit 93db9afe0d30b9ff86e6b65802491a9252bb42af Author: dupuy Date: Wed Nov 24 10:45:57 2004 +0000 ajout des fichiers doxyfile-to-tex et HKL-code-doc.pdf utilis et/ou gnr par doxygen doc/Doxyfile-to-tex | 248 ++++++++++++++++++++++++++++++++++++ doc/projetHKL_reference_manual.pdf | Bin 0 -> 154729 bytes 2 files changed, 248 insertions(+), 0 deletions(-) commit 00c7b692b71912a88d2c1bc654a8f8d5d038df70 Author: buteau Date: Wed Nov 24 09:27:18 2004 +0000 added target in Makefile.VC for generation of library with standard SOLEIL Makefiles src/Makefile.vc | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-) commit 1a2acf416649773db41080c958349334959f89a5 Author: buteau Date: Wed Nov 24 08:05:02 2004 +0000 added Makefile.VC to recompile library with standard SOLEIL Makefiles src/Makefile.vc | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 55 insertions(+), 0 deletions(-) commit d9794be2cc988d497924e58b571b3a48f2486fce Author: delos Date: Tue Nov 23 13:46:54 2004 +0000 Ajout de documentation dans diffractometer.h .cpp src/diffractometer.cpp | 8 ++++---- src/diffractometer.h | 17 ++++++++++------- 2 files changed, 14 insertions(+), 11 deletions(-) commit 17356d157b7928925a791d1e6cb13c4fe77f2bf8 Author: delos Date: Tue Nov 23 13:23:42 2004 +0000 Ajout de documentation Introduction du 6-cercle dans la doc. doc/pilotage-diffract.doc | Bin 297984 -> 328192 bytes src/HKLException.h | 60 +++++++++++++++++----------------- src/angleconfig.h | 71 +++++++++++++++++++++++----------------- src/constants.cpp | 18 +++++++--- src/constants.h | 42 ++++++++++++++--------- src/cristal.cpp | 2 + src/cristal.h | 80 +++++++++++++++++++++++++++----------------- src/diffractometer.h | 10 ++++-- src/mode.h | 46 +++++++++++++------------- src/reflection.h | 36 ++++++++++---------- src/source.h | 12 +++--- src/svecmat.h | 60 +++++++++++++++++----------------- 12 files changed, 243 insertions(+), 194 deletions(-) commit bef5331a75dbeae8e64f55856b0d5096fab6738a Author: delos Date: Wed Nov 17 15:30:02 2004 +0000 First new project release src/LibUser.cpp | 160 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/test_cristal.cpp | 19 ------ 2 files changed, 160 insertions(+), 19 deletions(-) commit 34aadf99f2be0badc07addacb3f7a8d5e8e0187e Author: delos Date: Wed Nov 17 15:01:59 2004 +0000 Architecture de base4 Modif eulerian bisector mode src/eulerian_bissectormode4C.cpp | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) commit a36be9db2cf48dcf8c1f94700bbaf1ead4e2987f Author: delos Date: Wed Nov 17 14:27:34 2004 +0000 Architecture de base4 Construction de diffractomtres avec settings diffrs src/cristal.cpp | 30 ++ src/cristal.h | 7 +- src/diffractometer.cpp | 657 +++++++++++++++++++++++++++++++++++++- src/diffractometer.h | 62 +++- src/eulerian_bissectormode4C.cpp | 8 +- 5 files changed, 735 insertions(+), 29 deletions(-) commit 3788ff7d571cfdcc30a7f2a01c23d33b9f168030 Author: delos Date: Wed Nov 17 10:21:29 2004 +0000 Architecture de base3+constantes commit 68b0389fa4d73a9988d8fedc044264ef068317b0 Author: delos Date: Wed Nov 17 10:09:59 2004 +0000 Architecture de base3+constantes doc/projetHKL_architecture.mdl | 348 ++++++++++++++++++++++++++++++++------ src/angleconfig.h | 2 +- src/constants.cpp | 19 ++ src/constants.h | 76 ++++++++ src/cristal.cpp | 56 +++++-- src/diffractometer.cpp | 198 +++++++++++++++------- src/diffractometer.h | 89 +++++----- src/eulerian_bissectormode4C.cpp | 43 +++-- src/main.cpp | 5 +- src/mode.h | 32 ++-- src/reflection.cpp | 93 ++++++++++- src/reflection.h | 56 ++++--- 12 files changed, 784 insertions(+), 233 deletions(-) commit 5fdbdb6a33b117f941446ce191572dde33672886 Author: delos Date: Mon Nov 8 16:53:53 2004 +0000 Architecture de base2 doc/archi4.mdl | 8333 -------------------------------- doc/archi9.mdl | 8369 --------------------------------- doc/pilotage-diffract17.doc | Bin 262144 -> 0 bytes src/HKLException.cpp | 204 + src/HKLException.h | 193 + src/angleconfig.h | 1 + src/cristal.cpp | 132 + src/cristal.h | 10 + src/diffractometer.cpp | 510 ++- src/diffractometer.h | 4 + src/eulerian_angleconfiguration4C.cpp | 12 + src/eulerian_bissectormode4C.cpp | 114 +- src/main.cpp | 395 ++- src/mode.h | 26 + src/smatrix.cpp | 24 + src/source.h | 5 +- src/svecmat.h | 2 + 17 files changed, 1600 insertions(+), 16734 deletions(-) commit a3900e250b93498e3814cddc4271f2382a5e31ff Author: delos Date: Tue Nov 2 13:11:27 2004 +0000 Architecture de base2 doc/pilotage-diffract.doc | Bin 299520 -> 297984 bytes src/cristal.cpp | 73 ++++++++++++++++- src/cristal.h | 42 +++++++--- src/diffractometer.cpp | 106 +++++++++++++++++++++----- src/diffractometer.h | 32 ++++++-- src/eulerian_bissectormode4C.cpp | 66 ++++++++++++++-- src/main.cpp | 157 ++++++++++++++++++++++++++++++-------- src/mode.h | 8 ++ src/smatrix.cpp | 6 +- src/svecmat.h | 4 + src/svector.cpp | 17 ++++- 11 files changed, 425 insertions(+), 86 deletions(-) commit c1bebd3cc88f17ea07caaf19246f463636cc87e4 Author: delos Date: Wed Oct 27 10:04:58 2004 +0000 Architecture de base doc/archi9.mdl | 8369 ++++++++++++++++++++++++++++++++++++++++ doc/pilotage-diffract.doc | Bin 0 -> 299520 bytes doc/projetHKL_architecture.mdl | 8369 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 16738 insertions(+), 0 deletions(-) commit ed4a1031b25909b701420bbd8484ca0f9e31995c Author: delos Date: Wed Oct 27 09:58:10 2004 +0000 Architecture de base src/angleconfig.h | 168 ++++++++++++ src/cristal.cpp | 72 +++++ src/cristal.h | 68 +++++ src/diffractometer.cpp | 322 +++++++++++++++++++++++ src/diffractometer.h | 171 ++++++++++++ src/eulerian_angleconfiguration4C.cpp | 110 ++++++++ src/eulerian_bissectormode4C.cpp | 77 ++++++ src/kappa_angleconfiguration4C.cpp | 107 ++++++++ src/main.cpp | 459 +++++++++++++++++++++++++++++++++ src/mode.h | 118 +++++++++ src/reflection.cpp | 56 ++++ src/reflection.h | 69 +++++ src/smatrix.cpp | 149 +++++++++++ src/source.cpp | 32 +++ src/source.h | 42 +++ src/svecmat.h | 197 ++++++--------- src/svector.cpp | 138 ++++++++++ src/test_cristal.cpp | 19 ++ 18 files changed, 2253 insertions(+), 121 deletions(-) commit 6dd18d2a81df01d5433979d7850187599f2c4548 Author: petit Date: Thu Oct 14 15:35:59 2004 +0000 Initial revision doc/archi4.mdl | 8333 +++++++++++++++++++++++++++++++++++++++++++ doc/pilotage-diffract17.doc | Bin 0 -> 262144 bytes src/svecmat.h | 158 + 3 files changed, 8491 insertions(+), 0 deletions(-) hkl-4.0.3/aclocal.m40000644000175000017500000013244411402652621011064 00000000000000# generated automatically by aclocal 1.11.1 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.65],, [m4_warning([this file was generated for autoconf 2.65. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) # Configure path for the GNU Scientific Library # Christopher R. Gabriel , April 2000 AC_DEFUN([AX_PATH_GSL], [ AC_ARG_WITH(gsl-prefix,[ --with-gsl-prefix=PFX Prefix where GSL is installed (optional)], gsl_prefix="$withval", gsl_prefix="") AC_ARG_WITH(gsl-exec-prefix,[ --with-gsl-exec-prefix=PFX Exec prefix where GSL is installed (optional)], gsl_exec_prefix="$withval", gsl_exec_prefix="") AC_ARG_ENABLE(gsltest, [ --disable-gsltest Do not try to compile and run a test GSL program], , enable_gsltest=yes) if test "x${GSL_CONFIG+set}" != xset ; then if test "x$gsl_prefix" != x ; then GSL_CONFIG="$gsl_prefix/bin/gsl-config" fi if test "x$gsl_exec_prefix" != x ; then GSL_CONFIG="$gsl_exec_prefix/bin/gsl-config" fi fi AC_PATH_PROG(GSL_CONFIG, gsl-config, no) min_gsl_version=ifelse([$1], ,0.2.5,$1) AC_MSG_CHECKING(for GSL - version >= $min_gsl_version) no_gsl="" if test "$GSL_CONFIG" = "no" ; then no_gsl=yes else GSL_CFLAGS=`$GSL_CONFIG --cflags` GSL_LIBS=`$GSL_CONFIG --libs` gsl_major_version=`$GSL_CONFIG --version | \ sed 's/^\([[0-9]]*\).*/\1/'` if test "x${gsl_major_version}" = "x" ; then gsl_major_version=0 fi gsl_minor_version=`$GSL_CONFIG --version | \ sed 's/^\([[0-9]]*\)\.\{0,1\}\([[0-9]]*\).*/\2/'` if test "x${gsl_minor_version}" = "x" ; then gsl_minor_version=0 fi gsl_micro_version=`$GSL_CONFIG --version | \ sed 's/^\([[0-9]]*\)\.\{0,1\}\([[0-9]]*\)\.\{0,1\}\([[0-9]]*\).*/\3/'` if test "x${gsl_micro_version}" = "x" ; then gsl_micro_version=0 fi if test "x$enable_gsltest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $GSL_CFLAGS" LIBS="$LIBS $GSL_LIBS" rm -f conf.gsltest AC_TRY_RUN([ #include #include #include char* my_strdup (const char *str); char* my_strdup (const char *str) { char *new_str; if (str) { new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); strcpy (new_str, str); } else new_str = NULL; return new_str; } int main (void) { int major = 0, minor = 0, micro = 0; int n; char *tmp_version; system ("touch conf.gsltest"); /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = my_strdup("$min_gsl_version"); n = sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) ; if (n != 2 && n != 3) { printf("%s, bad version string\n", "$min_gsl_version"); exit(1); } if (($gsl_major_version > major) || (($gsl_major_version == major) && ($gsl_minor_version > minor)) || (($gsl_major_version == major) && ($gsl_minor_version == minor) && ($gsl_micro_version >= micro))) { exit(0); } else { exit(1); } } ],, no_gsl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_gsl" = x ; then AC_MSG_RESULT(yes) ifelse([$2], , :, [$2]) else AC_MSG_RESULT(no) if test "$GSL_CONFIG" = "no" ; then echo "*** The gsl-config script installed by GSL could not be found" echo "*** If GSL was installed in PREFIX, make sure PREFIX/bin is in" echo "*** your path, or set the GSL_CONFIG environment variable to the" echo "*** full path to gsl-config." else if test -f conf.gsltest ; then : else echo "*** Could not run GSL test program, checking why..." CFLAGS="$CFLAGS $GSL_CFLAGS" LIBS="$LIBS $GSL_LIBS" AC_TRY_LINK([ #include ], [ return 0; ], [ echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GSL or finding the wrong" echo "*** version of GSL. If it is not finding GSL, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], [ echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means GSL was incorrectly installed" echo "*** or that you have moved GSL since it was installed. In the latter case, you" echo "*** may want to edit the gsl-config script: $GSL_CONFIG" ]) CFLAGS="$ac_save_CFLAGS" LIBS="$ac_save_LIBS" fi fi # GSL_CFLAGS="" # GSL_LIBS="" ifelse([$3], , :, [$3]) fi AC_SUBST(GSL_CFLAGS) AC_SUBST(GSL_LIBS) rm -f conf.gsltest ]) AU_ALIAS([AM_PATH_GSL], [AX_PATH_GSL]) # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # serial 1 (pkg-config-0.24) # # Copyright © 2004 Scott James Remnant . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # PKG_PROG_PKG_CONFIG([MIN-VERSION]) # ---------------------------------- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])# PKG_PROG_PKG_CONFIG # PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # # Check to see whether a particular set of modules exists. Similar # to PKG_CHECK_MODULES(), but does not set variables or print errors. # # Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) # only at the first occurence in configure.ac, so if the first place # it's called might be skipped (such as if it is within an "if", you # have to call PKG_CHECK_EXISTS manually # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) # --------------------------------------------- m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])# _PKG_CONFIG # _PKG_SHORT_ERRORS_SUPPORTED # ----------------------------- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])# _PKG_SHORT_ERRORS_SUPPORTED # PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], # [ACTION-IF-NOT-FOUND]) # # # Note that if there is a possibility the first call to # PKG_CHECK_MODULES might not happen, you should be sure to include an # explicit call to PKG_PROG_PKG_CONFIG in your configure.ac # # # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])# PKG_CHECK_MODULES # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.11.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.11.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_COND_IF -*- Autoconf -*- # Copyright (C) 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # _AM_COND_IF # _AM_COND_ELSE # _AM_COND_ENDIF # -------------- # These macros are only used for tracing. m4_define([_AM_COND_IF]) m4_define([_AM_COND_ELSE]) m4_define([_AM_COND_ENDIF]) # AM_COND_IF(COND, [IF-TRUE], [IF-FALSE]) # --------------------------------------- # If the shell condition matching COND is true, execute IF-TRUE, # otherwise execute IF-FALSE. Allow automake to learn about conditional # instantiating macros (the AC_CONFIG_FOOS). AC_DEFUN([AM_COND_IF], [m4_ifndef([_AM_COND_VALUE_$1], [m4_fatal([$0: no such condition "$1"])])dnl _AM_COND_IF([$1])dnl if _AM_COND_VALUE_$1; then m4_default([$2], [:]) m4_ifval([$3], [_AM_COND_ELSE([$1])dnl else $3 ])dnl _AM_COND_ENDIF([$1])dnl fi[]dnl ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 9 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 10 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], UPC, [depcc="$UPC" am_compiler_list=], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. #serial 5 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2008, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 16 # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.62])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl dnl The `parallel-tests' driver may need to know about EXEEXT, so add the dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl ]) dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 6 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_MKDIR_P # --------------- # Check for `mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # ------------------------------ # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ---------------------------------- # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. AM_MISSING_PROG([AMTAR], [tar]) m4_if([$1], [v7], [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([m4/gtk-doc.m4]) m4_include([m4/libtool.m4]) m4_include([m4/ltoptions.m4]) m4_include([m4/ltsugar.m4]) m4_include([m4/ltversion.m4]) m4_include([m4/lt~obsolete.m4]) hkl-4.0.3/hkl.h0000644000175000017500000000037311402452647010154 00000000000000#include #include #include #include #include #include #include hkl-4.0.3/m4/0000755000175000017500000000000011402652636007622 500000000000000hkl-4.0.3/m4/ltoptions.m40000644000175000017500000002724211402461111012030 00000000000000# Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option `$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl `shared' nor `disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) ]) ])# _LT_SET_OPTIONS ## --------------------------------- ## ## Macros to handle LT_INIT options. ## ## --------------------------------- ## # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [0], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the `shared' and # `disable-shared' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the `static' and # `disable-static' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the `fast-install' # and `disable-fast-install' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --with-pic flag, and support the `pic-only' and `no-pic' # LT_INIT options. # MODE is either `yes' or `no'. If omitted, it defaults to `both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [pic_mode="$withval"], [pic_mode=default]) test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) hkl-4.0.3/m4/ltversion.m40000644000175000017500000000127711402461111012022 00000000000000# ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # Generated from ltversion.in. # serial 3017 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.2.6b]) m4_define([LT_PACKAGE_REVISION], [1.3017]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.2.6b' macro_revision='1.3017' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) hkl-4.0.3/m4/gtk-doc.m40000644000175000017500000000417511375731447011352 00000000000000dnl -*- mode: autoconf -*- # serial 1 dnl Usage: dnl GTK_DOC_CHECK([minimum-gtk-doc-version]) AC_DEFUN([GTK_DOC_CHECK], [ AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first dnl check for tools we added during development AC_PATH_PROG([GTKDOC_CHECK],[gtkdoc-check]) AC_PATH_PROGS([GTKDOC_REBASE],[gtkdoc-rebase],[true]) AC_PATH_PROG([GTKDOC_MKPDF],[gtkdoc-mkpdf]) dnl for overriding the documentation installation directory AC_ARG_WITH([html-dir], AS_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),, [with_html_dir='${datadir}/gtk-doc/html']) HTML_DIR="$with_html_dir" AC_SUBST([HTML_DIR]) dnl enable/disable documentation building AC_ARG_ENABLE([gtk-doc], AS_HELP_STRING([--enable-gtk-doc], [use gtk-doc to build documentation [[default=no]]]),, [enable_gtk_doc=no]) if test x$enable_gtk_doc = xyes; then ifelse([$1],[], [PKG_CHECK_EXISTS([gtk-doc],, AC_MSG_ERROR([gtk-doc not installed and --enable-gtk-doc requested]))], [PKG_CHECK_EXISTS([gtk-doc >= $1],, AC_MSG_ERROR([You need to have gtk-doc >= $1 installed to build $PACKAGE_NAME]))]) fi AC_MSG_CHECKING([whether to build gtk-doc documentation]) AC_MSG_RESULT($enable_gtk_doc) dnl enable/disable output formats AC_ARG_ENABLE([gtk-doc-html], AS_HELP_STRING([--enable-gtk-doc-html], [build documentation in html format [[default=yes]]]),, [enable_gtk_doc_html=yes]) AC_ARG_ENABLE([gtk-doc-pdf], AS_HELP_STRING([--enable-gtk-doc-pdf], [build documentation in pdf format [[default=no]]]),, [enable_gtk_doc_pdf=no]) if test -z "$GTKDOC_MKPDF"; then enable_gtk_doc_pdf=no fi AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes]) AM_CONDITIONAL([GTK_DOC_BUILD_HTML], [test x$enable_gtk_doc_html = xyes]) AM_CONDITIONAL([GTK_DOC_BUILD_PDF], [test x$enable_gtk_doc_pdf = xyes]) AM_CONDITIONAL([GTK_DOC_USE_LIBTOOL], [test -n "$LIBTOOL"]) AM_CONDITIONAL([GTK_DOC_USE_REBASE], [test -n "$GTKDOC_REBASE"]) ]) hkl-4.0.3/m4/ltsugar.m40000644000175000017500000001042411402461111011450 00000000000000# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59 which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) hkl-4.0.3/m4/libtool.m40000644000175000017500000077464711402461111011463 00000000000000# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ]) # serial 56 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_CC_BASENAME(CC) # ------------------- # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. m4_defun([_LT_CC_BASENAME], [for cc_temp in $1""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl _LT_PROG_ECHO_BACKSLASH case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from `configure', and `config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # `config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain="$ac_aux_dir/ltmain.sh" ])# _LT_PROG_LTMAIN ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the `libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to `config.status' so that its # declaration there will have the same value as in `configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "X$" | $Xsed -e "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags="_LT_TAGS"dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the `libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into `config.status', and then the shell code to quote escape them in # for loops in `config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Fix-up fallback echo if it was mangled by the above quoting rules. case \$lt_ECHO in *'\\\[$]0 --fallback-echo"')dnl " lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\` ;; esac _LT_OUTPUT_LIBTOOL_INIT ]) # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) cat >"$CONFIG_LT" <<_LTEOF #! $SHELL # Generated by $as_me. # Run this file to recreate a libtool stub with the current configuration. lt_cl_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ \`$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2008 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test $[#] != 0 do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try \`$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try \`$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. if test "$no_create" != yes; then lt_cl_success=: test "$silent" = yes && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) fi ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # _LT_COPYING _LT_LIBTOOL_TAGS # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) _LT_PROG_XSI_SHELLFNS sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS="$save_LDFLAGS" ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[[012]]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES # -------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(whole_archive_flag_spec, $1)='' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=echo _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" m4_if([$1], [CXX], [ if test "$lt_cv_apple_cc_single_mod" != "yes"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX # ----------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl AC_LINK_IFELSE(AC_LANG_PROGRAM,[ lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], [AC_DIVERT_PUSH(NOTICE)]) $1 AC_DIVERT_POP ])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Add some code to the start of the generated configure script which # will find an echo command which doesn't interpret backslashes. m4_defun([_LT_PROG_ECHO_BACKSLASH], [_LT_SHELL_INIT([ # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$lt_ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` ;; esac ECHO=${lt_ECHO-echo} if test "X[$]1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X[$]1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then # Yippee, $ECHO works! : else # Restart under the correct shell. exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} fi if test "X[$]1" = X--fallback-echo; then # used as fallback echo shift cat <<_LT_EOF [$]* _LT_EOF exit 0 fi # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH if test -z "$lt_ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if { echo_test_string=`eval $cmd`; } 2>/dev/null && { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null then break fi done fi if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$ECHO" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. ECHO='print -r' elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} else # Try using printf. ECHO='printf %s\n' if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL ECHO="$CONFIG_SHELL [$]0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$CONFIG_SHELL [$]0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "[$]0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} else # Oops. We lost completely, so just stick with echo. ECHO=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. lt_ECHO=$ECHO if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" fi AC_SUBST(lt_ECHO) ]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that does not interpret backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line __oline__ "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" ])# _LT_ENABLE_LOCK # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [AC_CHECK_TOOL(AR, ar, false) test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1]) AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test x"[$]$2" = xyes; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" ]) if test x"[$]$2" = xyes; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ = "XX$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line __oline__ "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links="nottested" if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", [Define to the sub-directory in which libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existent directories. if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` else lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[[4-9]]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[123]]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[[3-9]]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([], [sys_lib_dlsearch_path_spec], [2], [Run-time system search path for libraries]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program which can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program which can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method == "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi]) if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :) AC_SUBST([DUMPBIN]) if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ const struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= AC_MSG_CHECKING([for $compiler option to produce PIC]) m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC*) # IBM XL 8.0 on PPC _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$GCC" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl*) # IBM XL C 8.0/Fortran 10.1 on PPC _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' ;; linux* | k*bsd*-gnu) _LT_TAGVAR(link_all_deplibs, $1)=no ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; linux* | k*bsd*-gnu) _LT_TAGVAR(link_all_deplibs, $1)=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag= tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; xl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi _LT_TAGVAR(link_all_deplibs, $1)=no else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; freebsd1*) _LT_TAGVAR(ld_shlibs, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" AC_LINK_IFELSE(int foo(void) {}, _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' ) LDFLAGS="$save_LDFLAGS" else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_MSG_CHECKING([whether -lc should be explicitly linked in]) $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then _LT_TAGVAR(archive_cmds_need_lc, $1)=no else _LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)]) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], [[If ld is used when linking, flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting ${shlibpath_var} if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [fix_srcfile_path], [1], [Fix the shell variable $srcfile for the compiler]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report which library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC="$lt_save_CC" ])# _LT_LANG_C_CONFIG # _LT_PROG_CXX # ------------ # Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++ # compiler, we have our own version here. m4_defun([_LT_PROG_CXX], [ pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes]) AC_PROG_CXX if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi popdef([AC_MSG_ERROR]) ])# _LT_PROG_CXX dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([_LT_PROG_CXX], []) # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [AC_REQUIRE([_LT_PROG_CXX])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared # libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd[[12]]*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; gnu*) ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 will use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; xl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd2*) # C++ shared libraries are fairly broken _LT_TAGVAR(ld_shlibs, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=echo else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(GCC, $1)="$GXX" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ]) dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue else prev= fi if test "$pre_test_object_deps_done" = no; then case $p in -L* | -R*) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)="${prev}${p}" else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" fi fi ;; *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)="$p" else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)="$p" else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_PROG_F77 # ------------ # Since AC_PROG_F77 is broken, in that it returns the empty string # if there is no fortran compiler, we have our own version here. m4_defun([_LT_PROG_F77], [ pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes]) AC_PROG_F77 if test -z "$F77" || test "X$F77" = "Xno"; then _lt_disable_F77=yes fi popdef([AC_MSG_ERROR]) ])# _LT_PROG_F77 dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([_LT_PROG_F77], []) # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_REQUIRE([_LT_PROG_F77])dnl AC_LANG_PUSH(Fortran 77) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_F77" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC CC=${F77-"f77"} compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$G77" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC="$lt_save_CC" fi # test "$_lt_disable_F77" != yes AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_PROG_FC # ----------- # Since AC_PROG_FC is broken, in that it returns the empty string # if there is no fortran compiler, we have our own version here. m4_defun([_LT_PROG_FC], [ pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes]) AC_PROG_FC if test -z "$FC" || test "X$FC" = "Xno"; then _lt_disable_FC=yes fi popdef([AC_MSG_ERROR]) ])# _LT_PROG_FC dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([_LT_PROG_FC], []) # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_REQUIRE([_LT_PROG_FC])dnl AC_LANG_PUSH(Fortran) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_FC" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC CC=${FC-"f95"} compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC="$lt_save_CC" fi # test "$_lt_disable_FC" != yes AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC="$lt_save_CC" ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC GCC= CC=${RC-"windres"} compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC="$lt_save_CC" ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [AC_MSG_CHECKING([whether the shell understands some XSI constructs]) # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes AC_MSG_RESULT([$xsi_shell]) _LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) AC_MSG_CHECKING([whether the shell understands "+="]) lt_shell_append=no ( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes AC_MSG_RESULT([$lt_shell_append]) _LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PROG_XSI_SHELLFNS # --------------------- # Bourne and XSI compatible variants of some useful shell functions. m4_defun([_LT_PROG_XSI_SHELLFNS], [case $xsi_shell in yes) cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac } # func_basename file func_basename () { func_basename_result="${1##*/}" } # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}" } # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). func_stripname () { # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"} } # func_opt_split func_opt_split () { func_opt_split_opt=${1%%=*} func_opt_split_arg=${1#*=} } # func_lo2o object func_lo2o () { case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac } # func_xform libobj-or-source func_xform () { func_xform_result=${1%.*}.lo } # func_arith arithmetic-term... func_arith () { func_arith_result=$(( $[*] )) } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=${#1} } _LT_EOF ;; *) # Bourne compatible functions. cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_basename file func_basename () { func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` } dnl func_dirname_and_basename dnl A portable version of this function is already defined in general.m4sh dnl so there is no need for it here. # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; esac } # sed scripts: my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q' my_sed_long_arg='1s/^-[[^=]]*=//' # func_opt_split func_opt_split () { func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` } # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` } # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'` } # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "$[@]"` } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len` } _LT_EOF esac case $lt_shell_append in yes) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$[1]+=\$[2]" } _LT_EOF ;; *) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$[1]=\$$[1]\$[2]" } _LT_EOF ;; esac ]) hkl-4.0.3/m4/lt~obsolete.m40000644000175000017500000001311311402461111012337 00000000000000# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 4 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) hkl-4.0.3/INSTALL0000644000175000017500000003633211402461125010251 00000000000000Installation Instructions ************************* Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. Basic Installation ================== Briefly, the shell commands `./configure; make; make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the `README' file for instructions specific to this package. Some packages provide this `INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If you are using the cache, and at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.ac' (or `configure.in') is used to create `configure' by a program called `autoconf'. You need `configure.ac' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. Running `configure' might take a while. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. 4. Type `make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular user, and only the `make install' phase executed with root privileges. 5. Optionally, type `make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a regular user, particularly if the prior `make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 7. Often, you can also type `make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. 8. Some packages, particularly those that use Automake, provide `make distcheck', which can by used by developers to test that all other targets like `make install' and `make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. Run `./configure --help' for details on some of the pertinent environment variables. You can give `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. This is known as a "VPATH" build. With a non-GNU `make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple `-arch' options to the compiler but only a single `-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the `lipo' tool if you have problems. Installation Names ================== By default, `make install' installs the package's commands under `/usr/local/bin', include files under `/usr/local/include', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option `--exec-prefix=PREFIX' to `configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=DIR' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. In general, the default for these options is expressed in terms of `${prefix}', so that specifying just `--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the correct locations to `configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the `make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each affected directory. For example, `make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of `${prefix}'. Any directories that were specified during `configure', but not in terms of `${prefix}', must each be overridden at install time for the entire installation to be relocated. The approach of makefile variable overrides for each directory variable is required by the GNU Coding Standards, and ideally causes no recompilation. However, some platforms have known limitations with the semantics of shared libraries that end up requiring recompilation when using this method, particularly noticeable in packages that use GNU Libtool. The second method involves providing the `DESTDIR' variable. For example, `make install DESTDIR=/alternate/directory' will prepend `/alternate/directory' before all installation names. The approach of `DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even when some directory options were not specified in terms of `${prefix}' at `configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the execution of `make' will be. For these packages, running `./configure --enable-silent-rules' sets the default to minimal output, which can be overridden with `make V=1'; while running `./configure --disable-silent-rules' sets the default to verbose, which can be overridden with `make V=0'. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its `' header file. The option `-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" On Solaris, don't put `/usr/ucb' early in your `PATH'. This directory contains several dysfunctional programs; working variants of these programs are available in `/usr/bin'. So, if you need `/usr/ucb' in your `PATH', put it _after_ `/usr/bin'. On Haiku, software installed for all users goes in `/boot/common', not `/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features `configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, `configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the `--build=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option `--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with `--host=TYPE'. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to `configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the `configure' command line, using `VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified `gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for `CONFIG_SHELL' due to an Autoconf bug. Until the bug is fixed you can use this workaround: CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash `configure' Invocation ====================== `configure' recognizes the following options to control how it operates. `--help' `-h' Print a summary of all of the options to `configure', and exit. `--help=short' `--help=recursive' Print a summary of the options unique to this package's `configure', and exit. The `short' variant lists options used only in the top level, while the `recursive' variant lists options also present in any nested packages. `--version' `-V' Print the version of Autoconf used to generate the `configure' script, and exit. `--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally `config.cache'. FILE defaults to `/dev/null' to disable caching. `--config-cache' `-C' Alias for `--cache-file=config.cache'. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--prefix=DIR' Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. `--no-create' `-n' Run the configure checks, but stop before creating any output files. `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. hkl-4.0.3/Makefile.in0000644000175000017500000006471111402652623011274 00000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @GHKL_TRUE@am__append_1 = gui subdir = . DIST_COMMON = README $(am__configure_deps) $(include_HEADERS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/config.h.in $(srcdir)/hkl.pc.in \ $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \ TODO config/config.guess config/config.sub config/depcomp \ config/install-sh config/ltmain.sh config/mdate-sh \ config/missing config/texinfo.tex ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gtk-doc.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = hkl.pc CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgconfigdir)" \ "$(DESTDIR)$(includedir)" DATA = $(pkgconfig_DATA) HEADERS = $(include_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir dist dist-all distcheck ETAGS = etags CTAGS = ctags DIST_SUBDIRS = hkl test Documentation gui DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ { test ! -d "$(distdir)" \ || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -fr "$(distdir)"; }; } am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ GSL_CFLAGS = @GSL_CFLAGS@ GSL_CONFIG = @GSL_CONFIG@ GSL_LIBS = @GSL_LIBS@ GTKDOC_CHECK = @GTKDOC_CHECK@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ GTKDOC_REBASE = @GTKDOC_REBASE@ GTKMM_CFLAGS = @GTKMM_CFLAGS@ GTKMM_LIBS = @GTKMM_LIBS@ HTML_DIR = @HTML_DIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I m4 DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc SUBDIRS = hkl test Documentation $(am__append_1) EXTRA_DIST = hkl.pc.in include_HEADERS = hkl.h pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = hkl.pc all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @if test ! -f $@; then \ rm -f stamp-h1; \ $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ else :; fi stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 hkl.pc: $(top_builddir)/config.status $(srcdir)/hkl.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgconfigdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgconfigdir)" && rm -f $$files install-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)" @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ done uninstall-includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(includedir)" && rm -f $$files # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-lzma: distdir tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma $(am__remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @$(am__cd) '$(distuninstallcheck_dir)' \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(DATA) $(HEADERS) config.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr \ distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-includeHEADERS install-pkgconfigDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-includeHEADERS uninstall-pkgconfigDATA .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ ctags-recursive install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-am clean clean-generic \ clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ dist-gzip dist-hook dist-lzma dist-shar dist-tarZ dist-xz \ dist-zip distcheck distclean distclean-generic distclean-hdr \ distclean-libtool distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-includeHEADERS install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkgconfigDATA install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-recursive uninstall uninstall-am \ uninstall-includeHEADERS uninstall-pkgconfigDATA dist-hook: @if test -d "$(srcdir)/.git"; \ then \ echo Creating ChangeLog && \ ( cd "$(top_srcdir)" && \ echo '# Generated by Makefile. Do not edit.'; echo; \ $(top_srcdir)/config/missing --run git log --stat ) > ChangeLog.tmp \ && mv -f ChangeLog.tmp $(top_distdir)/ChangeLog \ || ( rm -f ChangeLog.tmp ; \ echo Failed to generate ChangeLog >&2 ); \ else \ echo A git clone is required to generate a ChangeLog >&2; \ fi # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: hkl-4.0.3/configure.ac0000644000175000017500000000306111402652607011506 00000000000000# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ(2.59) AC_INIT([hkl],[4.0.3],[picca@synchrotron-soleil.fr]) AC_CONFIG_SRCDIR([config.h.in]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_AUX_DIR(config) AM_INIT_AUTOMAKE(AC_PACKAGE_NAME, AC_PACKAGE_VERSION) # Checks for programs. AC_PROG_CXX AC_PROG_AWK AC_PROG_CC AC_PROG_CPP AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_MAKE_SET AC_PROG_LIBTOOL AC_PROG_RANLIB # Checks for libraries. AX_PATH_GSL # Checks for header files. AC_HEADER_STDBOOL AC_HEADER_STDC AC_HEADER_TIME AC_CHECK_HEADERS([float.h stdlib.h string.h sys/time.h]) # Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_C_INLINE AC_TYPE_SIZE_T # Checks for library functions. AC_FUNC_ALLOCA AC_FUNC_MALLOC AC_FUNC_REALLOC AC_FUNC_VPRINTF AC_CHECK_FUNCS([floor gettimeofday memmove memset sqrt strdup]) # gtk-doc GTK_DOC_CHECK(1.9) # add an option for the ghkl build AC_ARG_ENABLE([ghkl], AS_HELP_STRING([--enable-ghkl], [turn on the ghkl gui [[default=yes]]]), [case "${enableval}" in yes) ghkl=true ;; no) ghkl=false ;; *) AC_MSG_ERROR([bad value ${enableval} for --enable-ghkl]) ;; esac],[ghkl=true]) AM_CONDITIONAL([GHKL], [test x$ghkl = xtrue]) # gtkmm + glademm AM_COND_IF([GHKL], [PKG_CHECK_MODULES([GTKMM], [gtkmm-2.4 >= 2.18])]) AC_CONFIG_FILES([Makefile hkl/Makefile test/Makefile hkl.pc Documentation/Makefile Documentation/api/Makefile gui/Makefile ]) AC_OUTPUT hkl-4.0.3/config/0000755000175000017500000000000011402652636010547 500000000000000hkl-4.0.3/config/ltmain.sh0000755000175000017500000073337711402461111012320 00000000000000# Generated from ltmain.m4sh. # ltmain.sh (GNU libtool) 2.2.6b # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, # or obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Usage: $progname [OPTION]... [MODE-ARG]... # # Provide generalized library-building support services. # # --config show all configuration variables # --debug enable verbose shell tracing # -n, --dry-run display commands without modifying any files # --features display basic configuration information and exit # --mode=MODE use operation mode MODE # --preserve-dup-deps don't remove duplicate dependency libraries # --quiet, --silent don't print informational messages # --tag=TAG use configuration variables from tag TAG # -v, --verbose print informational messages (default) # --version print version information # -h, --help print short or long help message # # MODE must be one of the following: # # clean remove files from the build directory # compile compile a source file into a libtool object # execute automatically set library path, then run a program # finish complete the installation of libtool libraries # install install libraries or executables # link create a library or an executable # uninstall remove libraries from an installed directory # # MODE-ARGS vary depending on the MODE. # Try `$progname --help --mode=MODE' for a more detailed description of MODE. # # When reporting a bug, please describe a test case to reproduce it and # include the following information: # # host-triplet: $host # shell: $SHELL # compiler: $LTCC # compiler flags: $LTCFLAGS # linker: $LD (gnu? $with_gnu_ld) # $progname: (GNU libtool) 2.2.6b Debian-2.2.6b-2 # automake: $automake_version # autoconf: $autoconf_version # # Report bugs to . PROGRAM=ltmain.sh PACKAGE=libtool VERSION="2.2.6b Debian-2.2.6b-2" TIMESTAMP="" package_revision=1.3017 # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # NLS nuisances: We save the old values to restore during execute mode. # Only set LANG and LC_ALL to C if already set. # These must not be set unconditionally because not all systems understand # e.g. LANG=C (notably SCO). lt_user_locale= lt_safe_locale= for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${$lt_var+set}\" = set; then save_$lt_var=\$$lt_var $lt_var=C export $lt_var lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" fi" done $lt_unset CDPATH : ${CP="cp -f"} : ${ECHO="echo"} : ${EGREP="/bin/grep -E"} : ${FGREP="/bin/grep -F"} : ${GREP="/bin/grep"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SED="/bin/sed"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} : ${Xsed="$SED -e 1s/^X//"} # Global variables: EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. exit_status=$EXIT_SUCCESS # Make sure IFS has a sensible default lt_nl=' ' IFS=" $lt_nl" dirname="s,/[^/]*$,," basename="s,^.*/,," # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` } # Generated shell functions inserted here. # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath="$0" # The name of this program: # In the unlikely event $progname began with a '-', it would play havoc with # func_echo (imagine progname=-n), so we prepend ./ in that case: func_dirname_and_basename "$progpath" progname=$func_basename_result case $progname in -*) progname=./$progname ;; esac # Make sure we have an absolute path for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=$func_dirname_result progdir=`cd "$progdir" && pwd` progpath="$progdir/$progname" ;; *) save_IFS="$IFS" IFS=: for progdir in $PATH; do IFS="$save_IFS" test -x "$progdir/$progname" && break done IFS="$save_IFS" test -n "$progdir" || progdir=`pwd` progpath="$progdir/$progname" ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed="${SED}"' -e 1s/^X//' sed_quote_subst='s/\([`"$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Re-`\' parameter expansions in output of double_quote_subst that were # `\'-ed in input to the same. If an odd number of `\' preceded a '$' # in input to double_quote_subst, that '$' was protected from expansion. # Since each input `\' is now two `\'s, look for any number of runs of # four `\'s followed by two `\'s and then a '$'. `\' that '$'. bs='\\' bs2='\\\\' bs4='\\\\\\\\' dollar='\$' sed_double_backslash="\ s/$bs4/&\\ /g s/^$bs2$dollar/$bs&/ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g s/\n//g" # Standard options: opt_dry_run=false opt_help=false opt_quiet=false opt_verbose=false opt_warning=: # func_echo arg... # Echo program name prefixed message, along with the current mode # name if it has been set yet. func_echo () { $ECHO "$progname${mode+: }$mode: $*" } # func_verbose arg... # Echo program name prefixed message in verbose mode only. func_verbose () { $opt_verbose && func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_error arg... # Echo program name prefixed message to standard error. func_error () { $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 } # func_warning arg... # Echo program name prefixed warning message to standard error. func_warning () { $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 # bash bug again: : } # func_fatal_error arg... # Echo program name prefixed message to standard error, and exit. func_fatal_error () { func_error ${1+"$@"} exit $EXIT_FAILURE } # func_fatal_help arg... # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { func_error ${1+"$@"} func_fatal_error "$help" } help="Try \`$progname --help' for more information." ## default # func_grep expression filename # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $GREP "$1" "$2" >/dev/null 2>&1 } # func_mkdir_p directory-path # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { my_directory_path="$1" my_dir_list= if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then # Protect directory names starting with `-' case $my_directory_path in -*) my_directory_path="./$my_directory_path" ;; esac # While some portion of DIR does not yet exist... while test ! -d "$my_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. my_dir_list="$my_directory_path:$my_dir_list" # If the last portion added has no slash in it, the list is done case $my_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` done my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` save_mkdir_p_IFS="$IFS"; IFS=':' for my_dir in $my_dir_list; do IFS="$save_mkdir_p_IFS" # mkdir can fail with a `File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$my_dir" 2>/dev/null || : done IFS="$save_mkdir_p_IFS" # Bail out if we (or some other process) failed to create a directory. test -d "$my_directory_path" || \ func_fatal_error "Failed to create \`$1'" fi } # func_mktempdir [string] # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, STRING is the basename for that directory. func_mktempdir () { my_template="${TMPDIR-/tmp}/${1-$progname}" if test "$opt_dry_run" = ":"; then # Return a directory name, but don't create it in dry-run mode my_tmpdir="${my_template}-$$" else # If mktemp works, use that first and foremost my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` if test ! -d "$my_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race my_tmpdir="${my_template}-${RANDOM-0}$$" save_mktempdir_umask=`umask` umask 0077 $MKDIR "$my_tmpdir" umask $save_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$my_tmpdir" || \ func_fatal_error "cannot create temporary directory \`$my_tmpdir'" fi $ECHO "X$my_tmpdir" | $Xsed } # func_quote_for_eval arg # Aesthetically quote ARG to be evaled later. # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT # is double-quoted, suitable for a subsequent eval, whereas # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters # which are still active within double quotes backslashified. func_quote_for_eval () { case $1 in *[\\\`\"\$]*) func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; *) func_quote_for_eval_unquoted_result="$1" ;; esac case $func_quote_for_eval_unquoted_result in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and and variable # expansion for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" ;; *) func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" esac } # func_quote_for_expand arg # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { case $1 in *[\\\`\"]*) my_arg=`$ECHO "X$1" | $Xsed \ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; *) my_arg="$1" ;; esac case $my_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") my_arg="\"$my_arg\"" ;; esac func_quote_for_expand_result="$my_arg" } # func_show_eval cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$my_cmd" my_status=$? if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_show_eval_locale cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$lt_user_locale $my_cmd" my_status=$? eval "$lt_safe_locale" if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_version # Echo version message to standard output and exit. func_version () { $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { s/^# // s/^# *$// s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ p }' < "$progpath" exit $? } # func_usage # Echo short help message to standard output and exit. func_usage () { $SED -n '/^# Usage:/,/# -h/ { s/^# // s/^# *$// s/\$progname/'$progname'/ p }' < "$progpath" $ECHO $ECHO "run \`$progname --help | more' for full usage" exit $? } # func_help # Echo long help message to standard output and exit. func_help () { $SED -n '/^# Usage:/,/# Report bugs to/ { s/^# // s/^# *$// s*\$progname*'$progname'* s*\$host*'"$host"'* s*\$SHELL*'"$SHELL"'* s*\$LTCC*'"$LTCC"'* s*\$LTCFLAGS*'"$LTCFLAGS"'* s*\$LD*'"$LD"'* s/\$with_gnu_ld/'"$with_gnu_ld"'/ s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ p }' < "$progpath" exit $? } # func_missing_arg argname # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { func_error "missing argument for $1" exit_cmd=exit } exit_cmd=: # Check that we have a working $ECHO. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then # Yippee, $ECHO works! : else # Restart under the correct shell, and then maybe $ECHO will work. exec $SHELL "$progpath" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # Parse options once, thoroughly. This comes as soon as possible in # the script to make things like `libtool --version' happen quickly. { # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Parse non-mode specific arguments: while test "$#" -gt 0; do opt="$1" shift case $opt in --config) func_config ;; --debug) preserve_args="$preserve_args $opt" func_echo "enabling shell trace mode" opt_debug='set -x' $opt_debug ;; -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break execute_dlfiles="$execute_dlfiles $1" shift ;; --dry-run | -n) opt_dry_run=: ;; --features) func_features ;; --finish) mode="finish" ;; --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break case $1 in # Valid mode arguments: clean) ;; compile) ;; execute) ;; finish) ;; install) ;; link) ;; relink) ;; uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $opt" exit_cmd=exit break ;; esac mode="$1" shift ;; --preserve-dup-deps) opt_duplicate_deps=: ;; --quiet|--silent) preserve_args="$preserve_args $opt" opt_silent=: ;; --verbose| -v) preserve_args="$preserve_args $opt" opt_silent=false ;; --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break preserve_args="$preserve_args $opt $1" func_enable_tag "$1" # tagname is set here shift ;; # Separate optargs to long options: -dlopen=*|--mode=*|--tag=*) func_opt_split "$opt" set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} shift ;; -\?|-h) func_usage ;; --help) opt_help=: ;; --version) func_version ;; -*) func_fatal_help "unrecognized option \`$opt'" ;; *) nonopt="$opt" break ;; esac done case $host in *cygwin* | *mingw* | *pw32* | *cegcc*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_duplicate_deps ;; esac # Having warned about all mis-specified options, bail out if # anything was wrong. $exit_cmd $EXIT_FAILURE } # func_check_version_match # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } ## ----------- ## ## Main. ## ## ----------- ## $opt_help || { # Sanity checks first: func_check_version_match if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then func_fatal_configuration "not configured to build any kind of library" fi test -z "$mode" && func_fatal_error "error: you must specify a MODE." # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$execute_dlfiles" && test "$mode" != execute; then func_error "unrecognized option \`-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$progname --help --mode=$mode' for more information." } # func_lalib_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null \ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_unsafe_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if `file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case "$lalib_p_line" in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test "$lalib_p" = yes } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { func_lalib_p "$1" } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_ltwrapper_scriptname_result="" if func_ltwrapper_executable_p "$1"; then func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" fi } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $opt_debug save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$save_ifs eval cmd=\"$cmd\" func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # `FILE.' does not work on cygwin managed mounts. func_source () { $opt_debug case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $opt_debug if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_quote_for_eval "$arg" CC_quoted="$CC_quoted $func_quote_for_eval_result" done case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_quote_for_eval "$arg" CC_quoted="$CC_quoted $func_quote_for_eval_result" done case "$@ " in " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with \`--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=${1} if test "$build_libtool_libs" = yes; then write_lobj=\'${2}\' else write_lobj=none fi if test "$build_old_libs" = yes; then write_oldobj=\'${3}\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T <?"'"'"' &()|`$[]' \ && func_warning "libobj name \`$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname="$func_basename_result" xdir="$func_dirname_result" lobj=${xdir}$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi removelist="$removelist $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist removelist="$removelist $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 if test -n "$fix_srcfile_path"; then eval srcfile=\"$fix_srcfile_path\" fi func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test "$pic_mode" != no; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir command="$command -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test "$suppress_opt" = yes; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then if test "$pic_mode" != yes; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test "$compiler_c_o" = yes; then command="$command -o $obj" fi # Suppress compiler output if we already did a PIC compilation. command="$command$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test "$need_locks" != no; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test "$mode" = compile && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to building PIC objects only -prefer-non-pic try to building non-PIC objects only -shared do not build a \`.o' file suitable for static linking -static only build a \`.o' file suitable for static linking COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode \`$mode'" ;; esac $ECHO $ECHO "Try \`$progname --help' for more information about other modes." exit $? } # Now that we've collected a possible --mode arg, show help if necessary $opt_help && func_mode_help # func_mode_execute arg... func_mode_execute () { $opt_debug # The first argument is the command name. cmd="$nonopt" test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $execute_dlfiles; do test -f "$file" \ || func_fatal_help "\`$file' is not a file" dir= case $file in *.la) # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "\`$file' was not linked with \`-export-dynamic'" continue fi func_dirname "$file" "" "." dir="$func_dirname_result" if test -f "$dir/$objdir/$dlname"; then dir="$dir/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir="$func_dirname_result" ;; *) func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -*) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file="$progdir/$program" elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). func_quote_for_eval "$file" args="$args $func_quote_for_eval_result" done if test "X$opt_dry_run" = Xfalse; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" $ECHO "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS fi } test "$mode" = execute && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $opt_debug libdirs="$nonopt" admincmds= if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for dir do libdirs="$libdirs $dir" done for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || admincmds="$admincmds $cmds" fi done fi # Exit here if they wanted silent mode. $opt_silent && exit $EXIT_SUCCESS $ECHO "X----------------------------------------------------------------------" | $Xsed $ECHO "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done $ECHO $ECHO "If you ever happen to want to link against installed libraries" $ECHO "in a given directory, LIBDIR, you must either use libtool, and" $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" $ECHO "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" $ECHO " during execution" fi if test -n "$runpath_var"; then $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" $ECHO " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi $ECHO $ECHO "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" $ECHO "pages." ;; *) $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac $ECHO "X----------------------------------------------------------------------" | $Xsed exit $EXIT_SUCCESS } test "$mode" = finish && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $opt_debug # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. $ECHO "X$nonopt" | $GREP shtool >/dev/null; then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" install_prog="$install_prog$func_quote_for_eval_result" # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= for arg do if test -n "$dest"; then files="$files $dest" dest=$arg continue fi case $arg in -d) isdir=yes ;; -f) case " $install_prog " in *[\\\ /]cp\ *) ;; *) prev=$arg ;; esac ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" install_prog="$install_prog $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the \`$prev' option requires an argument" if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else func_dirname_and_basename "$dest" "" "." destdir="$func_dirname_result" destname="$func_basename_result" # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "\`$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "\`$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. staticlibs="$staticlibs $file" ;; *.la) # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) current_libdirs="$current_libdirs $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) future_libdirs="$future_libdirs $libdir" ;; esac fi func_dirname "$file" "/" "" dir="$func_dirname_result" dir="$dir$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` fi func_warning "relinking \`$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname="$1" shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme="$stripme" case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme="" ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try `ln -sf' first, because the `ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib="$destdir/$realname" func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name="$func_basename_result" instname="$dir/$name"i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest="$destfile" destfile= ;; *) func_fatal_help "cannot copy a libtool object to \`$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext="" case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=".exe" fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script \`$wrapper'" finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then func_warning "\`$lib' has not been installed in \`$libdir'" finalize=no fi done relink_command= func_source "$wrapper" outputname= if test "$fast_install" = no && test -n "$relink_command"; then $opt_dry_run || { if test "$finalize" = yes; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file="$func_basename_result" outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` $opt_silent || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink \`$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file="$outputname" else func_warning "cannot relink \`$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name="$func_basename_result" # Set up the ranlib parameters. oldlib="$destdir/$name" func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run \`$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test "$mode" = install && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $opt_debug my_outputname="$1" my_originator="$2" my_pic_p="${3-no}" my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms="${my_outputname}S.c" else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${my_outputname}.nm" func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then func_verbose "generating symbol list for \`$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` for progfile in $progfiles; do func_verbose "extracting global C symbols from \`$progfile'" $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$outputname.exp" $opt_dry_run || { $RM $export_symbols eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from \`$dlprefile'" func_basename "$dlprefile" name="$func_basename_result" $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" } done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" fi $ECHO >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; " case $host in *cygwin* | *mingw* | *cegcc* ) $ECHO >> "$output_objdir/$my_dlsyms" "\ /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */" lt_dlsym_const= ;; *osf5*) echo >> "$output_objdir/$my_dlsyms" "\ /* This system does not cope well with relocations in const data */" lt_dlsym_const= ;; *) lt_dlsym_const=const ;; esac $ECHO >> "$output_objdir/$my_dlsyms" "\ extern $lt_dlsym_const lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[]; $lt_dlsym_const lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = {\ { \"$my_originator\", (void *) 0 }," case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac $ECHO >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) if test "X$my_pic_p" != Xno; then pic_flag_for_symtable=" $pic_flag" fi ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) symtab_cflags="$symtab_cflags $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' # Transform the symbol file into the correct name. symfileobj="$output_objdir/${my_outputname}S.$objext" case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for \`$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` fi } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. func_win32_libid () { $opt_debug win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then win32_nmres=`eval $NM -f posix -A $1 | $SED -n -e ' 1,100{ / I /{ s,.*,import, p q } }'` case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_extract_an_archive dir oldlib func_extract_an_archive () { $opt_debug f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $opt_debug my_gentop="$1"; shift my_oldlibs=${1+"$@"} my_oldobjs="" my_xlib="" my_xabs="" my_xdir="" for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib="$func_basename_result" my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir="$my_gentop/$my_xlib_u" func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` darwin_base_archive=`basename "$darwin_archive"` darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches ; do func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" func_extract_an_archive "`pwd`" "${darwin_base_archive}" cd "$darwin_curdir" $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` done func_extract_archives_result="$my_oldobjs" } # func_emit_wrapper_part1 [arg=no] # # Emit the first part of a libtool wrapper script on stdout. # For more information, see the description associated with # func_emit_wrapper(), below. func_emit_wrapper_part1 () { func_emit_wrapper_part1_arg1=no if test -n "$1" ; then func_emit_wrapper_part1_arg1=$1 fi $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='${SED} -e 1s/^X//' sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then ECHO=\"$qecho\" file=\"\$0\" # Make sure echo works. if test \"X\$1\" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then # Yippee, \$ECHO works! : else # Restart under the correct shell, and then maybe \$ECHO will work. exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} fi fi\ " $ECHO "\ # Find the directory that this script lives in. thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` done " } # end: func_emit_wrapper_part1 # func_emit_wrapper_part2 [arg=no] # # Emit the second part of a libtool wrapper script on stdout. # For more information, see the description associated with # func_emit_wrapper(), below. func_emit_wrapper_part2 () { func_emit_wrapper_part2_arg1=no if test -n "$1" ; then func_emit_wrapper_part2_arg1=$1 fi $ECHO "\ # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` export $shlibpath_var " fi # fixup the dll searchpath if we need to. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 fi else # The program doesn't exist. \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # end: func_emit_wrapper_part2 # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory in which it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=no if test -n "$1" ; then func_emit_wrapper_arg1=$1 fi # split this up so that func_emit_cwrapperexe_src # can call each part independently. func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" } # func_to_host_path arg # # Convert paths to host format when used with build tools. # Intended for use with "native" mingw (where libtool itself # is running under the msys shell), or in the following cross- # build environments: # $build $host # mingw (msys) mingw [e.g. native] # cygwin mingw # *nix + wine mingw # where wine is equipped with the `winepath' executable. # In the native mingw case, the (msys) shell automatically # converts paths for any non-msys applications it launches, # but that facility isn't available from inside the cwrapper. # Similar accommodations are necessary for $host mingw and # $build cygwin. Calling this function does no harm for other # $host/$build combinations not listed above. # # ARG is the path (on $build) that should be converted to # the proper representation for $host. The result is stored # in $func_to_host_path_result. func_to_host_path () { func_to_host_path_result="$1" if test -n "$1" ; then case $host in *mingw* ) lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' case $build in *mingw* ) # actually, msys # awkward: cmd appends spaces to result lt_sed_strip_trailing_spaces="s/[ ]*\$//" func_to_host_path_tmp1=`( cmd //c echo "$1" |\ $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ $SED -e "$lt_sed_naive_backslashify"` ;; *cygwin* ) func_to_host_path_tmp1=`cygpath -w "$1"` func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ $SED -e "$lt_sed_naive_backslashify"` ;; * ) # Unfortunately, winepath does not exit with a non-zero # error code, so we are forced to check the contents of # stdout. On the other hand, if the command is not # found, the shell will set an exit code of 127 and print # *an error message* to stdout. So we must check for both # error code of zero AND non-empty stdout, which explains # the odd construction: func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ $SED -e "$lt_sed_naive_backslashify"` else # Allow warning below. func_to_host_path_result="" fi ;; esac if test -z "$func_to_host_path_result" ; then func_error "Could not determine host path corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_path_result="$1" fi ;; esac fi } # end: func_to_host_path # func_to_host_pathlist arg # # Convert pathlists to host format when used with build tools. # See func_to_host_path(), above. This function supports the # following $build/$host combinations (but does no harm for # combinations not listed here): # $build $host # mingw (msys) mingw [e.g. native] # cygwin mingw # *nix + wine mingw # # Path separators are also converted from $build format to # $host format. If ARG begins or ends with a path separator # character, it is preserved (but converted to $host format) # on output. # # ARG is a pathlist (on $build) that should be converted to # the proper representation on $host. The result is stored # in $func_to_host_pathlist_result. func_to_host_pathlist () { func_to_host_pathlist_result="$1" if test -n "$1" ; then case $host in *mingw* ) lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_to_host_pathlist_tmp2="$1" # Once set for this call, this variable should not be # reassigned. It is used in tha fallback case. func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ $SED -e 's|^:*||' -e 's|:*$||'` case $build in *mingw* ) # Actually, msys. # Awkward: cmd appends spaces to result. lt_sed_strip_trailing_spaces="s/[ ]*\$//" func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ $SED -e "$lt_sed_naive_backslashify"` ;; *cygwin* ) func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ $SED -e "$lt_sed_naive_backslashify"` ;; * ) # unfortunately, winepath doesn't convert pathlists func_to_host_pathlist_result="" func_to_host_pathlist_oldIFS=$IFS IFS=: for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do IFS=$func_to_host_pathlist_oldIFS if test -n "$func_to_host_pathlist_f" ; then func_to_host_path "$func_to_host_pathlist_f" if test -n "$func_to_host_path_result" ; then if test -z "$func_to_host_pathlist_result" ; then func_to_host_pathlist_result="$func_to_host_path_result" else func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" fi fi fi IFS=: done IFS=$func_to_host_pathlist_oldIFS ;; esac if test -z "$func_to_host_pathlist_result" ; then func_error "Could not determine the host path(s) corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This may break if $1 contains DOS-style drive # specifications. The fix is not to complicate the expression # below, but for the user to provide a working wine installation # with winepath so that path translation in the cross-to-mingw # case works properly. lt_replace_pathsep_nix_to_dos="s|:|;|g" func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ $SED -e "$lt_replace_pathsep_nix_to_dos"` fi # Now, add the leading and trailing path separators back case "$1" in :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" ;; esac case "$1" in *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" ;; esac ;; esac fi } # end: func_to_host_pathlist # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include # define setmode _setmode #else # include # include # ifdef __CYGWIN__ # include # define HAVE_SETENV # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif # endif #endif #include #include #include #include #include #include #include #include #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif #ifdef _MSC_VER # define S_IXUSR _S_IEXEC # define stat _stat # ifndef _INTPTR_T_DEFINED # define intptr_t int # endif #endif #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ defined (__OS2__) # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifdef __CYGWIN__ # define FOPEN_WB "wb" #endif #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free ((void *) stale); stale = 0; } \ } while (0) #undef LTWRAPPER_DEBUGPRINTF #if defined DEBUGWRAPPER # define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args static void ltwrapper_debugprintf (const char *fmt, ...) { va_list args; va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } #else # define LTWRAPPER_DEBUGPRINTF(args) #endif const char *program_name = NULL; void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_fatal (const char *message, ...); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_opt_process_env_set (const char *arg); void lt_opt_process_env_prepend (const char *arg); void lt_opt_process_env_append (const char *arg); int lt_split_name_value (const char *arg, char** name, char** value); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); static const char *script_text_part1 = EOF func_emit_wrapper_part1 yes | $SED -e 's/\([\\"]\)/\\\1/g' \ -e 's/^/ "/' -e 's/$/\\n"/' echo ";" cat <"))); for (i = 0; i < newargc; i++) { LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : ""))); } EOF case $host_os in mingw*) cat <<"EOF" /* execv doesn't actually work on mingw as expected on unix */ rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); if (rval == -1) { /* failed to start process */ LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); return 127; } return rval; EOF ;; *) cat <<"EOF" execv (lt_argv_zero, newargz); return rval; /* =127, but avoids unused variable warning */ EOF ;; esac cat <<"EOF" } void * xmalloc (size_t num) { void *p = (void *) malloc (num); if (!p) lt_fatal ("Memory exhausted"); return p; } char * xstrdup (const char *string) { return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL; } const char * base_name (const char *name) { const char *base; #if defined (HAVE_DOS_BASED_FILE_SYSTEM) /* Skip over the disk name in MSDOS pathnames. */ if (isalpha ((unsigned char) name[0]) && name[1] == ':') name += 2; #endif for (base = name; *name; name++) if (IS_DIR_SEPARATOR (*name)) base = name + 1; return base; } int check_executable (const char *path) { struct stat st; LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!")); if ((!path) || (!*path)) return 0; if ((stat (path, &st) >= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!")); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; int tmp_len; char *concat_name; LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined (HAVE_DOS_BASED_FILE_SYSTEM) if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined (HAVE_DOS_BASED_FILE_SYSTEM) } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = q - p; p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal ("getcwd failed"); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal ("getcwd failed"); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", tmp_pathspec)); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { char *errstr = strerror (errno); lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal ("Could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (strcmp (str, pat) == 0) *str = '\0'; } return str; } static void lt_error_core (int exit_status, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s: %s: ", program_name, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, "FATAL", message, ap); va_end (ap); } void lt_setenv (const char *name, const char *value) { LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", (name ? name : ""), (value ? value : ""))); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else int len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { int orig_value_len = strlen (orig_value); int add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } int lt_split_name_value (const char *arg, char** name, char** value) { const char *p; int len; if (!arg || !*arg) return 1; p = strchr (arg, (int)'='); if (!p) return 1; *value = xstrdup (++p); len = strlen (arg) - strlen (*value); *name = XMALLOC (char, len); strncpy (*name, arg, len-1); (*name)[len - 1] = '\0'; return 0; } void lt_opt_process_env_set (const char *arg) { char *name = NULL; char *value = NULL; if (lt_split_name_value (arg, &name, &value) != 0) { XFREE (name); XFREE (value); lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); } lt_setenv (name, value); XFREE (name); XFREE (value); } void lt_opt_process_env_prepend (const char *arg) { char *name = NULL; char *value = NULL; char *new_value = NULL; if (lt_split_name_value (arg, &name, &value) != 0) { XFREE (name); XFREE (value); lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); } new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); XFREE (name); XFREE (value); } void lt_opt_process_env_append (const char *arg) { char *name = NULL; char *value = NULL; char *new_value = NULL; if (lt_split_name_value (arg, &name, &value) != 0) { XFREE (name); XFREE (value); lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); } new_value = lt_extend_str (getenv (name), value, 1); lt_setenv (name, new_value); XFREE (new_value); XFREE (name); XFREE (value); } void lt_update_exe_path (const char *name, const char *value) { LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", (name ? name : ""), (value ? value : ""))); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ int len = strlen (new_value); while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[len-1] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", (name ? name : ""), (value ? value : ""))); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF } # end: func_emit_cwrapperexe_src # func_mode_link arg... func_mode_link () { $opt_debug case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll which has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=no prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module="${wl}-single_module" func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg="$1" shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" else dlprefiles="$dlprefiles $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" test -f "$arg" \ || func_fatal_error "symbol file \`$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) deplibs="$deplibs $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # moreargs="$moreargs $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file \`$arg' does not exist" fi arg=$save_arg prev= continue ;; precious_regex) precious_files_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) rpath="$rpath $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) xrpath="$xrpath $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds="$arg" prev= continue ;; weak) weak_libs="$weak_libs $arg" prev= continue ;; xcclinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) compiler_flags="$compiler_flags $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "\`-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname '-L' '' "$arg" dir=$func_stripname_result if test -z "$dir"; then if test "$#" -gt 0; then func_fatal_error "require no space between \`-L' and \`$1'" else func_fatal_error "need path for \`-L' option" fi fi # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of \`$dir'" dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "*) ;; *) deplibs="$deplibs -L$dir" lib_search_path="$lib_search_path $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) dllsearchpath="$dllsearchpath:$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) dllsearchpath="$dllsearchpath:$testbindir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework deplibs="$deplibs System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test "X$arg" = "X-lc" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test "X$arg" = "X-lc" && continue ;; esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi deplibs="$deplibs $arg" continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot) compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; esac continue ;; -multi_module) single_module="${wl}-multi_module" continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "\`-no-install' is ignored for $host" func_warning "assuming \`-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" arg="$arg $wl$func_quote_for_eval_result" compiler_flags="$compiler_flags $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" arg="$arg $wl$func_quote_for_eval_result" compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" linker_flags="$linker_flags $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; # -64, -mips[0-9] enable 64-bit mode on the SGI compiler # -r[0-9][0-9]* specifies the processor on the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler # +DA*, +DD* enable 64-bit mode on the HP compiler # -q* pass through compiler args for the IBM compiler # -m*, -t[45]*, -txscale* pass through architecture-specific # compiler args for GCC # -F/path gives path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC # @file GCC response files -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" func_append compile_command " $arg" func_append finalize_command " $arg" compiler_flags="$compiler_flags $arg" continue ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; *.$objext) # A standard object. objs="$objs $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. deplibs="$deplibs $arg" old_deplibs="$old_deplibs $arg" continue ;; *.la) # A libtool-controlled library. if test "$prev" = dlfiles; then # This library was specified with -dlopen. dlfiles="$dlfiles $arg" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. dlprefiles="$dlprefiles $arg" prev= else deplibs="$deplibs $arg" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the \`$prevarg' option requires an argument" if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname="$func_basename_result" libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" func_dirname "$output" "/" "" output_objdir="$func_dirname_result$objdir" # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_duplicate_deps ; then case "$libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi libs="$libs $deplib" done if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; esac pre_post_deps="$pre_post_deps $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test "$linkmode,$pass" = "lib,link"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs="$tmp_deplibs" fi if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS%" test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" ;; esac fi if test "$linkmode,$pass" = "lib,dlpreopen"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= case $lib in *.la) func_source "$lib" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` case " $weak_libs " in *" $deplib_base "*) ;; *) deplibs="$deplibs $deplib" ;; esac done done libs="$dlprefiles" fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else compiler_flags="$compiler_flags $deplib" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; esac fi fi continue ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then func_warning "\`-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test "$linkmode" = lib; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib="$searchdir/lib${name}${search_ext}" if test -f "$lib"; then if test "$search_ext" = ".la"; then found=yes else found=no fi break 2 fi done done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll="$l" done if test "X$ll" = "X$old_library" ; then # only static version available found=no func_dirname "$lib" "" "." ladir="$func_dirname_result" lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l *.ltframework) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" newlib_search_path="$newlib_search_path $func_stripname_result" ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" newlib_search_path="$newlib_search_path $func_stripname_result" ;; *) func_warning "\`-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then func_stripname '-R' '' "$deplib" dir=$func_stripname_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) lib="$deplib" ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=no case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi ;; pass_all) valid_a_lib=yes ;; esac if test "$valid_a_lib" != yes; then $ECHO $ECHO "*** Warning: Trying to link with static lib archive $deplib." $ECHO "*** I have the capability to make that library automatically link in when" $ECHO "*** you link to this library. But I can only do this if you have a" $ECHO "*** shared version of the library, which you do not appear to have" $ECHO "*** because the file extensions .$libext of this argument makes me believe" $ECHO "*** that it is just a static archive that I should not use here." else $ECHO $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi ;; esac continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. newdlprefiles="$newdlprefiles $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else newdlfiles="$newdlfiles $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" fi # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "\`$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir="$func_dirname_result" dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && dlfiles="$dlfiles $dlopen" test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # It is a libtool convenience library, so add in its objects. convenience="$convenience $ladir/$objdir/$old_library" old_convenience="$old_convenience $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_duplicate_deps ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done elif test "$linkmode" != prog && test "$linkmode" != lib; then func_fatal_error "\`$lib' is not a convenience library" fi continue fi # $pass = conv # Get the name of the library we link against. linklib= for l in $old_library $library_names; do linklib="$l" done if test -z "$linklib"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then func_fatal_error "cannot -dlopen a convenience library: \`$lib'" fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. dlprefiles="$dlprefiles $lib $dependency_libs" else newdlfiles="$newdlfiles $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of \`$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir="$ladir" fi ;; esac func_basename "$lib" laname="$func_basename_result" # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library \`$lib' was moved." dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$libdir" absdir="$libdir" fi test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir="$ladir" absdir="$abs_ladir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir" && test "$linkmode" = prog; then func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" fi # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then newdlprefiles="$newdlprefiles $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then newdlprefiles="$newdlprefiles $dir/$dlname" else newdlprefiles="$newdlprefiles $dir/$linklib" fi fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test "$linkmode" = prog && test "$pass" != link; then newlib_search_path="$newlib_search_path $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" newlib_search_path="$newlib_search_path $func_stripname_result" ;; esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_duplicate_deps ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done # for deplib continue fi # $linkmode = prog... if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { { test "$prefer_static_libs" = no || test "$prefer_static_libs,$installed" = "built,yes"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then # Make sure the rpath contains only unique directories. case "$temp_rpath:" in *"$absdir:"*) ;; *) temp_rpath="$temp_rpath$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test "$use_static_libs" = built && test "$installed" = yes; then use_static_libs=no fi if test -n "$library_names" && { test "$use_static_libs" = no || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc*) # No point in relinking DLLs because paths are not encoded notinst_deplibs="$notinst_deplibs $lib" need_relink=no ;; *) if test "$installed" = no; then notinst_deplibs="$notinst_deplibs $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule="" for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule="$dlpremoduletest" break fi done if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then $ECHO if test "$linkmode" = prog; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname="$1" shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc*) func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" func_basename "$soroot" soname="$func_basename_result" func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from \`$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for \`$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test "$linkmode" = prog || test "$mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" case $host in *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; *-*-sysv4*uw2*) add_dir="-L$dir" ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir="-L$dir" ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we can not # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null ; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library" ; then $ECHO $ECHO "*** And there doesn't seem to be a static archive available" $ECHO "*** The link will probably fail, sorry" else add="$dir/$old_library" fi elif test -n "$old_library"; then add="$dir/$old_library" fi fi esac elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$dir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && test "$hardcode_minus_L" != yes && test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then add="$inst_prefix_dir$libdir/$linklib" else add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. $ECHO $ECHO "*** Warning: This system can not link to static lib archive $lib." $ECHO "*** I have the capability to make that library automatically link in when" $ECHO "*** you link to this library. But I can only do this if you have a" $ECHO "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then $ECHO "*** But as you try to build a module library, libtool will still create " $ECHO "*** a static module, that should work as long as the dlopening application" $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then $ECHO $ECHO "*** However, this would only work if libtool was able to extract symbol" $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" $ECHO "*** not find such a program. So, this module is probably useless." $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) xrpath="$xrpath $temp_xrpath";; esac;; *) temp_deplibs="$temp_deplibs $libdir";; esac done dependency_libs="$temp_deplibs" fi newlib_search_path="$newlib_search_path $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" if $opt_duplicate_deps ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path="$deplib" ;; *.la) func_dirname "$deplib" "" "." dir="$func_dirname_result" # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of \`$dir'" absdir="$dir" fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl" ; then depdepl="$absdir/$objdir/$depdepl" darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" path= fi fi ;; *) path="-L$absdir/$objdir" ;; esac else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "\`$deplib' seems to be moved" path="-L$absdir" fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test "$pass" = link; then if test "$linkmode" = "prog"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) lib_search_path="$lib_search_path $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) tmp_libs="$tmp_libs $deplib" ;; esac ;; *) tmp_libs="$tmp_libs $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i="" ;; esac if test -n "$i" ; then tmp_libs="$tmp_libs $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" fi if test "$linkmode" = prog || test "$linkmode" = lib; then dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "\`-R' is ignored for archives" test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "\`-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "\`-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" objs="$objs$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test "$module" = no && \ func_fatal_help "libtool library \`$output' must begin with \`lib'" if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" else $ECHO $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" libobjs="$libobjs $objs" fi fi test "$dlself" != no && \ func_warning "\`-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test "$#" -gt 1 && \ func_warning "ignoring multiple \`-rpath's for a libtool library" install_libdir="$1" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. # Some compilers have problems with a `.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "\`-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 shift IFS="$save_ifs" test -n "$7" && \ func_fatal_help "too many parameters to \`-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major="$1" number_minor="$2" number_revision="$3" # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # which has an extra 1 added just for fun # case $version_type in darwin|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_minor" lt_irix_increment=no ;; *) func_fatal_configuration "$modename: unknown library version type \`$version_type'" ;; esac ;; no) current="$1" revision="$2" age="$3" ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT \`$current' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION \`$revision' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE \`$age' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE \`$age' is greater than the current interface number \`$current'" func_fatal_error "\`$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current" ;; irix | nonstopux) if test "X$lt_irix_increment" = "Xno"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring:${iface}.0" done # Make executables depend on our current version. verstring="$verstring:${current}.0" ;; qnx) major=".$current" versuffix=".$current" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; *) func_fatal_configuration "unknown library version type \`$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then func_warning "undefined symbols not allowed in $host shared libraries" build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi func_generate_dlsyms "$libname" "$libname" "yes" libobjs="$libobjs $symfileobj" test "X$libobjs" = "X " && libobjs= if test "$mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi removelist="$removelist $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then oldlibs="$oldlibs $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do temp_xrpath="$temp_xrpath -R$libdir" case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) dlfiles="$dlfiles $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) dlprefiles="$dlprefiles $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework deplibs="$deplibs System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then deplibs="$deplibs -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $ECHO $ECHO "*** Warning: linker path does not have real file for library $a_deplib." $ECHO "*** I have the capability to make that library automatically link in when" $ECHO "*** you link to this library. But I can only do this if you have a" $ECHO "*** shared version of the library, which you do not appear to have" $ECHO "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) newdeplibs="$newdeplibs $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $ECHO $ECHO "*** Warning: linker path does not have real file for library $a_deplib." $ECHO "*** I have the capability to make that library automatically link in when" $ECHO "*** you link to this library. But I can only do this if you have a" $ECHO "*** shared version of the library, which you do not appear to have" $ECHO "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` done fi if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | $GREP . >/dev/null; then $ECHO if test "X$deplibs_check_method" = "Xnone"; then $ECHO "*** Warning: inter-library dependencies are not supported in this platform." else $ECHO "*** Warning: inter-library dependencies are not known to be supported." fi $ECHO "*** All declared inter-library dependencies are being dropped." droppeddeps=yes fi ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then $ECHO $ECHO "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" $ECHO "*** a static module, that should work as long as the dlopening" $ECHO "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then $ECHO $ECHO "*** However, this would only work if libtool was able to extract symbol" $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" $ECHO "*** not find such a program. So, this module is probably useless." $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else $ECHO "*** The inter-library dependencies that have been dropped here will be" $ECHO "*** automatically added whenever a program is linked with this library" $ECHO "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then $ECHO $ECHO "*** Since this library must not contain undefined symbols," $ECHO "*** because either the platform does not support them or" $ECHO "*** it was explicitly requested with -no-undefined," $ECHO "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) new_libs="$new_libs -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$new_libs $deplib" ;; esac ;; *) new_libs="$new_libs $deplib" ;; esac done deplibs="$new_libs" # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" dep_rpath="$dep_rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" if test -n "$hardcode_libdir_flag_spec_ld"; then eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" else eval dep_rpath=\"$hardcode_libdir_flag_spec\" fi fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname="$1" shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi if test -z "$dlname"; then dlname=$soname fi lib="$output_objdir/$realname" linknames= for link do linknames="$linknames $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols="$output_objdir/$libname.uexp" delfiles="$delfiles $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile if test "x`$SED 1q $export_symbols`" != xEXPORTS; then # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols="$export_symbols" export_symbols= always_export_symbols=yes fi fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" func_len " $cmd" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then func_show_eval "$cmd" 'exit $?' skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS="$save_ifs" if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' fi if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) tmp_deplibs="$tmp_deplibs $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test "$compiler_needs_object" = yes && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $convenience libobjs="$libobjs $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" linker_flags="$linker_flags $flag" fi # Make a backup of the uninstalled library when relinking if test "$mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test "X$skipped_export" != "X:" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output output_la=`$ECHO "X$output" | $Xsed -e "$basename"` # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then output=${output_objdir}/${output_la}.lnkscript func_verbose "creating GNU ld script: $output" $ECHO 'INPUT (' > $output for obj in $save_libobjs do $ECHO "$obj" >> $output done $ECHO ')' >> $output delfiles="$delfiles $output" elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then output=${output_objdir}/${output_la}.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test "$compiler_needs_object" = yes; then firstobj="$1 " shift fi for obj do $ECHO "$obj" >> $output done delfiles="$delfiles $output" output=$firstobj\"$file_list_spec$output\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-${k}.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test "X$objlist" = X || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. eval concat_cmds=\"$reload_cmds $objlist $last_robj\" else # All subsequent reloadable object files will link in # the last one created. eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-${k}.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-${k}.$objext objlist=$obj func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" if test -n "$last_robj"; then eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" fi delfiles="$delfiles $output" else output= fi if ${skipped_export-false}; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi fi test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs="$IFS"; IFS='~' for cmd in $concat_cmds; do IFS="$save_ifs" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi if ${skipped_export-false}; then if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi fi libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $dlprefiles libobjs="$libobjs $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "\`-R' is ignored for objects" test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for objects" test -n "$release" && \ func_warning "\`-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object \`$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec and hope we can get by with # turning comma into space.. wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` else gentop="$output_objdir/${obj}x" generated="$generated $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # Create the old-style object. reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for programs" test -n "$release" && \ func_warning "\`-release' is ignored for programs" test "$preload" = yes \ && test "$dlopen_support" = unknown \ && test "$dlopen_self" = unknown \ && test "$dlopen_self_static" = unknown && \ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test "$tagname" = CXX ; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) compile_command="$compile_command ${wl}-bind_at_load" finalize_command="$finalize_command ${wl}-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) new_libs="$new_libs -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$new_libs $deplib" ;; esac ;; *) new_libs="$new_libs $deplib" ;; esac done compile_deplibs="$new_libs" compile_command="$compile_command $compile_deplibs" finalize_command="$finalize_command $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) dllsearchpath="$dllsearchpath:$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) dllsearchpath="$dllsearchpath:$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" "no" # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=yes case $host in *cygwin* | *mingw* ) if test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; *cegcc) # Disable wrappers for cegcc, we are cross compiling anyway. wrappers_required=no ;; *) if test "$need_relink" = no || test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; esac if test "$wrappers_required" = no; then # Replace the output file specification. compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' # Delete the generated files. if test -f "$output_objdir/${outputname}S.${objext}"; then func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' fi exit $exit_status fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do rpath="$rpath$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' exit $EXIT_SUCCESS fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" func_warning "this platform does not like uninstalled shared libraries" func_warning "\`$output' will be relinked during installation" else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` fi # Quote $ECHO for shipping. if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then case $progpath in [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; esac qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` else qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource="$output_path/$objdir/lt-$output_name.c" cwrapper="$output_path/$output_name.exe" $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host" ; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save $symfileobj" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" if test "$preload" = yes && test -f "$symfileobj"; then oldobjs="$oldobjs $symfileobj" fi fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $addlibs oldobjs="$oldobjs $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $dlprefiles oldobjs="$oldobjs $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else $ECHO "copying selected object files to avoid basename conflicts..." gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase="$func_basename_result" case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" oldobjs="$oldobjs $gentop/$newobj" ;; *) oldobjs="$oldobjs $obj" ;; esac done fi eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" newdependency_libs="$newdependency_libs $libdir/$name" ;; *) newdependency_libs="$newdependency_libs $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" newdlfiles="$newdlfiles $libdir/$name" ;; *) newdlfiles="$newdlfiles $lib" ;; esac done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" newdlprefiles="$newdlprefiles $libdir/$name" ;; esac done dlprefiles="$newdlprefiles" else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlfiles="$newdlfiles $abs" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlprefiles="$newdlprefiles $abs" done dlprefiles="$newdlprefiles" fi $RM $output # place dlname in correct position for cygwin tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that can not go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } { test "$mode" = link || test "$mode" = relink; } && func_mode_link ${1+"$@"} # func_mode_uninstall arg... func_mode_uninstall () { $opt_debug RM="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) RM="$RM $arg"; rmforce=yes ;; -*) RM="$RM $arg" ;; *) files="$files $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= origobjdir="$objdir" for file in $files; do func_dirname "$file" "" "." dir="$func_dirname_result" if test "X$dir" = X.; then objdir="$origobjdir" else objdir="$dir/$origobjdir" fi func_basename "$file" name="$func_basename_result" test "$mode" = uninstall && objdir="$dir" # Remember objdir for removal later, being careful to avoid duplicates if test "$mode" = clean; then case " $rmdirs " in *" $objdir "*) ;; *) rmdirs="$rmdirs $objdir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do rmfiles="$rmfiles $objdir/$n" done test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" case "$mode" in clean) case " $library_names " in # " " in the beginning catches empty $dlname *" $dlname "*) ;; *) rmfiles="$rmfiles $objdir/$dlname" ;; esac test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test "$pic_object" != none; then rmfiles="$rmfiles $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test "$non_pic_object" != none; then rmfiles="$rmfiles $dir/$non_pic_object" fi fi ;; *) if test "$mode" = clean ; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe rmfiles="$rmfiles $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result rmfiles="$rmfiles $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then rmfiles="$rmfiles $objdir/lt-$name" fi if test "X$noexename" != "X$name" ; then rmfiles="$rmfiles $objdir/lt-${noexename}.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done objdir="$origobjdir" # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } { test "$mode" = uninstall || test "$mode" = clean; } && func_mode_uninstall ${1+"$@"} test -z "$mode" && { help="$generic_help" func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode \`$mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: # vi:sw=2 hkl-4.0.3/config/missing0000755000175000017500000002623311402461122012060 00000000000000#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2009-04-28.21; # UTC # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, # 2008, 2009 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' sed_minuso='s/.* -o \([^ ]*\).*/\1/p' # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case $1 in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' autom4te touch the output file, or create a stub one automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch] Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and \`g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; esac # normalize program name to check for. program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). This is about non-GNU programs, so use $1 not # $program. case $1 in lex*|yacc*) # Not GNU programs, they don't have --version. ;; tar*) if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then exit 1 fi ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case $program in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case $f in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te*) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison*|yacc*) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if test $# -ne 1; then eval LASTARG="\${$#}" case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.h fi ;; esac fi if test ! -f y.tab.h; then echo >y.tab.h fi if test ! -f y.tab.c; then echo 'main() { return 0; }' >y.tab.c fi ;; lex*|flex*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if test $# -ne 1; then eval LASTARG="\${$#}" case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if test ! -f lex.yy.c; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit $? fi ;; makeinfo*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." # The file to touch is that specified with -o ... file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -z "$file"; then # ... or it is the one specified with @setfilename ... infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n ' /^@setfilename/{ s/.* \([^ ]*\) *$/\1/ p q }' $infile` # ... or it is derived from the source name (dir/f.texi becomes f.info) test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info fi # If the file does not exist, the user really needs makeinfo; # let's fail without touching anything. test -f $file || exit 1 touch $file ;; tar*) shift # We have already tried tar in the generic part. # Look for gnutar/gtar before invocation to avoid ugly error # messages. if (gnutar --version > /dev/null 2>&1); then gnutar "$@" && exit 0 fi if (gtar --version > /dev/null 2>&1); then gtar "$@" && exit 0 fi firstarg="$1" if shift; then case $firstarg in *o*) firstarg=`echo "$firstarg" | sed s/o//` tar "$firstarg" "$@" && exit 0 ;; esac case $firstarg in *h*) firstarg=`echo "$firstarg" | sed s/h//` tar "$firstarg" "$@" && exit 0 ;; esac fi echo 1>&2 "\ WARNING: I can't seem to be able to run \`tar' with the given arguments. You may want to install GNU tar or Free paxutils, or check the command line arguments." exit 1 ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: hkl-4.0.3/config/install-sh0000755000175000017500000003253711402461122012471 00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2009-04-28.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then trap '(exit $?); exit' 1 2 13 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names starting with `-'. case $src in -*) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # Protect names starting with `-'. case $dst in -*) dst=./$dst;; esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writeable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; -*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test -z "$d" && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: hkl-4.0.3/config/config.guess0000755000175000017500000012763711402461122013013 00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 # Free Software Foundation, Inc. timestamp='2009-12-30' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner. Please send patches (context # diff format) to and include a ChangeLog # entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[456]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) case ${UNAME_MACHINE} in pc98) echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-gnu else echo ${UNAME_MACHINE}-unknown-linux-gnueabi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) echo frv-unknown-linux-gnu exit ;; i*86:Linux:*:*) LIBC=gnu eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo or32-unknown-linux-gnu exit ;; padre:Linux:*:*) echo sparc-unknown-linux-gnu exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in i386) eval $set_cc_for_build if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then UNAME_PROCESSOR="x86_64" fi fi ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: hkl-4.0.3/config/mdate-sh0000755000175000017500000001275111402461122012111 00000000000000#!/bin/sh # Get modification time of a file or directory and pretty-print it. scriptversion=2009-04-28.21; # UTC # Copyright (C) 1995, 1996, 1997, 2003, 2004, 2005, 2007, 2009 Free # Software Foundation, Inc. # written by Ulrich Drepper , June 1995 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . case $1 in '') echo "$0: No file. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: mdate-sh [--help] [--version] FILE Pretty-print the modification time of FILE. Report bugs to . EOF exit $? ;; -v | --v*) echo "mdate-sh $scriptversion" exit $? ;; esac # Prevent date giving response in another language. LANG=C export LANG LC_ALL=C export LC_ALL LC_TIME=C export LC_TIME # GNU ls changes its time format in response to the TIME_STYLE # variable. Since we cannot assume `unset' works, revert this # variable to its documented default. if test "${TIME_STYLE+set}" = set; then TIME_STYLE=posix-long-iso export TIME_STYLE fi save_arg1=$1 # Find out how to get the extended ls output of a file or directory. if ls -L /dev/null 1>/dev/null 2>&1; then ls_command='ls -L -l -d' else ls_command='ls -l -d' fi # Avoid user/group names that might have spaces, when possible. if ls -n /dev/null 1>/dev/null 2>&1; then ls_command="$ls_command -n" fi # A `ls -l' line looks as follows on OS/2. # drwxrwx--- 0 Aug 11 2001 foo # This differs from Unix, which adds ownership information. # drwxrwx--- 2 root root 4096 Aug 11 2001 foo # # To find the date, we split the line on spaces and iterate on words # until we find a month. This cannot work with files whose owner is a # user named `Jan', or `Feb', etc. However, it's unlikely that `/' # will be owned by a user whose name is a month. So we first look at # the extended ls output of the root directory to decide how many # words should be skipped to get the date. # On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below. set x`$ls_command /` # Find which argument is the month. month= command= until test $month do shift # Add another shift to the command. command="$command shift;" case $1 in Jan) month=January; nummonth=1;; Feb) month=February; nummonth=2;; Mar) month=March; nummonth=3;; Apr) month=April; nummonth=4;; May) month=May; nummonth=5;; Jun) month=June; nummonth=6;; Jul) month=July; nummonth=7;; Aug) month=August; nummonth=8;; Sep) month=September; nummonth=9;; Oct) month=October; nummonth=10;; Nov) month=November; nummonth=11;; Dec) month=December; nummonth=12;; esac done # Get the extended ls output of the file or directory. set dummy x`eval "$ls_command \"\$save_arg1\""` # Remove all preceding arguments eval $command # Because of the dummy argument above, month is in $2. # # On a POSIX system, we should have # # $# = 5 # $1 = file size # $2 = month # $3 = day # $4 = year or time # $5 = filename # # On Darwin 7.7.0 and 7.6.0, we have # # $# = 4 # $1 = day # $2 = month # $3 = year or time # $4 = filename # Get the month. case $2 in Jan) month=January; nummonth=1;; Feb) month=February; nummonth=2;; Mar) month=March; nummonth=3;; Apr) month=April; nummonth=4;; May) month=May; nummonth=5;; Jun) month=June; nummonth=6;; Jul) month=July; nummonth=7;; Aug) month=August; nummonth=8;; Sep) month=September; nummonth=9;; Oct) month=October; nummonth=10;; Nov) month=November; nummonth=11;; Dec) month=December; nummonth=12;; esac case $3 in ???*) day=$1;; *) day=$3; shift;; esac # Here we have to deal with the problem that the ls output gives either # the time of day or the year. case $3 in *:*) set `date`; eval year=\$$# case $2 in Jan) nummonthtod=1;; Feb) nummonthtod=2;; Mar) nummonthtod=3;; Apr) nummonthtod=4;; May) nummonthtod=5;; Jun) nummonthtod=6;; Jul) nummonthtod=7;; Aug) nummonthtod=8;; Sep) nummonthtod=9;; Oct) nummonthtod=10;; Nov) nummonthtod=11;; Dec) nummonthtod=12;; esac # For the first six month of the year the time notation can also # be used for files modified in the last year. if (expr $nummonth \> $nummonthtod) > /dev/null; then year=`expr $year - 1` fi;; *) year=$3;; esac # The result. echo $day $month $year # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: hkl-4.0.3/config/depcomp0000755000175000017500000004426711402461125012050 00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2009-04-28.21; # UTC # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free # Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by `PROGRAMS ARGS'. object Object file output by `PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputing dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u="sed s,\\\\\\\\,/,g" depmode=msvisualcpp fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' ' ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler understands `-MD -MF file'. However on # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using \ : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" # Add `dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # With Tru64 cc, shared objects can also be used to make a # static library. This mechanism is used in libtool 1.4 series to # handle both shared and static libraries in a single compilation. # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. # # With libtool 1.5 this exception was removed, and libtool now # generates 2 separate objects for the 2 libraries. These two # compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 tmpdepfile2=$dir$base.o.d # libtool 1.5 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.o.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d tmpdepfile4=$dir$base.d "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for `:' # in the target name. This is to cope with DOS-style filenames: # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. "$@" $dashmflag | sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: hkl-4.0.3/config/texinfo.tex0000644000175000017500000110035111402461122012652 00000000000000% texinfo.tex -- TeX macros to handle Texinfo files. % % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % \def\texinfoversion{2009-08-14.15} % % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, % 2007, 2008, 2009 Free Software Foundation, Inc. % % This texinfo.tex file is free software: you can redistribute it and/or % modify it under the terms of the GNU General Public License as % published by the Free Software Foundation, either version 3 of the % License, or (at your option) any later version. % % This texinfo.tex file is distributed in the hope that it will be % useful, but WITHOUT ANY WARRANTY; without even the implied warranty % of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU % General Public License for more details. % % You should have received a copy of the GNU General Public License % along with this program. If not, see . % % As a special exception, when this file is read by TeX when processing % a Texinfo source document, you may use the result without % restriction. (This has been our intent since Texinfo was invented.) % % Please try the latest version of texinfo.tex before submitting bug % reports; you can get the latest version from: % http://www.gnu.org/software/texinfo/ (the Texinfo home page), or % ftp://tug.org/tex/texinfo.tex % (and all CTAN mirrors, see http://www.ctan.org). % The texinfo.tex in any given distribution could well be out % of date, so if that's what you're using, please check. % % Send bug reports to bug-texinfo@gnu.org. Please include including a % complete document in each bug report with which we can reproduce the % problem. Patches are, of course, greatly appreciated. % % To process a Texinfo manual with TeX, it's most reliable to use the % texi2dvi shell script that comes with the distribution. For a simple % manual foo.texi, however, you can get away with this: % tex foo.texi % texindex foo.?? % tex foo.texi % tex foo.texi % dvips foo.dvi -o # or whatever; this makes foo.ps. % The extra TeX runs get the cross-reference information correct. % Sometimes one run after texindex suffices, and sometimes you need more % than two; texi2dvi does it as many times as necessary. % % It is possible to adapt texinfo.tex for other languages, to some % extent. You can get the existing language-specific files from the % full Texinfo distribution. % % The GNU Texinfo home page is http://www.gnu.org/software/texinfo. \message{Loading texinfo [version \texinfoversion]:} % If in a .fmt file, print the version number % and turn on active characters that we couldn't do earlier because % they might have appeared in the input file name. \everyjob{\message{[Texinfo version \texinfoversion]}% \catcode`+=\active \catcode`\_=\active} \chardef\other=12 % We never want plain's \outer definition of \+ in Texinfo. % For @tex, we can use \tabalign. \let\+ = \relax % Save some plain tex macros whose names we will redefine. \let\ptexb=\b \let\ptexbullet=\bullet \let\ptexc=\c \let\ptexcomma=\, \let\ptexdot=\. \let\ptexdots=\dots \let\ptexend=\end \let\ptexequiv=\equiv \let\ptexexclam=\! \let\ptexfootnote=\footnote \let\ptexgtr=> \let\ptexhat=^ \let\ptexi=\i \let\ptexindent=\indent \let\ptexinsert=\insert \let\ptexlbrace=\{ \let\ptexless=< \let\ptexnewwrite\newwrite \let\ptexnoindent=\noindent \let\ptexplus=+ \let\ptexrbrace=\} \let\ptexslash=\/ \let\ptexstar=\* \let\ptext=\t \let\ptextop=\top {\catcode`\'=\active \global\let\ptexquoteright'}% Math-mode def from plain.tex. \let\ptexraggedright=\raggedright % If this character appears in an error message or help string, it % starts a new line in the output. \newlinechar = `^^J % Use TeX 3.0's \inputlineno to get the line number, for better error % messages, but if we're using an old version of TeX, don't do anything. % \ifx\inputlineno\thisisundefined \let\linenumber = \empty % Pre-3.0. \else \def\linenumber{l.\the\inputlineno:\space} \fi % Set up fixed words for English if not already set. \ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi \ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi \ifx\putwordfile\undefined \gdef\putwordfile{file}\fi \ifx\putwordin\undefined \gdef\putwordin{in}\fi \ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi \ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi \ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi \ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi \ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi \ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi \ifx\putwordof\undefined \gdef\putwordof{of}\fi \ifx\putwordon\undefined \gdef\putwordon{on}\fi \ifx\putwordpage\undefined \gdef\putwordpage{page}\fi \ifx\putwordsection\undefined \gdef\putwordsection{section}\fi \ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi \ifx\putwordsee\undefined \gdef\putwordsee{see}\fi \ifx\putwordSee\undefined \gdef\putwordSee{See}\fi \ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi \ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi % \ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi \ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi \ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi \ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi \ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi \ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi \ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi \ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi \ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi \ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi \ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi \ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi % \ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi \ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi \ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi \ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi \ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi % Since the category of space is not known, we have to be careful. \chardef\spacecat = 10 \def\spaceisspace{\catcode`\ =\spacecat} % sometimes characters are active, so we need control sequences. \chardef\colonChar = `\: \chardef\commaChar = `\, \chardef\dashChar = `\- \chardef\dotChar = `\. \chardef\exclamChar= `\! \chardef\lquoteChar= `\` \chardef\questChar = `\? \chardef\rquoteChar= `\' \chardef\semiChar = `\; \chardef\underChar = `\_ % Ignore a token. % \def\gobble#1{} % The following is used inside several \edef's. \def\makecsname#1{\expandafter\noexpand\csname#1\endcsname} % Hyphenation fixes. \hyphenation{ Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script ap-pen-dix bit-map bit-maps data-base data-bases eshell fall-ing half-way long-est man-u-script man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces spell-ing spell-ings stand-alone strong-est time-stamp time-stamps which-ever white-space wide-spread wrap-around } % Margin to add to right of even pages, to left of odd pages. \newdimen\bindingoffset \newdimen\normaloffset \newdimen\pagewidth \newdimen\pageheight % For a final copy, take out the rectangles % that mark overfull boxes (in case you have decided % that the text looks ok even though it passes the margin). % \def\finalout{\overfullrule=0pt} % @| inserts a changebar to the left of the current line. It should % surround any changed text. This approach does *not* work if the % change spans more than two lines of output. To handle that, we would % have adopt a much more difficult approach (putting marks into the main % vertical list for the beginning and end of each change). % \def\|{% % \vadjust can only be used in horizontal mode. \leavevmode % % Append this vertical mode material after the current line in the output. \vadjust{% % We want to insert a rule with the height and depth of the current % leading; that is exactly what \strutbox is supposed to record. \vskip-\baselineskip % % \vadjust-items are inserted at the left edge of the type. So % the \llap here moves out into the left-hand margin. \llap{% % % For a thicker or thinner bar, change the `1pt'. \vrule height\baselineskip width1pt % % This is the space between the bar and the text. \hskip 12pt }% }% } % Sometimes it is convenient to have everything in the transcript file % and nothing on the terminal. We don't just call \tracingall here, % since that produces some useless output on the terminal. We also make % some effort to order the tracing commands to reduce output in the log % file; cf. trace.sty in LaTeX. % \def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% \def\loggingall{% \tracingstats2 \tracingpages1 \tracinglostchars2 % 2 gives us more in etex \tracingparagraphs1 \tracingoutput1 \tracingmacros2 \tracingrestores1 \showboxbreadth\maxdimen \showboxdepth\maxdimen \ifx\eTeXversion\undefined\else % etex gives us more logging \tracingscantokens1 \tracingifs1 \tracinggroups1 \tracingnesting2 \tracingassigns1 \fi \tracingcommands3 % 3 gives us more in etex \errorcontextlines16 }% % add check for \lastpenalty to plain's definitions. If the last thing % we did was a \nobreak, we don't want to insert more space. % \def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount \removelastskip\penalty-50\smallskip\fi\fi} \def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount \removelastskip\penalty-100\medskip\fi\fi} \def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount \removelastskip\penalty-200\bigskip\fi\fi} % For @cropmarks command. % Do @cropmarks to get crop marks. % \newif\ifcropmarks \let\cropmarks = \cropmarkstrue % % Dimensions to add cropmarks at corners. % Added by P. A. MacKay, 12 Nov. 1986 % \newdimen\outerhsize \newdimen\outervsize % set by the paper size routines \newdimen\cornerlong \cornerlong=1pc \newdimen\cornerthick \cornerthick=.3pt \newdimen\topandbottommargin \topandbottommargin=.75in % Output a mark which sets \thischapter, \thissection and \thiscolor. % We dump everything together because we only have one kind of mark. % This works because we only use \botmark / \topmark, not \firstmark. % % A mark contains a subexpression of the \ifcase ... \fi construct. % \get*marks macros below extract the needed part using \ifcase. % % Another complication is to let the user choose whether \thischapter % (\thissection) refers to the chapter (section) in effect at the top % of a page, or that at the bottom of a page. The solution is % described on page 260 of The TeXbook. It involves outputting two % marks for the sectioning macros, one before the section break, and % one after. I won't pretend I can describe this better than DEK... \def\domark{% \toks0=\expandafter{\lastchapterdefs}% \toks2=\expandafter{\lastsectiondefs}% \toks4=\expandafter{\prevchapterdefs}% \toks6=\expandafter{\prevsectiondefs}% \toks8=\expandafter{\lastcolordefs}% \mark{% \the\toks0 \the\toks2 \noexpand\or \the\toks4 \the\toks6 \noexpand\else \the\toks8 }% } % \topmark doesn't work for the very first chapter (after the title % page or the contents), so we use \firstmark there -- this gets us % the mark with the chapter defs, unless the user sneaks in, e.g., % @setcolor (or @url, or @link, etc.) between @contents and the very % first @chapter. \def\gettopheadingmarks{% \ifcase0\topmark\fi \ifx\thischapter\empty \ifcase0\firstmark\fi \fi } \def\getbottomheadingmarks{\ifcase1\botmark\fi} \def\getcolormarks{\ifcase2\topmark\fi} % Avoid "undefined control sequence" errors. \def\lastchapterdefs{} \def\lastsectiondefs{} \def\prevchapterdefs{} \def\prevsectiondefs{} \def\lastcolordefs{} % Main output routine. \chardef\PAGE = 255 \output = {\onepageout{\pagecontents\PAGE}} \newbox\headlinebox \newbox\footlinebox % \onepageout takes a vbox as an argument. Note that \pagecontents % does insertions, but you have to call it yourself. \def\onepageout#1{% \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi % \ifodd\pageno \advance\hoffset by \bindingoffset \else \advance\hoffset by -\bindingoffset\fi % % Do this outside of the \shipout so @code etc. will be expanded in % the headline as they should be, not taken literally (outputting ''code). \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}% \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}% % {% % Have to do this stuff outside the \shipout because we want it to % take effect in \write's, yet the group defined by the \vbox ends % before the \shipout runs. % \indexdummies % don't expand commands in the output. \normalturnoffactive % \ in index entries must not stay \, e.g., if % the page break happens to be in the middle of an example. % We don't want .vr (or whatever) entries like this: % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}} % "\acronym" won't work when it's read back in; % it needs to be % {\code {{\tt \backslashcurfont }acronym} \shipout\vbox{% % Do this early so pdf references go to the beginning of the page. \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi % \ifcropmarks \vbox to \outervsize\bgroup \hsize = \outerhsize \vskip-\topandbottommargin \vtop to0pt{% \line{\ewtop\hfil\ewtop}% \nointerlineskip \line{% \vbox{\moveleft\cornerthick\nstop}% \hfill \vbox{\moveright\cornerthick\nstop}% }% \vss}% \vskip\topandbottommargin \line\bgroup \hfil % center the page within the outer (page) hsize. \ifodd\pageno\hskip\bindingoffset\fi \vbox\bgroup \fi % \unvbox\headlinebox \pagebody{#1}% \ifdim\ht\footlinebox > 0pt % Only leave this space if the footline is nonempty. % (We lessened \vsize for it in \oddfootingyyy.) % The \baselineskip=24pt in plain's \makefootline has no effect. \vskip 24pt \unvbox\footlinebox \fi % \ifcropmarks \egroup % end of \vbox\bgroup \hfil\egroup % end of (centering) \line\bgroup \vskip\topandbottommargin plus1fill minus1fill \boxmaxdepth = \cornerthick \vbox to0pt{\vss \line{% \vbox{\moveleft\cornerthick\nsbot}% \hfill \vbox{\moveright\cornerthick\nsbot}% }% \nointerlineskip \line{\ewbot\hfil\ewbot}% }% \egroup % \vbox from first cropmarks clause \fi }% end of \shipout\vbox }% end of group with \indexdummies \advancepageno \ifnum\outputpenalty>-20000 \else\dosupereject\fi } \newinsert\margin \dimen\margin=\maxdimen \def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}} {\catcode`\@ =11 \gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi % marginal hacks, juha@viisa.uucp (Juha Takala) \ifvoid\margin\else % marginal info is present \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi \dimen@=\dp#1\relax \unvbox#1\relax \ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi \ifr@ggedbottom \kern-\dimen@ \vfil \fi} } % Here are the rules for the cropmarks. Note that they are % offset so that the space between them is truly \outerhsize or \outervsize % (P. A. MacKay, 12 November, 1986) % \def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong} \def\nstop{\vbox {\hrule height\cornerthick depth\cornerlong width\cornerthick}} \def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong} \def\nsbot{\vbox {\hrule height\cornerlong depth\cornerthick width\cornerthick}} % Parse an argument, then pass it to #1. The argument is the rest of % the input line (except we remove a trailing comment). #1 should be a % macro which expects an ordinary undelimited TeX argument. % \def\parsearg{\parseargusing{}} \def\parseargusing#1#2{% \def\argtorun{#2}% \begingroup \obeylines \spaceisspace #1% \parseargline\empty% Insert the \empty token, see \finishparsearg below. } {\obeylines % \gdef\parseargline#1^^M{% \endgroup % End of the group started in \parsearg. \argremovecomment #1\comment\ArgTerm% }% } % First remove any @comment, then any @c comment. \def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} \def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} % Each occurrence of `\^^M' or `\^^M' is replaced by a single space. % % \argremovec might leave us with trailing space, e.g., % @end itemize @c foo % This space token undergoes the same procedure and is eventually removed % by \finishparsearg. % \def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M} \def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M} \def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{% \def\temp{#3}% \ifx\temp\empty % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp: \let\temp\finishparsearg \else \let\temp\argcheckspaces \fi % Put the space token in: \temp#1 #3\ArgTerm } % If a _delimited_ argument is enclosed in braces, they get stripped; so % to get _exactly_ the rest of the line, we had to prevent such situation. % We prepended an \empty token at the very beginning and we expand it now, % just before passing the control to \argtorun. % (Similarly, we have to think about #3 of \argcheckspacesY above: it is % either the null string, or it ends with \^^M---thus there is no danger % that a pair of braces would be stripped. % % But first, we have to remove the trailing space token. % \def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}} % \parseargdef\foo{...} % is roughly equivalent to % \def\foo{\parsearg\Xfoo} % \def\Xfoo#1{...} % % Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my % favourite TeX trick. --kasal, 16nov03 \def\parseargdef#1{% \expandafter \doparseargdef \csname\string#1\endcsname #1% } \def\doparseargdef#1#2{% \def#2{\parsearg#1}% \def#1##1% } % Several utility definitions with active space: { \obeyspaces \gdef\obeyedspace{ } % Make each space character in the input produce a normal interword % space in the output. Don't allow a line break at this space, as this % is used only in environments like @example, where each line of input % should produce a line of output anyway. % \gdef\sepspaces{\obeyspaces\let =\tie} % If an index command is used in an @example environment, any spaces % therein should become regular spaces in the raw index file, not the % expansion of \tie (\leavevmode \penalty \@M \ ). \gdef\unsepspaces{\let =\space} } \def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} % Define the framework for environments in texinfo.tex. It's used like this: % % \envdef\foo{...} % \def\Efoo{...} % % It's the responsibility of \envdef to insert \begingroup before the % actual body; @end closes the group after calling \Efoo. \envdef also % defines \thisenv, so the current environment is known; @end checks % whether the environment name matches. The \checkenv macro can also be % used to check whether the current environment is the one expected. % % Non-false conditionals (@iftex, @ifset) don't fit into this, so they % are not treated as environments; they don't open a group. (The % implementation of @end takes care not to call \endgroup in this % special case.) % At run-time, environments start with this: \def\startenvironment#1{\begingroup\def\thisenv{#1}} % initialize \let\thisenv\empty % ... but they get defined via ``\envdef\foo{...}'': \long\def\envdef#1#2{\def#1{\startenvironment#1#2}} \def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}} % Check whether we're in the right environment: \def\checkenv#1{% \def\temp{#1}% \ifx\thisenv\temp \else \badenverr \fi } % Environment mismatch, #1 expected: \def\badenverr{% \errhelp = \EMsimple \errmessage{This command can appear only \inenvironment\temp, not \inenvironment\thisenv}% } \def\inenvironment#1{% \ifx#1\empty out of any environment% \else in environment \expandafter\string#1% \fi } % @end foo executes the definition of \Efoo. % But first, it executes a specialized version of \checkenv % \parseargdef\end{% \if 1\csname iscond.#1\endcsname \else % The general wording of \badenverr may not be ideal, but... --kasal, 06nov03 \expandafter\checkenv\csname#1\endcsname \csname E#1\endcsname \endgroup \fi } \newhelp\EMsimple{Press RETURN to continue.} %% Simple single-character @ commands % @@ prints an @ % Kludge this until the fonts are right (grr). \def\@{{\tt\char64}} % This is turned off because it was never documented % and you can use @w{...} around a quote to suppress ligatures. %% Define @` and @' to be the same as ` and ' %% but suppressing ligatures. %\def\`{{`}} %\def\'{{'}} % Used to generate quoted braces. \def\mylbrace {{\tt\char123}} \def\myrbrace {{\tt\char125}} \let\{=\mylbrace \let\}=\myrbrace \begingroup % Definitions to produce \{ and \} commands for indices, % and @{ and @} for the aux/toc files. \catcode`\{ = \other \catcode`\} = \other \catcode`\[ = 1 \catcode`\] = 2 \catcode`\! = 0 \catcode`\\ = \other !gdef!lbracecmd[\{]% !gdef!rbracecmd[\}]% !gdef!lbraceatcmd[@{]% !gdef!rbraceatcmd[@}]% !endgroup % @comma{} to avoid , parsing problems. \let\comma = , % Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent % Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H. \let\, = \c \let\dotaccent = \. \def\ringaccent#1{{\accent23 #1}} \let\tieaccent = \t \let\ubaraccent = \b \let\udotaccent = \d % Other special characters: @questiondown @exclamdown @ordf @ordm % Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss. \def\questiondown{?`} \def\exclamdown{!`} \def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}} \def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}} % Dotless i and dotless j, used for accents. \def\imacro{i} \def\jmacro{j} \def\dotless#1{% \def\temp{#1}% \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi \else \errmessage{@dotless can be used only with i or j}% \fi\fi } % The \TeX{} logo, as in plain, but resetting the spacing so that a % period following counts as ending a sentence. (Idea found in latex.) % \edef\TeX{\TeX \spacefactor=1000 } % @LaTeX{} logo. Not quite the same results as the definition in % latex.ltx, since we use a different font for the raised A; it's most % convenient for us to use an explicitly smaller font, rather than using % the \scriptstyle font (since we don't reset \scriptstyle and % \scriptscriptstyle). % \def\LaTeX{% L\kern-.36em {\setbox0=\hbox{T}% \vbox to \ht0{\hbox{\selectfonts\lllsize A}\vss}}% \kern-.15em \TeX } % Be sure we're in horizontal mode when doing a tie, since we make space % equivalent to this in @example-like environments. Otherwise, a space % at the beginning of a line will start with \penalty -- and % since \penalty is valid in vertical mode, we'd end up putting the % penalty on the vertical list instead of in the new paragraph. {\catcode`@ = 11 % Avoid using \@M directly, because that causes trouble % if the definition is written into an index file. \global\let\tiepenalty = \@M \gdef\tie{\leavevmode\penalty\tiepenalty\ } } % @: forces normal size whitespace following. \def\:{\spacefactor=1000 } % @* forces a line break. \def\*{\hfil\break\hbox{}\ignorespaces} % @/ allows a line break. \let\/=\allowbreak % @. is an end-of-sentence period. \def\.{.\spacefactor=\endofsentencespacefactor\space} % @! is an end-of-sentence bang. \def\!{!\spacefactor=\endofsentencespacefactor\space} % @? is an end-of-sentence query. \def\?{?\spacefactor=\endofsentencespacefactor\space} % @frenchspacing on|off says whether to put extra space after punctuation. % \def\onword{on} \def\offword{off} % \parseargdef\frenchspacing{% \def\temp{#1}% \ifx\temp\onword \plainfrenchspacing \else\ifx\temp\offword \plainnonfrenchspacing \else \errhelp = \EMsimple \errmessage{Unknown @frenchspacing option `\temp', must be on/off}% \fi\fi } % @w prevents a word break. Without the \leavevmode, @w at the % beginning of a paragraph, when TeX is still in vertical mode, would % produce a whole line of output instead of starting the paragraph. \def\w#1{\leavevmode\hbox{#1}} % @group ... @end group forces ... to be all on one page, by enclosing % it in a TeX vbox. We use \vtop instead of \vbox to construct the box % to keep its height that of a normal line. According to the rules for % \topskip (p.114 of the TeXbook), the glue inserted is % max (\topskip - \ht (first item), 0). If that height is large, % therefore, no glue is inserted, and the space between the headline and % the text is small, which looks bad. % % Another complication is that the group might be very large. This can % cause the glue on the previous page to be unduly stretched, because it % does not have much material. In this case, it's better to add an % explicit \vfill so that the extra space is at the bottom. The % threshold for doing this is if the group is more than \vfilllimit % percent of a page (\vfilllimit can be changed inside of @tex). % \newbox\groupbox \def\vfilllimit{0.7} % \envdef\group{% \ifnum\catcode`\^^M=\active \else \errhelp = \groupinvalidhelp \errmessage{@group invalid in context where filling is enabled}% \fi \startsavinginserts % \setbox\groupbox = \vtop\bgroup % Do @comment since we are called inside an environment such as % @example, where each end-of-line in the input causes an % end-of-line in the output. We don't want the end-of-line after % the `@group' to put extra space in the output. Since @group % should appear on a line by itself (according to the Texinfo % manual), we don't worry about eating any user text. \comment } % % The \vtop produces a box with normal height and large depth; thus, TeX puts % \baselineskip glue before it, and (when the next line of text is done) % \lineskip glue after it. Thus, space below is not quite equal to space % above. But it's pretty close. \def\Egroup{% % To get correct interline space between the last line of the group % and the first line afterwards, we have to propagate \prevdepth. \endgraf % Not \par, as it may have been set to \lisppar. \global\dimen1 = \prevdepth \egroup % End the \vtop. % \dimen0 is the vertical size of the group's box. \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox % \dimen2 is how much space is left on the page (more or less). \dimen2 = \pageheight \advance\dimen2 by -\pagetotal % if the group doesn't fit on the current page, and it's a big big % group, force a page break. \ifdim \dimen0 > \dimen2 \ifdim \pagetotal < \vfilllimit\pageheight \page \fi \fi \box\groupbox \prevdepth = \dimen1 \checkinserts } % % TeX puts in an \escapechar (i.e., `@') at the beginning of the help % message, so this ends up printing `@group can only ...'. % \newhelp\groupinvalidhelp{% group can only be used in environments such as @example,^^J% where each line of input produces a line of output.} % @need space-in-mils % forces a page break if there is not space-in-mils remaining. \newdimen\mil \mil=0.001in % Old definition--didn't work. %\parseargdef\need{\par % %% This method tries to make TeX break the page naturally %% if the depth of the box does not fit. %{\baselineskip=0pt% %\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak %\prevdepth=-1000pt %}} \parseargdef\need{% % Ensure vertical mode, so we don't make a big box in the middle of a % paragraph. \par % % If the @need value is less than one line space, it's useless. \dimen0 = #1\mil \dimen2 = \ht\strutbox \advance\dimen2 by \dp\strutbox \ifdim\dimen0 > \dimen2 % % Do a \strut just to make the height of this box be normal, so the % normal leading is inserted relative to the preceding line. % And a page break here is fine. \vtop to #1\mil{\strut\vfil}% % % TeX does not even consider page breaks if a penalty added to the % main vertical list is 10000 or more. But in order to see if the % empty box we just added fits on the page, we must make it consider % page breaks. On the other hand, we don't want to actually break the % page after the empty box. So we use a penalty of 9999. % % There is an extremely small chance that TeX will actually break the % page at this \penalty, if there are no other feasible breakpoints in % sight. (If the user is using lots of big @group commands, which % almost-but-not-quite fill up a page, TeX will have a hard time doing % good page breaking, for example.) However, I could not construct an % example where a page broke at this \penalty; if it happens in a real % document, then we can reconsider our strategy. \penalty9999 % % Back up by the size of the box, whether we did a page break or not. \kern -#1\mil % % Do not allow a page break right after this kern. \nobreak \fi } % @br forces paragraph break (and is undocumented). \let\br = \par % @page forces the start of a new page. % \def\page{\par\vfill\supereject} % @exdent text.... % outputs text on separate line in roman font, starting at standard page margin % This records the amount of indent in the innermost environment. % That's how much \exdent should take out. \newskip\exdentamount % This defn is used inside fill environments such as @defun. \parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break} % This defn is used inside nofill environments such as @example. \parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount \leftline{\hskip\leftskip{\rm#1}}}} % @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current % paragraph. For more general purposes, use the \margin insertion % class. WHICH is `l' or `r'. % \newskip\inmarginspacing \inmarginspacing=1cm \def\strutdepth{\dp\strutbox} % \def\doinmargin#1#2{\strut\vadjust{% \nobreak \kern-\strutdepth \vtop to \strutdepth{% \baselineskip=\strutdepth \vss % if you have multiple lines of stuff to put here, you'll need to % make the vbox yourself of the appropriate size. \ifx#1l% \llap{\ignorespaces #2\hskip\inmarginspacing}% \else \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}% \fi \null }% }} \def\inleftmargin{\doinmargin l} \def\inrightmargin{\doinmargin r} % % @inmargin{TEXT [, RIGHT-TEXT]} % (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right; % else use TEXT for both). % \def\inmargin#1{\parseinmargin #1,,\finish} \def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing. \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0 > 0pt \def\lefttext{#1}% have both texts \def\righttext{#2}% \else \def\lefttext{#1}% have only one text \def\righttext{#1}% \fi % \ifodd\pageno \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin \else \def\temp{\inleftmargin\lefttext}% \fi \temp } % @include FILE -- \input text of FILE. % \def\include{\parseargusing\filenamecatcodes\includezzz} \def\includezzz#1{% \pushthisfilestack \def\thisfile{#1}% {% \makevalueexpandable % we want to expand any @value in FILE. \turnoffactive % and allow special characters in the expansion \indexnofonts % Allow `@@' and other weird things in file names. \edef\temp{\noexpand\input #1 }% % % This trickery is to read FILE outside of a group, in case it makes % definitions, etc. \expandafter }\temp \popthisfilestack } \def\filenamecatcodes{% \catcode`\\=\other \catcode`~=\other \catcode`^=\other \catcode`_=\other \catcode`|=\other \catcode`<=\other \catcode`>=\other \catcode`+=\other \catcode`-=\other \catcode`\`=\other \catcode`\'=\other } \def\pushthisfilestack{% \expandafter\pushthisfilestackX\popthisfilestack\StackTerm } \def\pushthisfilestackX{% \expandafter\pushthisfilestackY\thisfile\StackTerm } \def\pushthisfilestackY #1\StackTerm #2\StackTerm {% \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}% } \def\popthisfilestack{\errthisfilestackempty} \def\errthisfilestackempty{\errmessage{Internal error: the stack of filenames is empty.}} \def\thisfile{} % @center line % outputs that line, centered. % \parseargdef\center{% \ifhmode \let\next\centerH \else \let\next\centerV \fi \next{\hfil \ignorespaces#1\unskip \hfil}% } \def\centerH#1{% {% \hfil\break \advance\hsize by -\leftskip \advance\hsize by -\rightskip \line{#1}% \break }% } \def\centerV#1{\line{\kern\leftskip #1\kern\rightskip}} % @sp n outputs n lines of vertical space \parseargdef\sp{\vskip #1\baselineskip} % @comment ...line which is ignored... % @c is the same as @comment % @ignore ... @end ignore is another way to write a comment \def\comment{\begingroup \catcode`\^^M=\other% \catcode`\@=\other \catcode`\{=\other \catcode`\}=\other% \commentxxx} {\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}} \let\c=\comment % @paragraphindent NCHARS % We'll use ems for NCHARS, close enough. % NCHARS can also be the word `asis' or `none'. % We cannot feasibly implement @paragraphindent asis, though. % \def\asisword{asis} % no translation, these are keywords \def\noneword{none} % \parseargdef\paragraphindent{% \def\temp{#1}% \ifx\temp\asisword \else \ifx\temp\noneword \defaultparindent = 0pt \else \defaultparindent = #1em \fi \fi \parindent = \defaultparindent } % @exampleindent NCHARS % We'll use ems for NCHARS like @paragraphindent. % It seems @exampleindent asis isn't necessary, but % I preserve it to make it similar to @paragraphindent. \parseargdef\exampleindent{% \def\temp{#1}% \ifx\temp\asisword \else \ifx\temp\noneword \lispnarrowing = 0pt \else \lispnarrowing = #1em \fi \fi } % @firstparagraphindent WORD % If WORD is `none', then suppress indentation of the first paragraph % after a section heading. If WORD is `insert', then do indent at such % paragraphs. % % The paragraph indentation is suppressed or not by calling % \suppressfirstparagraphindent, which the sectioning commands do. % We switch the definition of this back and forth according to WORD. % By default, we suppress indentation. % \def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent} \def\insertword{insert} % \parseargdef\firstparagraphindent{% \def\temp{#1}% \ifx\temp\noneword \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent \else\ifx\temp\insertword \let\suppressfirstparagraphindent = \relax \else \errhelp = \EMsimple \errmessage{Unknown @firstparagraphindent option `\temp'}% \fi\fi } % Here is how we actually suppress indentation. Redefine \everypar to % \kern backwards by \parindent, and then reset itself to empty. % % We also make \indent itself not actually do anything until the next % paragraph. % \gdef\dosuppressfirstparagraphindent{% \gdef\indent{% \restorefirstparagraphindent \indent }% \gdef\noindent{% \restorefirstparagraphindent \noindent }% \global\everypar = {% \kern -\parindent \restorefirstparagraphindent }% } \gdef\restorefirstparagraphindent{% \global \let \indent = \ptexindent \global \let \noindent = \ptexnoindent \global \everypar = {}% } % @asis just yields its argument. Used with @table, for example. % \def\asis#1{#1} % @math outputs its argument in math mode. % % One complication: _ usually means subscripts, but it could also mean % an actual _ character, as in @math{@var{some_variable} + 1}. So make % _ active, and distinguish by seeing if the current family is \slfam, % which is what @var uses. { \catcode`\_ = \active \gdef\mathunderscore{% \catcode`\_=\active \def_{\ifnum\fam=\slfam \_\else\sb\fi}% } } % Another complication: we want \\ (and @\) to output a \ character. % FYI, plain.tex uses \\ as a temporary control sequence (why?), but % this is not advertised and we don't care. Texinfo does not % otherwise define @\. % % The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. \def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} % \def\math{% \tex \mathunderscore \let\\ = \mathbackslash \mathactive % make the texinfo accent commands work in math mode \let\"=\ddot \let\'=\acute \let\==\bar \let\^=\hat \let\`=\grave \let\u=\breve \let\v=\check \let\~=\tilde \let\dotaccent=\dot $\finishmath } \def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. % Some active characters (such as <) are spaced differently in math. % We have to reset their definitions in case the @math was an argument % to a command which sets the catcodes (such as @item or @section). % { \catcode`^ = \active \catcode`< = \active \catcode`> = \active \catcode`+ = \active \catcode`' = \active \gdef\mathactive{% \let^ = \ptexhat \let< = \ptexless \let> = \ptexgtr \let+ = \ptexplus \let' = \ptexquoteright } } % Some math mode symbols. \def\bullet{$\ptexbullet$} \def\geq{\ifmmode \ge\else $\ge$\fi} \def\leq{\ifmmode \le\else $\le$\fi} \def\minus{\ifmmode -\else $-$\fi} % @dots{} outputs an ellipsis using the current font. % We do .5em per period so that it has the same spacing in the cm % typewriter fonts as three actual period characters; on the other hand, % in other typewriter fonts three periods are wider than 1.5em. So do % whichever is larger. % \def\dots{% \leavevmode \setbox0=\hbox{...}% get width of three periods \ifdim\wd0 > 1.5em \dimen0 = \wd0 \else \dimen0 = 1.5em \fi \hbox to \dimen0{% \hskip 0pt plus.25fil .\hskip 0pt plus1fil .\hskip 0pt plus1fil .\hskip 0pt plus.5fil }% } % @enddots{} is an end-of-sentence ellipsis. % \def\enddots{% \dots \spacefactor=\endofsentencespacefactor } % @comma{} is so commas can be inserted into text without messing up % Texinfo's parsing. % \let\comma = , % @refill is a no-op. \let\refill=\relax % If working on a large document in chapters, it is convenient to % be able to disable indexing, cross-referencing, and contents, for test runs. % This is done with @novalidate (before @setfilename). % \newif\iflinks \linkstrue % by default we want the aux files. \let\novalidate = \linksfalse % @setfilename is done at the beginning of every texinfo file. % So open here the files we need to have open while reading the input. % This makes it possible to make a .fmt file for texinfo. \def\setfilename{% \fixbackslash % Turn off hack to swallow `\input texinfo'. \iflinks \tryauxfile % Open the new aux file. TeX will close it automatically at exit. \immediate\openout\auxfile=\jobname.aux \fi % \openindices needs to do some work in any case. \openindices \let\setfilename=\comment % Ignore extra @setfilename cmds. % % If texinfo.cnf is present on the system, read it. % Useful for site-wide @afourpaper, etc. \openin 1 texinfo.cnf \ifeof 1 \else \input texinfo.cnf \fi \closein 1 % \comment % Ignore the actual filename. } % Called from \setfilename. % \def\openindices{% \newindex{cp}% \newcodeindex{fn}% \newcodeindex{vr}% \newcodeindex{tp}% \newcodeindex{ky}% \newcodeindex{pg}% } % @bye. \outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} \message{pdf,} % adobe `portable' document format \newcount\tempnum \newcount\lnkcount \newtoks\filename \newcount\filenamelength \newcount\pgn \newtoks\toksA \newtoks\toksB \newtoks\toksC \newtoks\toksD \newbox\boxA \newcount\countA \newif\ifpdf \newif\ifpdfmakepagedest % when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1 % can be set). So we test for \relax and 0 as well as \undefined, % borrowed from ifpdf.sty. \ifx\pdfoutput\undefined \else \ifx\pdfoutput\relax \else \ifcase\pdfoutput \else \pdftrue \fi \fi \fi % PDF uses PostScript string constants for the names of xref targets, % for display in the outlines, and in other places. Thus, we have to % double any backslashes. Otherwise, a name like "\node" will be % interpreted as a newline (\n), followed by o, d, e. Not good. % http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html % (and related messages, the final outcome is that it is up to the TeX % user to double the backslashes and otherwise make the string valid, so % that's what we do). % double active backslashes. % {\catcode`\@=0 \catcode`\\=\active @gdef@activebackslashdouble{% @catcode`@\=@active @let\=@doublebackslash} } % To handle parens, we must adopt a different approach, since parens are % not active characters. hyperref.dtx (which has the same problem as % us) handles it with this amazing macro to replace tokens, with minor % changes for Texinfo. It is included here under the GPL by permission % from the author, Heiko Oberdiek. % % #1 is the tokens to replace. % #2 is the replacement. % #3 is the control sequence with the string. % \def\HyPsdSubst#1#2#3{% \def\HyPsdReplace##1#1##2\END{% ##1% \ifx\\##2\\% \else #2% \HyReturnAfterFi{% \HyPsdReplace##2\END }% \fi }% \xdef#3{\expandafter\HyPsdReplace#3#1\END}% } \long\def\HyReturnAfterFi#1\fi{\fi#1} % #1 is a control sequence in which to do the replacements. \def\backslashparens#1{% \xdef#1{#1}% redefine it as its expansion; the definition is simply % \lastnode when called from \setref -> \pdfmkdest. \HyPsdSubst{(}{\realbackslash(}{#1}% \HyPsdSubst{)}{\realbackslash)}{#1}% } \newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images with PDF output, and none of those formats could be found. (.eps cannot be supported due to the design of the PDF format; use regular TeX (DVI output) for that.)} \ifpdf % % Color manipulation macros based on pdfcolor.tex, % except using rgb instead of cmyk; the latter is said to render as a % very dark gray on-screen and a very dark halftone in print, instead % of actual black. \def\rgbDarkRed{0.50 0.09 0.12} \def\rgbBlack{0 0 0} % % k sets the color for filling (usual text, etc.); % K sets the color for stroking (thin rules, e.g., normal _'s). \def\pdfsetcolor#1{\pdfliteral{#1 rg #1 RG}} % % Set color, and create a mark which defines \thiscolor accordingly, % so that \makeheadline knows which color to restore. \def\setcolor#1{% \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}% \domark \pdfsetcolor{#1}% } % \def\maincolor{\rgbBlack} \pdfsetcolor{\maincolor} \edef\thiscolor{\maincolor} \def\lastcolordefs{} % \def\makefootline{% \baselineskip24pt \line{\pdfsetcolor{\maincolor}\the\footline}% } % \def\makeheadline{% \vbox to 0pt{% \vskip-22.5pt \line{% \vbox to8.5pt{}% % Extract \thiscolor definition from the marks. \getcolormarks % Typeset the headline with \maincolor, then restore the color. \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}% }% \vss }% \nointerlineskip } % % \pdfcatalog{/PageMode /UseOutlines} % % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). \def\dopdfimage#1#2#3{% \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% % % pdftex (and the PDF format) support .png, .jpg, .pdf (among % others). Let's try in that order. \let\pdfimgext=\empty \begingroup \openin 1 #1.png \ifeof 1 \openin 1 #1.jpg \ifeof 1 \openin 1 #1.jpeg \ifeof 1 \openin 1 #1.JPG \ifeof 1 \openin 1 #1.pdf \ifeof 1 \openin 1 #1.PDF \ifeof 1 \errhelp = \nopdfimagehelp \errmessage{Could not find image file #1 for pdf}% \else \gdef\pdfimgext{PDF}% \fi \else \gdef\pdfimgext{pdf}% \fi \else \gdef\pdfimgext{JPG}% \fi \else \gdef\pdfimgext{jpeg}% \fi \else \gdef\pdfimgext{jpg}% \fi \else \gdef\pdfimgext{png}% \fi \closein 1 \endgroup % % without \immediate, ancient pdftex seg faults when the same image is % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.) \ifnum\pdftexversion < 14 \immediate\pdfimage \else \immediate\pdfximage \fi \ifdim \wd0 >0pt width \imagewidth \fi \ifdim \wd2 >0pt height \imageheight \fi \ifnum\pdftexversion<13 #1.\pdfimgext \else {#1.\pdfimgext}% \fi \ifnum\pdftexversion < 14 \else \pdfrefximage \pdflastximage \fi} % \def\pdfmkdest#1{{% % We have to set dummies so commands such as @code, and characters % such as \, aren't expanded when present in a section title. \indexnofonts \turnoffactive \activebackslashdouble \makevalueexpandable \def\pdfdestname{#1}% \backslashparens\pdfdestname \safewhatsit{\pdfdest name{\pdfdestname} xyz}% }} % % used to mark target names; must be expandable. \def\pdfmkpgn#1{#1} % % by default, use a color that is dark enough to print on paper as % nearly black, but still distinguishable for online viewing. \def\urlcolor{\rgbDarkRed} \def\linkcolor{\rgbDarkRed} \def\endlink{\setcolor{\maincolor}\pdfendlink} % % Adding outlines to PDF; macros for calculating structure of outlines % come from Petr Olsak \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% \else \csname#1\endcsname \fi} \def\advancenumber#1{\tempnum=\expnumber{#1}\relax \advance\tempnum by 1 \expandafter\xdef\csname#1\endcsname{\the\tempnum}} % % #1 is the section text, which is what will be displayed in the % outline by the pdf viewer. #2 is the pdf expression for the number % of subentries (or empty, for subsubsections). #3 is the node text, % which might be empty if this toc entry had no corresponding node. % #4 is the page number % \def\dopdfoutline#1#2#3#4{% % Generate a link to the node text if that exists; else, use the % page number. We could generate a destination for the section % text in the case where a section has no node, but it doesn't % seem worth the trouble, since most documents are normally structured. \def\pdfoutlinedest{#3}% \ifx\pdfoutlinedest\empty \def\pdfoutlinedest{#4}% \else % Doubled backslashes in the name. {\activebackslashdouble \xdef\pdfoutlinedest{#3}% \backslashparens\pdfoutlinedest}% \fi % % Also double the backslashes in the display string. {\activebackslashdouble \xdef\pdfoutlinetext{#1}% \backslashparens\pdfoutlinetext}% % \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}% } % \def\pdfmakeoutlines{% \begingroup % Thanh's hack / proper braces in bookmarks \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace % % Read toc silently, to get counts of subentries for \pdfoutline. \def\numchapentry##1##2##3##4{% \def\thischapnum{##2}% \def\thissecnum{0}% \def\thissubsecnum{0}% }% \def\numsecentry##1##2##3##4{% \advancenumber{chap\thischapnum}% \def\thissecnum{##2}% \def\thissubsecnum{0}% }% \def\numsubsecentry##1##2##3##4{% \advancenumber{sec\thissecnum}% \def\thissubsecnum{##2}% }% \def\numsubsubsecentry##1##2##3##4{% \advancenumber{subsec\thissubsecnum}% }% \def\thischapnum{0}% \def\thissecnum{0}% \def\thissubsecnum{0}% % % use \def rather than \let here because we redefine \chapentry et % al. a second time, below. \def\appentry{\numchapentry}% \def\appsecentry{\numsecentry}% \def\appsubsecentry{\numsubsecentry}% \def\appsubsubsecentry{\numsubsubsecentry}% \def\unnchapentry{\numchapentry}% \def\unnsecentry{\numsecentry}% \def\unnsubsecentry{\numsubsecentry}% \def\unnsubsubsecentry{\numsubsubsecentry}% \readdatafile{toc}% % % Read toc second time, this time actually producing the outlines. % The `-' means take the \expnumber as the absolute number of % subentries, which we calculated on our first read of the .toc above. % % We use the node names as the destinations. \def\numchapentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}% \def\numsecentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}% \def\numsubsecentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}% \def\numsubsubsecentry##1##2##3##4{% count is always zero \dopdfoutline{##1}{}{##3}{##4}}% % % PDF outlines are displayed using system fonts, instead of % document fonts. Therefore we cannot use special characters, % since the encoding is unknown. For example, the eogonek from % Latin 2 (0xea) gets translated to a | character. Info from % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100. % % xx to do this right, we have to translate 8-bit characters to % their "best" equivalent, based on the @documentencoding. Right % now, I guess we'll just let the pdf reader have its way. \indexnofonts \setupdatafile \catcode`\\=\active \otherbackslash \input \tocreadfilename \endgroup } % \def\skipspaces#1{\def\PP{#1}\def\D{|}% \ifx\PP\D\let\nextsp\relax \else\let\nextsp\skipspaces \ifx\p\space\else\addtokens{\filename}{\PP}% \advance\filenamelength by 1 \fi \fi \nextsp} \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax} \ifnum\pdftexversion < 14 \let \startlink \pdfannotlink \else \let \startlink \pdfstartlink \fi % make a live url in pdf output. \def\pdfurl#1{% \begingroup % it seems we really need yet another set of dummies; have not % tried to figure out what each command should do in the context % of @url. for now, just make @/ a no-op, that's the only one % people have actually reported a problem with. % \normalturnoffactive \def\@{@}% \let\/=\empty \makevalueexpandable % do we want to go so far as to use \indexnofonts instead of just % special-casing \var here? \def\var##1{##1}% % \leavevmode\setcolor{\urlcolor}% \startlink attr{/Border [0 0 0]}% user{/Subtype /Link /A << /S /URI /URI (#1) >>}% \endgroup} \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}} \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} \def\maketoks{% \expandafter\poptoks\the\toksA|ENDTOKS|\relax \ifx\first0\adn0 \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 \else \ifnum0=\countA\else\makelink\fi \ifx\first.\let\next=\done\else \let\next=\maketoks \addtokens{\toksB}{\the\toksD} \ifx\first,\addtokens{\toksB}{\space}\fi \fi \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \next} \def\makelink{\addtokens{\toksB}% {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} \def\pdflink#1{% \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}} \setcolor{\linkcolor}#1\endlink} \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} \else % non-pdf mode \let\pdfmkdest = \gobble \let\pdfurl = \gobble \let\endlink = \relax \let\setcolor = \gobble \let\pdfsetcolor = \gobble \let\pdfmakeoutlines = \relax \fi % \ifx\pdfoutput \message{fonts,} % Change the current font style to #1, remembering it in \curfontstyle. % For now, we do not accumulate font styles: @b{@i{foo}} prints foo in % italics, not bold italics. % \def\setfontstyle#1{% \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd. \csname ten#1\endcsname % change the current font } % Select #1 fonts with the current style. % \def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname} \def\rm{\fam=0 \setfontstyle{rm}} \def\it{\fam=\itfam \setfontstyle{it}} \def\sl{\fam=\slfam \setfontstyle{sl}} \def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf} \def\tt{\fam=\ttfam \setfontstyle{tt}} % Unfortunately, we have to override this for titles and the like, since % in those cases "rm" is bold. Sigh. \def\rmisbold{\rm\def\curfontstyle{bf}} % Texinfo sort of supports the sans serif font style, which plain TeX does not. % So we set up a \sf. \newfam\sffam \def\sf{\fam=\sffam \setfontstyle{sf}} \let\li = \sf % Sometimes we call it \li, not \sf. % We don't need math for this font style. \def\ttsl{\setfontstyle{ttsl}} % Default leading. \newdimen\textleading \textleading = 13.2pt % Set the baselineskip to #1, and the lineskip and strut size % correspondingly. There is no deep meaning behind these magic numbers % used as factors; they just match (closely enough) what Knuth defined. % \def\lineskipfactor{.08333} \def\strutheightpercent{.70833} \def\strutdepthpercent {.29167} % % can get a sort of poor man's double spacing by redefining this. \def\baselinefactor{1} % \def\setleading#1{% \dimen0 = #1\relax \normalbaselineskip = \baselinefactor\dimen0 \normallineskip = \lineskipfactor\normalbaselineskip \normalbaselines \setbox\strutbox =\hbox{% \vrule width0pt height\strutheightpercent\baselineskip depth \strutdepthpercent \baselineskip }% } % PDF CMaps. See also LaTeX's t1.cmap. % % do nothing with this by default. \expandafter\let\csname cmapOT1\endcsname\gobble \expandafter\let\csname cmapOT1IT\endcsname\gobble \expandafter\let\csname cmapOT1TT\endcsname\gobble % if we are producing pdf, and we have \pdffontattr, then define cmaps. % (\pdffontattr was introduced many years ago, but people still run % older pdftex's; it's easy to conditionalize, so we do.) \ifpdf \ifx\pdffontattr\undefined \else \begingroup \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) %%BeginResource: CMap (TeX-OT1-0) %%Title: (TeX-OT1-0 TeX OT1 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (TeX) /Ordering (OT1) /Supplement 0 >> def /CMapName /TeX-OT1-0 def /CMapType 2 def 1 begincodespacerange <00> <7F> endcodespacerange 8 beginbfrange <00> <01> <0393> <09> <0A> <03A8> <23> <26> <0023> <28> <3B> <0028> <3F> <5B> <003F> <5D> <5E> <005D> <61> <7A> <0061> <7B> <7C> <2013> endbfrange 40 beginbfchar <02> <0398> <03> <039B> <04> <039E> <05> <03A0> <06> <03A3> <07> <03D2> <08> <03A6> <0B> <00660066> <0C> <00660069> <0D> <0066006C> <0E> <006600660069> <0F> <00660066006C> <10> <0131> <11> <0237> <12> <0060> <13> <00B4> <14> <02C7> <15> <02D8> <16> <00AF> <17> <02DA> <18> <00B8> <19> <00DF> <1A> <00E6> <1B> <0153> <1C> <00F8> <1D> <00C6> <1E> <0152> <1F> <00D8> <21> <0021> <22> <201D> <27> <2019> <3C> <00A1> <3D> <003D> <3E> <00BF> <5C> <201C> <5F> <02D9> <60> <2018> <7D> <02DD> <7E> <007E> <7F> <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop end end %%EndResource %%EOF }\endgroup \expandafter\edef\csname cmapOT1\endcsname#1{% \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% }% % % \cmapOT1IT \begingroup \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) %%BeginResource: CMap (TeX-OT1IT-0) %%Title: (TeX-OT1IT-0 TeX OT1IT 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (TeX) /Ordering (OT1IT) /Supplement 0 >> def /CMapName /TeX-OT1IT-0 def /CMapType 2 def 1 begincodespacerange <00> <7F> endcodespacerange 8 beginbfrange <00> <01> <0393> <09> <0A> <03A8> <25> <26> <0025> <28> <3B> <0028> <3F> <5B> <003F> <5D> <5E> <005D> <61> <7A> <0061> <7B> <7C> <2013> endbfrange 42 beginbfchar <02> <0398> <03> <039B> <04> <039E> <05> <03A0> <06> <03A3> <07> <03D2> <08> <03A6> <0B> <00660066> <0C> <00660069> <0D> <0066006C> <0E> <006600660069> <0F> <00660066006C> <10> <0131> <11> <0237> <12> <0060> <13> <00B4> <14> <02C7> <15> <02D8> <16> <00AF> <17> <02DA> <18> <00B8> <19> <00DF> <1A> <00E6> <1B> <0153> <1C> <00F8> <1D> <00C6> <1E> <0152> <1F> <00D8> <21> <0021> <22> <201D> <23> <0023> <24> <00A3> <27> <2019> <3C> <00A1> <3D> <003D> <3E> <00BF> <5C> <201C> <5F> <02D9> <60> <2018> <7D> <02DD> <7E> <007E> <7F> <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop end end %%EndResource %%EOF }\endgroup \expandafter\edef\csname cmapOT1IT\endcsname#1{% \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% }% % % \cmapOT1TT \begingroup \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) %%BeginResource: CMap (TeX-OT1TT-0) %%Title: (TeX-OT1TT-0 TeX OT1TT 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (TeX) /Ordering (OT1TT) /Supplement 0 >> def /CMapName /TeX-OT1TT-0 def /CMapType 2 def 1 begincodespacerange <00> <7F> endcodespacerange 5 beginbfrange <00> <01> <0393> <09> <0A> <03A8> <21> <26> <0021> <28> <5F> <0028> <61> <7E> <0061> endbfrange 32 beginbfchar <02> <0398> <03> <039B> <04> <039E> <05> <03A0> <06> <03A3> <07> <03D2> <08> <03A6> <0B> <2191> <0C> <2193> <0D> <0027> <0E> <00A1> <0F> <00BF> <10> <0131> <11> <0237> <12> <0060> <13> <00B4> <14> <02C7> <15> <02D8> <16> <00AF> <17> <02DA> <18> <00B8> <19> <00DF> <1A> <00E6> <1B> <0153> <1C> <00F8> <1D> <00C6> <1E> <0152> <1F> <00D8> <20> <2423> <27> <2019> <60> <2018> <7F> <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop end end %%EndResource %%EOF }\endgroup \expandafter\edef\csname cmapOT1TT\endcsname#1{% \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% }% \fi\fi % Set the font macro #1 to the font named #2, adding on the % specified font prefix (normally `cm'). % #3 is the font's design size, #4 is a scale factor, #5 is the CMap % encoding (currently only OT1, OT1IT and OT1TT are allowed, pass % empty to omit). \def\setfont#1#2#3#4#5{% \font#1=\fontprefix#2#3 scaled #4 \csname cmap#5\endcsname#1% } % This is what gets called when #5 of \setfont is empty. \let\cmap\gobble % emacs-page end of cmaps % Use cm as the default font prefix. % To specify the font prefix, you must define \fontprefix % before you read in texinfo.tex. \ifx\fontprefix\undefined \def\fontprefix{cm} \fi % Support font families that don't use the same naming scheme as CM. \def\rmshape{r} \def\rmbshape{bx} %where the normal face is bold \def\bfshape{b} \def\bxshape{bx} \def\ttshape{tt} \def\ttbshape{tt} \def\ttslshape{sltt} \def\itshape{ti} \def\itbshape{bxti} \def\slshape{sl} \def\slbshape{bxsl} \def\sfshape{ss} \def\sfbshape{ss} \def\scshape{csc} \def\scbshape{csc} % Definitions for a main text size of 11pt. This is the default in % Texinfo. % \def\definetextfontsizexi{% % Text fonts (11.2pt, magstep1). \def\textnominalsize{11pt} \edef\mainmagstep{\magstephalf} \setfont\textrm\rmshape{10}{\mainmagstep}{OT1} \setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} \setfont\textbf\bfshape{10}{\mainmagstep}{OT1} \setfont\textit\itshape{10}{\mainmagstep}{OT1IT} \setfont\textsl\slshape{10}{\mainmagstep}{OT1} \setfont\textsf\sfshape{10}{\mainmagstep}{OT1} \setfont\textsc\scshape{10}{\mainmagstep}{OT1} \setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} \font\texti=cmmi10 scaled \mainmagstep \font\textsy=cmsy10 scaled \mainmagstep \def\textecsize{1095} % A few fonts for @defun names and args. \setfont\defbf\bfshape{10}{\magstep1}{OT1} \setfont\deftt\ttshape{10}{\magstep1}{OT1TT} \setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT} \def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf} % Fonts for indices, footnotes, small examples (9pt). \def\smallnominalsize{9pt} \setfont\smallrm\rmshape{9}{1000}{OT1} \setfont\smalltt\ttshape{9}{1000}{OT1TT} \setfont\smallbf\bfshape{10}{900}{OT1} \setfont\smallit\itshape{9}{1000}{OT1IT} \setfont\smallsl\slshape{9}{1000}{OT1} \setfont\smallsf\sfshape{9}{1000}{OT1} \setfont\smallsc\scshape{10}{900}{OT1} \setfont\smallttsl\ttslshape{10}{900}{OT1TT} \font\smalli=cmmi9 \font\smallsy=cmsy9 \def\smallecsize{0900} % Fonts for small examples (8pt). \def\smallernominalsize{8pt} \setfont\smallerrm\rmshape{8}{1000}{OT1} \setfont\smallertt\ttshape{8}{1000}{OT1TT} \setfont\smallerbf\bfshape{10}{800}{OT1} \setfont\smallerit\itshape{8}{1000}{OT1IT} \setfont\smallersl\slshape{8}{1000}{OT1} \setfont\smallersf\sfshape{8}{1000}{OT1} \setfont\smallersc\scshape{10}{800}{OT1} \setfont\smallerttsl\ttslshape{10}{800}{OT1TT} \font\smalleri=cmmi8 \font\smallersy=cmsy8 \def\smallerecsize{0800} % Fonts for title page (20.4pt): \def\titlenominalsize{20pt} \setfont\titlerm\rmbshape{12}{\magstep3}{OT1} \setfont\titleit\itbshape{10}{\magstep4}{OT1IT} \setfont\titlesl\slbshape{10}{\magstep4}{OT1} \setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} \setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} \setfont\titlesf\sfbshape{17}{\magstep1}{OT1} \let\titlebf=\titlerm \setfont\titlesc\scbshape{10}{\magstep4}{OT1} \font\titlei=cmmi12 scaled \magstep3 \font\titlesy=cmsy10 scaled \magstep4 \def\titleecsize{2074} % Chapter (and unnumbered) fonts (17.28pt). \def\chapnominalsize{17pt} \setfont\chaprm\rmbshape{12}{\magstep2}{OT1} \setfont\chapit\itbshape{10}{\magstep3}{OT1IT} \setfont\chapsl\slbshape{10}{\magstep3}{OT1} \setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT} \setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT} \setfont\chapsf\sfbshape{17}{1000}{OT1} \let\chapbf=\chaprm \setfont\chapsc\scbshape{10}{\magstep3}{OT1} \font\chapi=cmmi12 scaled \magstep2 \font\chapsy=cmsy10 scaled \magstep3 \def\chapecsize{1728} % Section fonts (14.4pt). \def\secnominalsize{14pt} \setfont\secrm\rmbshape{12}{\magstep1}{OT1} \setfont\secit\itbshape{10}{\magstep2}{OT1IT} \setfont\secsl\slbshape{10}{\magstep2}{OT1} \setfont\sectt\ttbshape{12}{\magstep1}{OT1TT} \setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT} \setfont\secsf\sfbshape{12}{\magstep1}{OT1} \let\secbf\secrm \setfont\secsc\scbshape{10}{\magstep2}{OT1} \font\seci=cmmi12 scaled \magstep1 \font\secsy=cmsy10 scaled \magstep2 \def\sececsize{1440} % Subsection fonts (13.15pt). \def\ssecnominalsize{13pt} \setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1} \setfont\ssecit\itbshape{10}{1315}{OT1IT} \setfont\ssecsl\slbshape{10}{1315}{OT1} \setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT} \setfont\ssecttsl\ttslshape{10}{1315}{OT1TT} \setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1} \let\ssecbf\ssecrm \setfont\ssecsc\scbshape{10}{1315}{OT1} \font\sseci=cmmi12 scaled \magstephalf \font\ssecsy=cmsy10 scaled 1315 \def\ssececsize{1200} % Reduced fonts for @acro in text (10pt). \def\reducednominalsize{10pt} \setfont\reducedrm\rmshape{10}{1000}{OT1} \setfont\reducedtt\ttshape{10}{1000}{OT1TT} \setfont\reducedbf\bfshape{10}{1000}{OT1} \setfont\reducedit\itshape{10}{1000}{OT1IT} \setfont\reducedsl\slshape{10}{1000}{OT1} \setfont\reducedsf\sfshape{10}{1000}{OT1} \setfont\reducedsc\scshape{10}{1000}{OT1} \setfont\reducedttsl\ttslshape{10}{1000}{OT1TT} \font\reducedi=cmmi10 \font\reducedsy=cmsy10 \def\reducedecsize{1000} % reset the current fonts \textfonts \rm } % end of 11pt text font size definitions % Definitions to make the main text be 10pt Computer Modern, with % section, chapter, etc., sizes following suit. This is for the GNU % Press printing of the Emacs 22 manual. Maybe other manuals in the % future. Used with @smallbook, which sets the leading to 12pt. % \def\definetextfontsizex{% % Text fonts (10pt). \def\textnominalsize{10pt} \edef\mainmagstep{1000} \setfont\textrm\rmshape{10}{\mainmagstep}{OT1} \setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} \setfont\textbf\bfshape{10}{\mainmagstep}{OT1} \setfont\textit\itshape{10}{\mainmagstep}{OT1IT} \setfont\textsl\slshape{10}{\mainmagstep}{OT1} \setfont\textsf\sfshape{10}{\mainmagstep}{OT1} \setfont\textsc\scshape{10}{\mainmagstep}{OT1} \setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} \font\texti=cmmi10 scaled \mainmagstep \font\textsy=cmsy10 scaled \mainmagstep \def\textecsize{1000} % A few fonts for @defun names and args. \setfont\defbf\bfshape{10}{\magstephalf}{OT1} \setfont\deftt\ttshape{10}{\magstephalf}{OT1TT} \setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT} \def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf} % Fonts for indices, footnotes, small examples (9pt). \def\smallnominalsize{9pt} \setfont\smallrm\rmshape{9}{1000}{OT1} \setfont\smalltt\ttshape{9}{1000}{OT1TT} \setfont\smallbf\bfshape{10}{900}{OT1} \setfont\smallit\itshape{9}{1000}{OT1IT} \setfont\smallsl\slshape{9}{1000}{OT1} \setfont\smallsf\sfshape{9}{1000}{OT1} \setfont\smallsc\scshape{10}{900}{OT1} \setfont\smallttsl\ttslshape{10}{900}{OT1TT} \font\smalli=cmmi9 \font\smallsy=cmsy9 \def\smallecsize{0900} % Fonts for small examples (8pt). \def\smallernominalsize{8pt} \setfont\smallerrm\rmshape{8}{1000}{OT1} \setfont\smallertt\ttshape{8}{1000}{OT1TT} \setfont\smallerbf\bfshape{10}{800}{OT1} \setfont\smallerit\itshape{8}{1000}{OT1IT} \setfont\smallersl\slshape{8}{1000}{OT1} \setfont\smallersf\sfshape{8}{1000}{OT1} \setfont\smallersc\scshape{10}{800}{OT1} \setfont\smallerttsl\ttslshape{10}{800}{OT1TT} \font\smalleri=cmmi8 \font\smallersy=cmsy8 \def\smallerecsize{0800} % Fonts for title page (20.4pt): \def\titlenominalsize{20pt} \setfont\titlerm\rmbshape{12}{\magstep3}{OT1} \setfont\titleit\itbshape{10}{\magstep4}{OT1IT} \setfont\titlesl\slbshape{10}{\magstep4}{OT1} \setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} \setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} \setfont\titlesf\sfbshape{17}{\magstep1}{OT1} \let\titlebf=\titlerm \setfont\titlesc\scbshape{10}{\magstep4}{OT1} \font\titlei=cmmi12 scaled \magstep3 \font\titlesy=cmsy10 scaled \magstep4 \def\titleecsize{2074} % Chapter fonts (14.4pt). \def\chapnominalsize{14pt} \setfont\chaprm\rmbshape{12}{\magstep1}{OT1} \setfont\chapit\itbshape{10}{\magstep2}{OT1IT} \setfont\chapsl\slbshape{10}{\magstep2}{OT1} \setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT} \setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT} \setfont\chapsf\sfbshape{12}{\magstep1}{OT1} \let\chapbf\chaprm \setfont\chapsc\scbshape{10}{\magstep2}{OT1} \font\chapi=cmmi12 scaled \magstep1 \font\chapsy=cmsy10 scaled \magstep2 \def\chapecsize{1440} % Section fonts (12pt). \def\secnominalsize{12pt} \setfont\secrm\rmbshape{12}{1000}{OT1} \setfont\secit\itbshape{10}{\magstep1}{OT1IT} \setfont\secsl\slbshape{10}{\magstep1}{OT1} \setfont\sectt\ttbshape{12}{1000}{OT1TT} \setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT} \setfont\secsf\sfbshape{12}{1000}{OT1} \let\secbf\secrm \setfont\secsc\scbshape{10}{\magstep1}{OT1} \font\seci=cmmi12 \font\secsy=cmsy10 scaled \magstep1 \def\sececsize{1200} % Subsection fonts (10pt). \def\ssecnominalsize{10pt} \setfont\ssecrm\rmbshape{10}{1000}{OT1} \setfont\ssecit\itbshape{10}{1000}{OT1IT} \setfont\ssecsl\slbshape{10}{1000}{OT1} \setfont\ssectt\ttbshape{10}{1000}{OT1TT} \setfont\ssecttsl\ttslshape{10}{1000}{OT1TT} \setfont\ssecsf\sfbshape{10}{1000}{OT1} \let\ssecbf\ssecrm \setfont\ssecsc\scbshape{10}{1000}{OT1} \font\sseci=cmmi10 \font\ssecsy=cmsy10 \def\ssececsize{1000} % Reduced fonts for @acro in text (9pt). \def\reducednominalsize{9pt} \setfont\reducedrm\rmshape{9}{1000}{OT1} \setfont\reducedtt\ttshape{9}{1000}{OT1TT} \setfont\reducedbf\bfshape{10}{900}{OT1} \setfont\reducedit\itshape{9}{1000}{OT1IT} \setfont\reducedsl\slshape{9}{1000}{OT1} \setfont\reducedsf\sfshape{9}{1000}{OT1} \setfont\reducedsc\scshape{10}{900}{OT1} \setfont\reducedttsl\ttslshape{10}{900}{OT1TT} \font\reducedi=cmmi9 \font\reducedsy=cmsy9 \def\reducedecsize{0900} % reduce space between paragraphs \divide\parskip by 2 % reset the current fonts \textfonts \rm } % end of 10pt text font size definitions % We provide the user-level command % @fonttextsize 10 % (or 11) to redefine the text font size. pt is assumed. % \def\xword{10} \def\xiword{11} % \parseargdef\fonttextsize{% \def\textsizearg{#1}% \wlog{doing @fonttextsize \textsizearg}% % % Set \globaldefs so that documents can use this inside @tex, since % makeinfo 4.8 does not support it, but we need it nonetheless. % \begingroup \globaldefs=1 \ifx\textsizearg\xword \definetextfontsizex \else \ifx\textsizearg\xiword \definetextfontsizexi \else \errhelp=\EMsimple \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'} \fi\fi \endgroup } % In order for the font changes to affect most math symbols and letters, % we have to define the \textfont of the standard families. Since % texinfo doesn't allow for producing subscripts and superscripts except % in the main text, we don't bother to reset \scriptfont and % \scriptscriptfont (which would also require loading a lot more fonts). % \def\resetmathfonts{% \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf \textfont\ttfam=\tentt \textfont\sffam=\tensf } % The font-changing commands redefine the meanings of \tenSTYLE, instead % of just \STYLE. We do this because \STYLE needs to also set the % current \fam for math mode. Our \STYLE (e.g., \rm) commands hardwire % \tenSTYLE to set the current font. % % Each font-changing command also sets the names \lsize (one size lower) % and \lllsize (three sizes lower). These relative commands are used in % the LaTeX logo and acronyms. % % This all needs generalizing, badly. % \def\textfonts{% \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl \def\curfontsize{text}% \def\lsize{reduced}\def\lllsize{smaller}% \resetmathfonts \setleading{\textleading}} \def\titlefonts{% \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy \let\tenttsl=\titlettsl \def\curfontsize{title}% \def\lsize{chap}\def\lllsize{subsec}% \resetmathfonts \setleading{25pt}} \def\titlefont#1{{\titlefonts\rmisbold #1}} \def\chapfonts{% \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy \let\tenttsl=\chapttsl \def\curfontsize{chap}% \def\lsize{sec}\def\lllsize{text}% \resetmathfonts \setleading{19pt}} \def\secfonts{% \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy \let\tenttsl=\secttsl \def\curfontsize{sec}% \def\lsize{subsec}\def\lllsize{reduced}% \resetmathfonts \setleading{16pt}} \def\subsecfonts{% \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy \let\tenttsl=\ssecttsl \def\curfontsize{ssec}% \def\lsize{text}\def\lllsize{small}% \resetmathfonts \setleading{15pt}} \let\subsubsecfonts = \subsecfonts \def\reducedfonts{% \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy \let\tenttsl=\reducedttsl \def\curfontsize{reduced}% \def\lsize{small}\def\lllsize{smaller}% \resetmathfonts \setleading{10.5pt}} \def\smallfonts{% \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy \let\tenttsl=\smallttsl \def\curfontsize{small}% \def\lsize{smaller}\def\lllsize{smaller}% \resetmathfonts \setleading{10.5pt}} \def\smallerfonts{% \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy \let\tenttsl=\smallerttsl \def\curfontsize{smaller}% \def\lsize{smaller}\def\lllsize{smaller}% \resetmathfonts \setleading{9.5pt}} % Fonts for short table of contents. \setfont\shortcontrm\rmshape{12}{1000}{OT1} \setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12 \setfont\shortcontsl\slshape{12}{1000}{OT1} \setfont\shortconttt\ttshape{12}{1000}{OT1TT} % Define these just so they can be easily changed for other fonts. \def\angleleft{$\langle$} \def\angleright{$\rangle$} % Set the fonts to use with the @small... environments. \let\smallexamplefonts = \smallfonts % About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample % can fit this many characters: % 8.5x11=86 smallbook=72 a4=90 a5=69 % If we use \scriptfonts (8pt), then we can fit this many characters: % 8.5x11=90+ smallbook=80 a4=90+ a5=77 % For me, subjectively, the few extra characters that fit aren't worth % the additional smallness of 8pt. So I'm making the default 9pt. % % By the way, for comparison, here's what fits with @example (10pt): % 8.5x11=71 smallbook=60 a4=75 a5=58 % --karl, 24jan03. % Set up the default fonts, so we can use them for creating boxes. % \definetextfontsizexi \message{markup,} % Check if we are currently using a typewriter font. Since all the % Computer Modern typewriter fonts have zero interword stretch (and % shrink), and it is reasonable to expect all typewriter fonts to have % this property, we can check that font parameter. % \def\ifmonospace{\ifdim\fontdimen3\font=0pt } % Markup style infrastructure. \defmarkupstylesetup\INITMACRO will % define and register \INITMACRO to be called on markup style changes. % \INITMACRO can check \currentmarkupstyle for the innermost % style and the set of \ifmarkupSTYLE switches for all styles % currently in effect. \newif\ifmarkupvar \newif\ifmarkupsamp \newif\ifmarkupkey %\newif\ifmarkupfile % @file == @samp. %\newif\ifmarkupoption % @option == @samp. \newif\ifmarkupcode \newif\ifmarkupkbd %\newif\ifmarkupenv % @env == @code. %\newif\ifmarkupcommand % @command == @code. \newif\ifmarkuptex % @tex (and part of @math, for now). \newif\ifmarkupexample \newif\ifmarkupverb \newif\ifmarkupverbatim \let\currentmarkupstyle\empty \def\setupmarkupstyle#1{% \csname markup#1true\endcsname \def\currentmarkupstyle{#1}% \markupstylesetup } \let\markupstylesetup\empty \def\defmarkupstylesetup#1{% \expandafter\def\expandafter\markupstylesetup \expandafter{\markupstylesetup #1}% \def#1% } % Markup style setup for left and right quotes. \defmarkupstylesetup\markupsetuplq{% \expandafter\let\expandafter \temp \csname markupsetuplq\currentmarkupstyle\endcsname \ifx\temp\relax \markupsetuplqdefault \else \temp \fi } \defmarkupstylesetup\markupsetuprq{% \expandafter\let\expandafter \temp \csname markupsetuprq\currentmarkupstyle\endcsname \ifx\temp\relax \markupsetuprqdefault \else \temp \fi } { \catcode`\'=\active \catcode`\`=\active \gdef\markupsetuplqdefault{\let`\lq} \gdef\markupsetuprqdefault{\let'\rq} \gdef\markupsetcodequoteleft{\let`\codequoteleft} \gdef\markupsetcodequoteright{\let'\codequoteright} \gdef\markupsetnoligaturesquoteleft{\let`\noligaturesquoteleft} } \let\markupsetuplqcode \markupsetcodequoteleft \let\markupsetuprqcode \markupsetcodequoteright \let\markupsetuplqexample \markupsetcodequoteleft \let\markupsetuprqexample \markupsetcodequoteright \let\markupsetuplqverb \markupsetcodequoteleft \let\markupsetuprqverb \markupsetcodequoteright \let\markupsetuplqverbatim \markupsetcodequoteleft \let\markupsetuprqverbatim \markupsetcodequoteright \let\markupsetuplqsamp \markupsetnoligaturesquoteleft \let\markupsetuplqkbd \markupsetnoligaturesquoteleft % Allow an option to not replace quotes with a regular directed right % quote/apostrophe (char 0x27), but instead use the undirected quote % from cmtt (char 0x0d). The undirected quote is ugly, so don't make it % the default, but it works for pasting with more pdf viewers (at least % evince), the lilypond developers report. xpdf does work with the % regular 0x27. % \def\codequoteright{% \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax '% \else \char'15 \fi \else \char'15 \fi } % % and a similar option for the left quote char vs. a grave accent. % Modern fonts display ASCII 0x60 as a grave accent, so some people like % the code environments to do likewise. % \def\codequoteleft{% \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax % [Knuth] pp. 380,381,391 % \relax disables Spanish ligatures ?` and !` of \tt font. \relax`% \else \char'22 \fi \else \char'22 \fi } % [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font. \def\noligaturesquoteleft{\relax\lq} % Count depth in font-changes, for error checks \newcount\fontdepth \fontdepth=0 %% Add scribe-like font environments, plus @l for inline lisp (usually sans %% serif) and @ii for TeX italic % \smartitalic{ARG} outputs arg in italics, followed by an italic correction % unless the following character is such as not to need one. \def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else \ptexslash\fi\fi\fi} \def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx} \def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx} % like \smartslanted except unconditionally uses \ttsl. % @var is set to this for defun arguments. \def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx} % @cite is like \smartslanted except unconditionally use \sl. We never want % ttsl for book titles, do we? \def\cite#1{{\sl #1}\futurelet\next\smartitalicx} \let\i=\smartitalic \let\slanted=\smartslanted \def\var#1{{\setupmarkupstyle{var}\smartslanted{#1}}} \let\dfn=\smartslanted \let\emph=\smartitalic % Explicit font changes: @r, @sc, undocumented @ii. \def\r#1{{\rm #1}} % roman font \def\sc#1{{\smallcaps#1}} % smallcaps font \def\ii#1{{\it #1}} % italic font % @b, explicit bold. Also @strong. \def\b#1{{\bf #1}} \let\strong=\b % @sansserif, explicit sans. \def\sansserif#1{{\sf #1}} % We can't just use \exhyphenpenalty, because that only has effect at % the end of a paragraph. Restore normal hyphenation at the end of the % group within which \nohyphenation is presumably called. % \def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation} \def\restorehyphenation{\hyphenchar\font = `- } % Set sfcode to normal for the chars that usually have another value. % Can't use plain's \frenchspacing because it uses the `\x notation, and % sometimes \x has an active definition that messes things up. % \catcode`@=11 \def\plainfrenchspacing{% \sfcode\dotChar =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m \def\endofsentencespacefactor{1000}% for @. and friends } \def\plainnonfrenchspacing{% \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000 \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 \def\endofsentencespacefactor{3000}% for @. and friends } \catcode`@=\other \def\endofsentencespacefactor{3000}% default % @t, explicit typewriter. \def\t#1{% {\tt \rawbackslash \plainfrenchspacing #1}% \null } % @samp. \def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}} % definition of @key that produces a lozenge. Doesn't adjust to text size. %\setfont\keyrm\rmshape{8}{1000}{OT1} %\font\keysy=cmsy9 %\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% % \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% % \vbox{\hrule\kern-0.4pt % \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% % \kern-0.4pt\hrule}% % \kern-.06em\raise0.4pt\hbox{\angleright}}}} % definition of @key with no lozenge. If the current font is already % monospace, don't change it; that way, we respect @kbdinputstyle. But % if it isn't monospace, then use \tt. % \def\key#1{{\setupmarkupstyle{key}% \nohyphenation \ifmonospace\else\tt\fi #1}\null} % ctrl is no longer a Texinfo command. \def\ctrl #1{{\tt \rawbackslash \hat}#1} % @file, @option are the same as @samp. \let\file=\samp \let\option=\samp % @code is a modification of @t, % which makes spaces the same size as normal in the surrounding text. \def\tclose#1{% {% % Change normal interword space to be same as for the current font. \spaceskip = \fontdimen2\font % % Switch to typewriter. \tt % % But `\ ' produces the large typewriter interword space. \def\ {{\spaceskip = 0pt{} }}% % % Turn off hyphenation. \nohyphenation % \rawbackslash \plainfrenchspacing #1% }% \null } % We *must* turn on hyphenation at `-' and `_' in @code. % Otherwise, it is too hard to avoid overfull hboxes % in the Emacs manual, the Library manual, etc. % Unfortunately, TeX uses one parameter (\hyphenchar) to control % both hyphenation at - and hyphenation within words. % We must therefore turn them both off (\tclose does that) % and arrange explicitly to hyphenate at a dash. % -- rms. { \catcode`\-=\active \catcode`\_=\active \catcode`\'=\active \catcode`\`=\active \global\let'=\rq \global\let`=\lq % default definitions % \global\def\code{\begingroup \setupmarkupstyle{code}% % The following should really be moved into \setupmarkupstyle handlers. \catcode\dashChar=\active \catcode\underChar=\active \ifallowcodebreaks \let-\codedash \let_\codeunder \else \let-\realdash \let_\realunder \fi \codex } } \def\realdash{-} \def\codedash{-\discretionary{}{}{}} \def\codeunder{% % this is all so @math{@code{var_name}+1} can work. In math mode, _ % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.) % will therefore expand the active definition of _, which is us % (inside @code that is), therefore an endless loop. \ifusingtt{\ifmmode \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_. \else\normalunderscore \fi \discretionary{}{}{}}% {\_}% } \def\codex #1{\tclose{#1}\endgroup} % An additional complication: the above will allow breaks after, e.g., % each of the four underscores in __typeof__. This is undesirable in % some manuals, especially if they don't have long identifiers in % general. @allowcodebreaks provides a way to control this. % \newif\ifallowcodebreaks \allowcodebreakstrue \def\keywordtrue{true} \def\keywordfalse{false} \parseargdef\allowcodebreaks{% \def\txiarg{#1}% \ifx\txiarg\keywordtrue \allowcodebreakstrue \else\ifx\txiarg\keywordfalse \allowcodebreaksfalse \else \errhelp = \EMsimple \errmessage{Unknown @allowcodebreaks option `\txiarg'}% \fi\fi } % @kbd is like @code, except that if the argument is just one @key command, % then @kbd has no effect. \def\kbd#1{{\setupmarkupstyle{kbd}\def\look{#1}\expandafter\kbdfoo\look??\par}} % @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), % `example' (@kbd uses ttsl only inside of @example and friends), % or `code' (@kbd uses normal tty font always). \parseargdef\kbdinputstyle{% \def\txiarg{#1}% \ifx\txiarg\worddistinct \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% \else\ifx\txiarg\wordexample \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% \else\ifx\txiarg\wordcode \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% \else \errhelp = \EMsimple \errmessage{Unknown @kbdinputstyle option `\txiarg'}% \fi\fi\fi } \def\worddistinct{distinct} \def\wordexample{example} \def\wordcode{code} % Default is `distinct'. \kbdinputstyle distinct \def\xkey{\key} \def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}% \ifx\one\xkey\ifx\threex\three \key{#2}% \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi} % For @indicateurl, @env, @command quotes seem unnecessary, so use \code. \let\indicateurl=\code \let\env=\code \let\command=\code % @clicksequence{File @click{} Open ...} \def\clicksequence#1{\begingroup #1\endgroup} % @clickstyle @arrow (by default) \parseargdef\clickstyle{\def\click{#1}} \def\click{\arrow} % @uref (abbreviation for `urlref') takes an optional (comma-separated) % second argument specifying the text to display and an optional third % arg as text to display instead of (rather than in addition to) the url % itself. First (mandatory) arg is the url. Perhaps eventually put in % a hypertex \special here. % \def\uref#1{\douref #1,,,\finish} \def\douref#1,#2,#3,#4\finish{\begingroup \unsepspaces \pdfurl{#1}% \setbox0 = \hbox{\ignorespaces #3}% \ifdim\wd0 > 0pt \unhbox0 % third arg given, show only that \else \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0 > 0pt \ifpdf \unhbox0 % PDF: 2nd arg given, show only it \else \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url \fi \else \code{#1}% only url given, so show it \fi \fi \endlink \endgroup} % @url synonym for @uref, since that's how everyone uses it. % \let\url=\uref % rms does not like angle brackets --karl, 17may97. % So now @email is just like @uref, unless we are pdf. % %\def\email#1{\angleleft{\tt #1}\angleright} \ifpdf \def\email#1{\doemail#1,,\finish} \def\doemail#1,#2,#3\finish{\begingroup \unsepspaces \pdfurl{mailto:#1}% \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi \endlink \endgroup} \else \let\email=\uref \fi % Typeset a dimension, e.g., `in' or `pt'. The only reason for the % argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. % \def\dmn#1{\thinspace #1} % @l was never documented to mean ``switch to the Lisp font'', % and it is not used as such in any manual I can find. We need it for % Polish suppressed-l. --karl, 22sep96. %\def\l#1{{\li #1}\null} % @acronym for "FBI", "NATO", and the like. % We print this one point size smaller, since it's intended for % all-uppercase. % \def\acronym#1{\doacronym #1,,\finish} \def\doacronym#1,#2,#3\finish{% {\selectfonts\lsize #1}% \def\temp{#2}% \ifx\temp\empty \else \space ({\unsepspaces \ignorespaces \temp \unskip})% \fi } % @abbr for "Comput. J." and the like. % No font change, but don't do end-of-sentence spacing. % \def\abbr#1{\doabbr #1,,\finish} \def\doabbr#1,#2,#3\finish{% {\plainfrenchspacing #1}% \def\temp{#2}% \ifx\temp\empty \else \space ({\unsepspaces \ignorespaces \temp \unskip})% \fi } \message{glyphs,} % @point{}, @result{}, @expansion{}, @print{}, @equiv{}. % % Since these characters are used in examples, they should be an even number of % \tt widths. Each \tt character is 1en, so two makes it 1em. % \def\point{$\star$} \def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}} \def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} \def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}} \def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} \def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}} % The @error{} command. % Adapted from the TeXbook's \boxit. % \newbox\errorbox % {\tentt \global\dimen0 = 3em}% Width of the box. \dimen2 = .55pt % Thickness of rules % The text. (`r' is open on the right, `e' somewhat less so on the left.) \setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt} % \setbox\errorbox=\hbox to \dimen0{\hfil \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. \advance\hsize by -2\dimen2 % Rules. \vbox{% \hrule height\dimen2 \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. \kern3pt\vrule width\dimen2}% Space to right. \hrule height\dimen2} \hfil} % \def\error{\leavevmode\lower.7ex\copy\errorbox} % @pounds{} is a sterling sign, which Knuth put in the CM italic font. % \def\pounds{{\it\$}} % @euro{} comes from a separate font, depending on the current style. % We use the free feym* fonts from the eurosym package by Henrik % Theiling, which support regular, slanted, bold and bold slanted (and % "outlined" (blackboard board, sort of) versions, which we don't need). % It is available from http://www.ctan.org/tex-archive/fonts/eurosym. % % Although only regular is the truly official Euro symbol, we ignore % that. The Euro is designed to be slightly taller than the regular % font height. % % feymr - regular % feymo - slanted % feybr - bold % feybo - bold slanted % % There is no good (free) typewriter version, to my knowledge. % A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide. % Hmm. % % Also doesn't work in math. Do we need to do math with euro symbols? % Hope not. % % \def\euro{{\eurofont e}} \def\eurofont{% % We set the font at each command, rather than predefining it in % \textfonts and the other font-switching commands, so that % installations which never need the symbol don't have to have the % font installed. % % There is only one designed size (nominal 10pt), so we always scale % that to the current nominal size. % % By the way, simply using "at 1em" works for cmr10 and the like, but % does not work for cmbx10 and other extended/shrunken fonts. % \def\eurosize{\csname\curfontsize nominalsize\endcsname}% % \ifx\curfontstyle\bfstylename % bold: \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize \else % regular: \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize \fi \thiseurofont } % Glyphs from the EC fonts. We don't use \let for the aliases, because % sometimes we redefine the original macro, and the alias should reflect % the redefinition. % % Use LaTeX names for the Icelandic letters. \def\DH{{\ecfont \char"D0}} % Eth \def\dh{{\ecfont \char"F0}} % eth \def\TH{{\ecfont \char"DE}} % Thorn \def\th{{\ecfont \char"FE}} % thorn % \def\guillemetleft{{\ecfont \char"13}} \def\guillemotleft{\guillemetleft} \def\guillemetright{{\ecfont \char"14}} \def\guillemotright{\guillemetright} \def\guilsinglleft{{\ecfont \char"0E}} \def\guilsinglright{{\ecfont \char"0F}} \def\quotedblbase{{\ecfont \char"12}} \def\quotesinglbase{{\ecfont \char"0D}} % % This positioning is not perfect (see the ogonek LaTeX package), but % we have the precomposed glyphs for the most common cases. We put the % tests to use those glyphs in the single \ogonek macro so we have fewer % dummy definitions to worry about for index entries, etc. % % ogonek is also used with other letters in Lithuanian (IOU), but using % the precomposed glyphs for those is not so easy since they aren't in % the same EC font. \def\ogonek#1{{% \def\temp{#1}% \ifx\temp\macrocharA\Aogonek \else\ifx\temp\macrochara\aogonek \else\ifx\temp\macrocharE\Eogonek \else\ifx\temp\macrochare\eogonek \else \ecfont \setbox0=\hbox{#1}% \ifdim\ht0=1ex\accent"0C #1% \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}% \fi \fi\fi\fi\fi }% } \def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A} \def\aogonek{{\ecfont \char"A1}}\def\macrochara{a} \def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E} \def\eogonek{{\ecfont \char"A6}}\def\macrochare{e} % % Use the ec* fonts (cm-super in outline format) for non-CM glyphs. \def\ecfont{% % We can't distinguish serif/sans and italic/slanted, but this % is used for crude hacks anyway (like adding French and German % quotes to documents typeset with CM, where we lose kerning), so % hopefully nobody will notice/care. \edef\ecsize{\csname\curfontsize ecsize\endcsname}% \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}% \ifx\curfontstyle\bfstylename % bold: \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize \else % regular: \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize \fi \thisecfont } % @registeredsymbol - R in a circle. The font for the R should really % be smaller yet, but lllsize is the best we can do for now. % Adapted from the plain.tex definition of \copyright. % \def\registeredsymbol{% $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}% \hfil\crcr\Orb}}% }$% } % @textdegree - the normal degrees sign. % \def\textdegree{$^\circ$} % Laurent Siebenmann reports \Orb undefined with: % Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38 % so we'll define it if necessary. % \ifx\Orb\undefined \def\Orb{\mathhexbox20D} \fi % Quotes. \chardef\quotedblleft="5C \chardef\quotedblright=`\" \chardef\quoteleft=`\` \chardef\quoteright=`\' \message{page headings,} \newskip\titlepagetopglue \titlepagetopglue = 1.5in \newskip\titlepagebottomglue \titlepagebottomglue = 2pc % First the title page. Must do @settitle before @titlepage. \newif\ifseenauthor \newif\iffinishedtitlepage % Do an implicit @contents or @shortcontents after @end titlepage if the % user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage. % \newif\ifsetcontentsaftertitlepage \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue \newif\ifsetshortcontentsaftertitlepage \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue \parseargdef\shorttitlepage{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}% \endgroup\page\hbox{}\page} \envdef\titlepage{% % Open one extra group, as we want to close it in the middle of \Etitlepage. \begingroup \parindent=0pt \textfonts % Leave some space at the very top of the page. \vglue\titlepagetopglue % No rule at page bottom unless we print one at the top with @title. \finishedtitlepagetrue % % Most title ``pages'' are actually two pages long, with space % at the top of the second. We don't want the ragged left on the second. \let\oldpage = \page \def\page{% \iffinishedtitlepage\else \finishtitlepage \fi \let\page = \oldpage \page \null }% } \def\Etitlepage{% \iffinishedtitlepage\else \finishtitlepage \fi % It is important to do the page break before ending the group, % because the headline and footline are only empty inside the group. % If we use the new definition of \page, we always get a blank page % after the title page, which we certainly don't want. \oldpage \endgroup % % Need this before the \...aftertitlepage checks so that if they are % in effect the toc pages will come out with page numbers. \HEADINGSon % % If they want short, they certainly want long too. \ifsetshortcontentsaftertitlepage \shortcontents \contents \global\let\shortcontents = \relax \global\let\contents = \relax \fi % \ifsetcontentsaftertitlepage \contents \global\let\contents = \relax \global\let\shortcontents = \relax \fi } \def\finishtitlepage{% \vskip4pt \hrule height 2pt width \hsize \vskip\titlepagebottomglue \finishedtitlepagetrue } %%% Macros to be used within @titlepage: \let\subtitlerm=\tenrm \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines} \parseargdef\title{% \checkenv\titlepage \leftline{\titlefonts\rmisbold #1} % print a rule at the page bottom also. \finishedtitlepagefalse \vskip4pt \hrule height 4pt width \hsize \vskip4pt } \parseargdef\subtitle{% \checkenv\titlepage {\subtitlefont \rightline{#1}}% } % @author should come last, but may come many times. % It can also be used inside @quotation. % \parseargdef\author{% \def\temp{\quotation}% \ifx\thisenv\temp \def\quotationauthor{#1}% printed in \Equotation. \else \checkenv\titlepage \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi {\secfonts\rmisbold \leftline{#1}}% \fi } %%% Set up page headings and footings. \let\thispage=\folio \newtoks\evenheadline % headline on even pages \newtoks\oddheadline % headline on odd pages \newtoks\evenfootline % footline on even pages \newtoks\oddfootline % footline on odd pages % Now make TeX use those variables \headline={{\textfonts\rm \ifodd\pageno \the\oddheadline \else \the\evenheadline \fi}} \footline={{\textfonts\rm \ifodd\pageno \the\oddfootline \else \the\evenfootline \fi}\HEADINGShook} \let\HEADINGShook=\relax % Commands to set those variables. % For example, this is what @headings on does % @evenheading @thistitle|@thispage|@thischapter % @oddheading @thischapter|@thispage|@thistitle % @evenfooting @thisfile|| % @oddfooting ||@thisfile \def\evenheading{\parsearg\evenheadingxxx} \def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish} \def\evenheadingyyy #1\|#2\|#3\|#4\finish{% \global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} \def\oddheading{\parsearg\oddheadingxxx} \def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish} \def\oddheadingyyy #1\|#2\|#3\|#4\finish{% \global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} \parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}% \def\evenfooting{\parsearg\evenfootingxxx} \def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish} \def\evenfootingyyy #1\|#2\|#3\|#4\finish{% \global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} \def\oddfooting{\parsearg\oddfootingxxx} \def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish} \def\oddfootingyyy #1\|#2\|#3\|#4\finish{% \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}% % % Leave some space for the footline. Hopefully ok to assume % @evenfooting will not be used by itself. \global\advance\pageheight by -12pt \global\advance\vsize by -12pt } \parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}} % @evenheadingmarks top \thischapter <- chapter at the top of a page % @evenheadingmarks bottom \thischapter <- chapter at the bottom of a page % % The same set of arguments for: % % @oddheadingmarks % @evenfootingmarks % @oddfootingmarks % @everyheadingmarks % @everyfootingmarks \def\evenheadingmarks{\headingmarks{even}{heading}} \def\oddheadingmarks{\headingmarks{odd}{heading}} \def\evenfootingmarks{\headingmarks{even}{footing}} \def\oddfootingmarks{\headingmarks{odd}{footing}} \def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1} \headingmarks{odd}{heading}{#1} } \def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1} \headingmarks{odd}{footing}{#1} } % #1 = even/odd, #2 = heading/footing, #3 = top/bottom. \def\headingmarks#1#2#3 {% \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname \global\expandafter\let\csname get#1#2marks\endcsname \temp } \everyheadingmarks bottom \everyfootingmarks bottom % @headings double turns headings on for double-sided printing. % @headings single turns headings on for single-sided printing. % @headings off turns them off. % @headings on same as @headings double, retained for compatibility. % @headings after turns on double-sided headings after this page. % @headings doubleafter turns on double-sided headings after this page. % @headings singleafter turns on single-sided headings after this page. % By default, they are off at the start of a document, % and turned `on' after @end titlepage. \def\headings #1 {\csname HEADINGS#1\endcsname} \def\HEADINGSoff{% \global\evenheadline={\hfil} \global\evenfootline={\hfil} \global\oddheadline={\hfil} \global\oddfootline={\hfil}} \HEADINGSoff % When we turn headings on, set the page number to 1. % For double-sided printing, put current file name in lower left corner, % chapter name on inside top of right hand pages, document % title on inside top of left hand pages, and page numbers on outside top % edge of all pages. \def\HEADINGSdouble{% \global\pageno=1 \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chapoddpage } \let\contentsalignmacro = \chappager % For single-sided printing, chapter title goes across top left of page, % page number on top right. \def\HEADINGSsingle{% \global\pageno=1 \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\thischapter\hfil\folio}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chappager } \def\HEADINGSon{\HEADINGSdouble} \def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex} \let\HEADINGSdoubleafter=\HEADINGSafter \def\HEADINGSdoublex{% \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chapoddpage } \def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} \def\HEADINGSsinglex{% \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\thischapter\hfil\folio}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chappager } % Subroutines used in generating headings % This produces Day Month Year style of output. % Only define if not already defined, in case a txi-??.tex file has set % up a different format (e.g., txi-cs.tex does this). \ifx\today\undefined \def\today{% \number\day\space \ifcase\month \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec \fi \space\number\year} \fi % @settitle line... specifies the title of the document, for headings. % It generates no output of its own. \def\thistitle{\putwordNoTitle} \def\settitle{\parsearg{\gdef\thistitle}} \message{tables,} % Tables -- @table, @ftable, @vtable, @item(x). % default indentation of table text \newdimen\tableindent \tableindent=.8in % default indentation of @itemize and @enumerate text \newdimen\itemindent \itemindent=.3in % margin between end of table item and start of table text. \newdimen\itemmargin \itemmargin=.1in % used internally for \itemindent minus \itemmargin \newdimen\itemmax % Note @table, @ftable, and @vtable define @item, @itemx, etc., with % these defs. % They also define \itemindex % to index the item name in whatever manner is desired (perhaps none). \newif\ifitemxneedsnegativevskip \def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} \def\internalBitem{\smallbreak \parsearg\itemzzz} \def\internalBitemx{\itemxpar \parsearg\itemzzz} \def\itemzzz #1{\begingroup % \advance\hsize by -\rightskip \advance\hsize by -\tableindent \setbox0=\hbox{\itemindicate{#1}}% \itemindex{#1}% \nobreak % This prevents a break before @itemx. % % If the item text does not fit in the space we have, put it on a line % by itself, and do not allow a page break either before or after that % line. We do not start a paragraph here because then if the next % command is, e.g., @kindex, the whatsit would get put into the % horizontal list on a line by itself, resulting in extra blank space. \ifdim \wd0>\itemmax % % Make this a paragraph so we get the \parskip glue and wrapping, % but leave it ragged-right. \begingroup \advance\leftskip by-\tableindent \advance\hsize by\tableindent \advance\rightskip by0pt plus1fil \leavevmode\unhbox0\par \endgroup % % We're going to be starting a paragraph, but we don't want the % \parskip glue -- logically it's part of the @item we just started. \nobreak \vskip-\parskip % % Stop a page break at the \parskip glue coming up. However, if % what follows is an environment such as @example, there will be no % \parskip glue; then the negative vskip we just inserted would % cause the example and the item to crash together. So we use this % bizarre value of 10001 as a signal to \aboveenvbreak to insert % \parskip glue after all. Section titles are handled this way also. % \penalty 10001 \endgroup \itemxneedsnegativevskipfalse \else % The item text fits into the space. Start a paragraph, so that the % following text (if any) will end up on the same line. \noindent % Do this with kerns and \unhbox so that if there is a footnote in % the item text, it can migrate to the main vertical list and % eventually be printed. \nobreak\kern-\tableindent \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0 \unhbox0 \nobreak\kern\dimen0 \endgroup \itemxneedsnegativevskiptrue \fi } \def\item{\errmessage{@item while not in a list environment}} \def\itemx{\errmessage{@itemx while not in a list environment}} % @table, @ftable, @vtable. \envdef\table{% \let\itemindex\gobble \tablecheck{table}% } \envdef\ftable{% \def\itemindex ##1{\doind {fn}{\code{##1}}}% \tablecheck{ftable}% } \envdef\vtable{% \def\itemindex ##1{\doind {vr}{\code{##1}}}% \tablecheck{vtable}% } \def\tablecheck#1{% \ifnum \the\catcode`\^^M=\active \endgroup \errmessage{This command won't work in this context; perhaps the problem is that we are \inenvironment\thisenv}% \def\next{\doignore{#1}}% \else \let\next\tablex \fi \next } \def\tablex#1{% \def\itemindicate{#1}% \parsearg\tabley } \def\tabley#1{% {% \makevalueexpandable \edef\temp{\noexpand\tablez #1\space\space\space}% \expandafter }\temp \endtablez } \def\tablez #1 #2 #3 #4\endtablez{% \aboveenvbreak \ifnum 0#1>0 \advance \leftskip by #1\mil \fi \ifnum 0#2>0 \tableindent=#2\mil \fi \ifnum 0#3>0 \advance \rightskip by #3\mil \fi \itemmax=\tableindent \advance \itemmax by -\itemmargin \advance \leftskip by \tableindent \exdentamount=\tableindent \parindent = 0pt \parskip = \smallskipamount \ifdim \parskip=0pt \parskip=2pt \fi \let\item = \internalBitem \let\itemx = \internalBitemx } \def\Etable{\endgraf\afterenvbreak} \let\Eftable\Etable \let\Evtable\Etable \let\Eitemize\Etable \let\Eenumerate\Etable % This is the counter used by @enumerate, which is really @itemize \newcount \itemno \envdef\itemize{\parsearg\doitemize} \def\doitemize#1{% \aboveenvbreak \itemmax=\itemindent \advance\itemmax by -\itemmargin \advance\leftskip by \itemindent \exdentamount=\itemindent \parindent=0pt \parskip=\smallskipamount \ifdim\parskip=0pt \parskip=2pt \fi % % Try typesetting the item mark that if the document erroneously says % something like @itemize @samp (intending @table), there's an error % right away at the @itemize. It's not the best error message in the % world, but it's better than leaving it to the @item. This means if % the user wants an empty mark, they have to say @w{} not just @w. \def\itemcontents{#1}% \setbox0 = \hbox{\itemcontents}% % % @itemize with no arg is equivalent to @itemize @bullet. \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi % \let\item=\itemizeitem } % Definition of @item while inside @itemize and @enumerate. % \def\itemizeitem{% \advance\itemno by 1 % for enumerations {\let\par=\endgraf \smallbreak}% reasonable place to break {% % If the document has an @itemize directly after a section title, a % \nobreak will be last on the list, and \sectionheading will have % done a \vskip-\parskip. In that case, we don't want to zero % parskip, or the item text will crash with the heading. On the % other hand, when there is normal text preceding the item (as there % usually is), we do want to zero parskip, or there would be too much % space. In that case, we won't have a \nobreak before. At least % that's the theory. \ifnum\lastpenalty<10000 \parskip=0in \fi \noindent \hbox to 0pt{\hss \itemcontents \kern\itemmargin}% % \vadjust{\penalty 1200}}% not good to break after first line of item. \flushcr } % \splitoff TOKENS\endmark defines \first to be the first token in % TOKENS, and \rest to be the remainder. % \def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}% % Allow an optional argument of an uppercase letter, lowercase letter, % or number, to specify the first label in the enumerated list. No % argument is the same as `1'. % \envparseargdef\enumerate{\enumeratey #1 \endenumeratey} \def\enumeratey #1 #2\endenumeratey{% % If we were given no argument, pretend we were given `1'. \def\thearg{#1}% \ifx\thearg\empty \def\thearg{1}\fi % % Detect if the argument is a single token. If so, it might be a % letter. Otherwise, the only valid thing it can be is a number. % (We will always have one token, because of the test we just made. % This is a good thing, since \splitoff doesn't work given nothing at % all -- the first parameter is undelimited.) \expandafter\splitoff\thearg\endmark \ifx\rest\empty % Only one token in the argument. It could still be anything. % A ``lowercase letter'' is one whose \lccode is nonzero. % An ``uppercase letter'' is one whose \lccode is both nonzero, and % not equal to itself. % Otherwise, we assume it's a number. % % We need the \relax at the end of the \ifnum lines to stop TeX from % continuing to look for a . % \ifnum\lccode\expandafter`\thearg=0\relax \numericenumerate % a number (we hope) \else % It's a letter. \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax \lowercaseenumerate % lowercase letter \else \uppercaseenumerate % uppercase letter \fi \fi \else % Multiple tokens in the argument. We hope it's a number. \numericenumerate \fi } % An @enumerate whose labels are integers. The starting integer is % given in \thearg. % \def\numericenumerate{% \itemno = \thearg \startenumeration{\the\itemno}% } % The starting (lowercase) letter is in \thearg. \def\lowercaseenumerate{% \itemno = \expandafter`\thearg \startenumeration{% % Be sure we're not beyond the end of the alphabet. \ifnum\itemno=0 \errmessage{No more lowercase letters in @enumerate; get a bigger alphabet}% \fi \char\lccode\itemno }% } % The starting (uppercase) letter is in \thearg. \def\uppercaseenumerate{% \itemno = \expandafter`\thearg \startenumeration{% % Be sure we're not beyond the end of the alphabet. \ifnum\itemno=0 \errmessage{No more uppercase letters in @enumerate; get a bigger alphabet} \fi \char\uccode\itemno }% } % Call \doitemize, adding a period to the first argument and supplying the % common last two arguments. Also subtract one from the initial value in % \itemno, since @item increments \itemno. % \def\startenumeration#1{% \advance\itemno by -1 \doitemize{#1.}\flushcr } % @alphaenumerate and @capsenumerate are abbreviations for giving an arg % to @enumerate. % \def\alphaenumerate{\enumerate{a}} \def\capsenumerate{\enumerate{A}} \def\Ealphaenumerate{\Eenumerate} \def\Ecapsenumerate{\Eenumerate} % @multitable macros % Amy Hendrickson, 8/18/94, 3/6/96 % % @multitable ... @end multitable will make as many columns as desired. % Contents of each column will wrap at width given in preamble. Width % can be specified either with sample text given in a template line, % or in percent of \hsize, the current width of text on page. % Table can continue over pages but will only break between lines. % To make preamble: % % Either define widths of columns in terms of percent of \hsize: % @multitable @columnfractions .25 .3 .45 % @item ... % % Numbers following @columnfractions are the percent of the total % current hsize to be used for each column. You may use as many % columns as desired. % Or use a template: % @multitable {Column 1 template} {Column 2 template} {Column 3 template} % @item ... % using the widest term desired in each column. % Each new table line starts with @item, each subsequent new column % starts with @tab. Empty columns may be produced by supplying @tab's % with nothing between them for as many times as empty columns are needed, % ie, @tab@tab@tab will produce two empty columns. % @item, @tab do not need to be on their own lines, but it will not hurt % if they are. % Sample multitable: % @multitable {Column 1 template} {Column 2 template} {Column 3 template} % @item first col stuff @tab second col stuff @tab third col % @item % first col stuff % @tab % second col stuff % @tab % third col % @item first col stuff @tab second col stuff % @tab Many paragraphs of text may be used in any column. % % They will wrap at the width determined by the template. % @item@tab@tab This will be in third column. % @end multitable % Default dimensions may be reset by user. % @multitableparskip is vertical space between paragraphs in table. % @multitableparindent is paragraph indent in table. % @multitablecolmargin is horizontal space to be left between columns. % @multitablelinespace is space to leave between table items, baseline % to baseline. % 0pt means it depends on current normal line spacing. % \newskip\multitableparskip \newskip\multitableparindent \newdimen\multitablecolspace \newskip\multitablelinespace \multitableparskip=0pt \multitableparindent=6pt \multitablecolspace=12pt \multitablelinespace=0pt % Macros used to set up halign preamble: % \let\endsetuptable\relax \def\xendsetuptable{\endsetuptable} \let\columnfractions\relax \def\xcolumnfractions{\columnfractions} \newif\ifsetpercent % #1 is the @columnfraction, usually a decimal number like .5, but might % be just 1. We just use it, whatever it is. % \def\pickupwholefraction#1 {% \global\advance\colcount by 1 \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}% \setuptable } \newcount\colcount \def\setuptable#1{% \def\firstarg{#1}% \ifx\firstarg\xendsetuptable \let\go = \relax \else \ifx\firstarg\xcolumnfractions \global\setpercenttrue \else \ifsetpercent \let\go\pickupwholefraction \else \global\advance\colcount by 1 \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a % separator; typically that is always in the input, anyway. \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% \fi \fi \ifx\go\pickupwholefraction % Put the argument back for the \pickupwholefraction call, so % we'll always have a period there to be parsed. \def\go{\pickupwholefraction#1}% \else \let\go = \setuptable \fi% \fi \go } % multitable-only commands. % % @headitem starts a heading row, which we typeset in bold. % Assignments have to be global since we are inside the implicit group % of an alignment entry. \everycr resets \everytab so we don't have to % undo it ourselves. \def\headitemfont{\b}% for people to use in the template row; not changeable \def\headitem{% \checkenv\multitable \crcr \global\everytab={\bf}% can't use \headitemfont since the parsing differs \the\everytab % for the first item }% % % A \tab used to include \hskip1sp. But then the space in a template % line is not enough. That is bad. So let's go back to just `&' until % we again encounter the problem the 1sp was intended to solve. % --karl, nathan@acm.org, 20apr99. \def\tab{\checkenv\multitable &\the\everytab}% % @multitable ... @end multitable definitions: % \newtoks\everytab % insert after every tab. % \envdef\multitable{% \vskip\parskip \startsavinginserts % % @item within a multitable starts a normal row. % We use \def instead of \let so that if one of the multitable entries % contains an @itemize, we don't choke on the \item (seen as \crcr aka % \endtemplate) expanding \doitemize. \def\item{\crcr}% % \tolerance=9500 \hbadness=9500 \setmultitablespacing \parskip=\multitableparskip \parindent=\multitableparindent \overfullrule=0pt \global\colcount=0 % \everycr = {% \noalign{% \global\everytab={}% \global\colcount=0 % Reset the column counter. % Check for saved footnotes, etc. \checkinserts % Keeps underfull box messages off when table breaks over pages. %\filbreak % Maybe so, but it also creates really weird page breaks when the % table breaks over pages. Wouldn't \vfil be better? Wait until the % problem manifests itself, so it can be fixed for real --karl. }% }% % \parsearg\domultitable } \def\domultitable#1{% % To parse everything between @multitable and @item: \setuptable#1 \endsetuptable % % This preamble sets up a generic column definition, which will % be used as many times as user calls for columns. % \vtop will set a single line and will also let text wrap and % continue for many paragraphs if desired. \halign\bgroup &% \global\advance\colcount by 1 \multistrut \vtop{% % Use the current \colcount to find the correct column width: \hsize=\expandafter\csname col\the\colcount\endcsname % % In order to keep entries from bumping into each other % we will add a \leftskip of \multitablecolspace to all columns after % the first one. % % If a template has been used, we will add \multitablecolspace % to the width of each template entry. % % If the user has set preamble in terms of percent of \hsize we will % use that dimension as the width of the column, and the \leftskip % will keep entries from bumping into each other. Table will start at % left margin and final column will justify at right margin. % % Make sure we don't inherit \rightskip from the outer environment. \rightskip=0pt \ifnum\colcount=1 % The first column will be indented with the surrounding text. \advance\hsize by\leftskip \else \ifsetpercent \else % If user has not set preamble in terms of percent of \hsize % we will advance \hsize by \multitablecolspace. \advance\hsize by \multitablecolspace \fi % In either case we will make \leftskip=\multitablecolspace: \leftskip=\multitablecolspace \fi % Ignoring space at the beginning and end avoids an occasional spurious % blank line, when TeX decides to break the line at the space before the % box from the multistrut, so the strut ends up on a line by itself. % For example: % @multitable @columnfractions .11 .89 % @item @code{#} % @tab Legal holiday which is valid in major parts of the whole country. % Is automatically provided with highlighting sequences respectively % marking characters. \noindent\ignorespaces##\unskip\multistrut }\cr } \def\Emultitable{% \crcr \egroup % end the \halign \global\setpercentfalse } \def\setmultitablespacing{% \def\multistrut{\strut}% just use the standard line spacing % % Compute \multitablelinespace (if not defined by user) for use in % \multitableparskip calculation. We used define \multistrut based on % this, but (ironically) that caused the spacing to be off. % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100. \ifdim\multitablelinespace=0pt \setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip \global\advance\multitablelinespace by-\ht0 \fi %% Test to see if parskip is larger than space between lines of %% table. If not, do nothing. %% If so, set to same dimension as multitablelinespace. \ifdim\multitableparskip>\multitablelinespace \global\multitableparskip=\multitablelinespace \global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller %% than skip between lines in the table. \fi% \ifdim\multitableparskip=0pt \global\multitableparskip=\multitablelinespace \global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller %% than skip between lines in the table. \fi} \message{conditionals,} % @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext, % @ifnotxml always succeed. They currently do nothing; we don't % attempt to check whether the conditionals are properly nested. But we % have to remember that they are conditionals, so that @end doesn't % attempt to close an environment group. % \def\makecond#1{% \expandafter\let\csname #1\endcsname = \relax \expandafter\let\csname iscond.#1\endcsname = 1 } \makecond{iftex} \makecond{ifnotdocbook} \makecond{ifnothtml} \makecond{ifnotinfo} \makecond{ifnotplaintext} \makecond{ifnotxml} % Ignore @ignore, @ifhtml, @ifinfo, and the like. % \def\direntry{\doignore{direntry}} \def\documentdescription{\doignore{documentdescription}} \def\docbook{\doignore{docbook}} \def\html{\doignore{html}} \def\ifdocbook{\doignore{ifdocbook}} \def\ifhtml{\doignore{ifhtml}} \def\ifinfo{\doignore{ifinfo}} \def\ifnottex{\doignore{ifnottex}} \def\ifplaintext{\doignore{ifplaintext}} \def\ifxml{\doignore{ifxml}} \def\ignore{\doignore{ignore}} \def\menu{\doignore{menu}} \def\xml{\doignore{xml}} % Ignore text until a line `@end #1', keeping track of nested conditionals. % % A count to remember the depth of nesting. \newcount\doignorecount \def\doignore#1{\begingroup % Scan in ``verbatim'' mode: \obeylines \catcode`\@ = \other \catcode`\{ = \other \catcode`\} = \other % % Make sure that spaces turn into tokens that match what \doignoretext wants. \spaceisspace % % Count number of #1's that we've seen. \doignorecount = 0 % % Swallow text until we reach the matching `@end #1'. \dodoignore{#1}% } { \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source. \obeylines % % \gdef\dodoignore#1{% % #1 contains the command name as a string, e.g., `ifinfo'. % % Define a command to find the next `@end #1'. \long\def\doignoretext##1^^M@end #1{% \doignoretextyyy##1^^M@#1\_STOP_}% % % And this command to find another #1 command, at the beginning of a % line. (Otherwise, we would consider a line `@c @ifset', for % example, to count as an @ifset for nesting.) \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}% % % And now expand that command. \doignoretext ^^M% }% } \def\doignoreyyy#1{% \def\temp{#1}% \ifx\temp\empty % Nothing found. \let\next\doignoretextzzz \else % Found a nested condition, ... \advance\doignorecount by 1 \let\next\doignoretextyyy % ..., look for another. % If we're here, #1 ends with ^^M\ifinfo (for example). \fi \next #1% the token \_STOP_ is present just after this macro. } % We have to swallow the remaining "\_STOP_". % \def\doignoretextzzz#1{% \ifnum\doignorecount = 0 % We have just found the outermost @end. \let\next\enddoignore \else % Still inside a nested condition. \advance\doignorecount by -1 \let\next\doignoretext % Look for the next @end. \fi \next } % Finish off ignored text. { \obeylines% % Ignore anything after the last `@end #1'; this matters in verbatim % environments, where otherwise the newline after an ignored conditional % would result in a blank line in the output. \gdef\enddoignore#1^^M{\endgroup\ignorespaces}% } % @set VAR sets the variable VAR to an empty value. % @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE. % % Since we want to separate VAR from REST-OF-LINE (which might be % empty), we can't just use \parsearg; we have to insert a space of our % own to delimit the rest of the line, and then take it out again if we % didn't need it. % We rely on the fact that \parsearg sets \catcode`\ =10. % \parseargdef\set{\setyyy#1 \endsetyyy} \def\setyyy#1 #2\endsetyyy{% {% \makevalueexpandable \def\temp{#2}% \edef\next{\gdef\makecsname{SET#1}}% \ifx\temp\empty \next{}% \else \setzzz#2\endsetzzz \fi }% } % Remove the trailing space \setxxx inserted. \def\setzzz#1 \endsetzzz{\next{#1}} % @clear VAR clears (i.e., unsets) the variable VAR. % \parseargdef\clear{% {% \makevalueexpandable \global\expandafter\let\csname SET#1\endcsname=\relax }% } % @value{foo} gets the text saved in variable foo. \def\value{\begingroup\makevalueexpandable\valuexxx} \def\valuexxx#1{\expandablevalue{#1}\endgroup} { \catcode`\- = \active \catcode`\_ = \active % \gdef\makevalueexpandable{% \let\value = \expandablevalue % We don't want these characters active, ... \catcode`\-=\other \catcode`\_=\other % ..., but we might end up with active ones in the argument if % we're called from @code, as @code{@value{foo-bar_}}, though. % So \let them to their normal equivalents. \let-\realdash \let_\normalunderscore } } % We have this subroutine so that we can handle at least some @value's % properly in indexes (we call \makevalueexpandable in \indexdummies). % The command has to be fully expandable (if the variable is set), since % the result winds up in the index file. This means that if the % variable's value contains other Texinfo commands, it's almost certain % it will fail (although perhaps we could fix that with sufficient work % to do a one-level expansion on the result, instead of complete). % \def\expandablevalue#1{% \expandafter\ifx\csname SET#1\endcsname\relax {[No value for ``#1'']}% \message{Variable `#1', used in @value, is not set.}% \else \csname SET#1\endcsname \fi } % @ifset VAR ... @end ifset reads the `...' iff VAR has been defined % with @set. % % To get special treatment of `@end ifset,' call \makeond and the redefine. % \makecond{ifset} \def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}} \def\doifset#1#2{% {% \makevalueexpandable \let\next=\empty \expandafter\ifx\csname SET#2\endcsname\relax #1% If not set, redefine \next. \fi \expandafter }\next } \def\ifsetfail{\doignore{ifset}} % @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been % defined with @set, or has been undefined with @clear. % % The `\else' inside the `\doifset' parameter is a trick to reuse the % above code: if the variable is not set, do nothing, if it is set, % then redefine \next to \ifclearfail. % \makecond{ifclear} \def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}} \def\ifclearfail{\doignore{ifclear}} % @dircategory CATEGORY -- specify a category of the dir file % which this file should belong to. Ignore this in TeX. \let\dircategory=\comment % @defininfoenclose. \let\definfoenclose=\comment \message{indexing,} % Index generation facilities % Define \newwrite to be identical to plain tex's \newwrite % except not \outer, so it can be used within macros and \if's. \edef\newwrite{\makecsname{ptexnewwrite}} % \newindex {foo} defines an index named foo. % It automatically defines \fooindex such that % \fooindex ...rest of line... puts an entry in the index foo. % It also defines \fooindfile to be the number of the output channel for % the file that accumulates this index. The file's extension is foo. % The name of an index should be no more than 2 characters long % for the sake of vms. % \def\newindex#1{% \iflinks \expandafter\newwrite \csname#1indfile\endcsname \openout \csname#1indfile\endcsname \jobname.#1 % Open the file \fi \expandafter\xdef\csname#1index\endcsname{% % Define @#1index \noexpand\doindex{#1}} } % @defindex foo == \newindex{foo} % \def\defindex{\parsearg\newindex} % Define @defcodeindex, like @defindex except put all entries in @code. % \def\defcodeindex{\parsearg\newcodeindex} % \def\newcodeindex#1{% \iflinks \expandafter\newwrite \csname#1indfile\endcsname \openout \csname#1indfile\endcsname \jobname.#1 \fi \expandafter\xdef\csname#1index\endcsname{% \noexpand\docodeindex{#1}}% } % @synindex foo bar makes index foo feed into index bar. % Do this instead of @defindex foo if you don't want it as a separate index. % % @syncodeindex foo bar similar, but put all entries made for index foo % inside @code. % \def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}} \def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}} % #1 is \doindex or \docodeindex, #2 the index getting redefined (foo), % #3 the target index (bar). \def\dosynindex#1#2#3{% % Only do \closeout if we haven't already done it, else we'll end up % closing the target index. \expandafter \ifx\csname donesynindex#2\endcsname \relax % The \closeout helps reduce unnecessary open files; the limit on the % Acorn RISC OS is a mere 16 files. \expandafter\closeout\csname#2indfile\endcsname \expandafter\let\csname donesynindex#2\endcsname = 1 \fi % redefine \fooindfile: \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname \expandafter\let\csname#2indfile\endcsname=\temp % redefine \fooindex: \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}% } % Define \doindex, the driver for all \fooindex macros. % Argument #1 is generated by the calling \fooindex macro, % and it is "foo", the name of the index. % \doindex just uses \parsearg; it calls \doind for the actual work. % This is because \doind is more useful to call from other macros. % There is also \dosubind {index}{topic}{subtopic} % which makes an entry in a two-level index such as the operation index. \def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer} \def\singleindexer #1{\doind{\indexname}{#1}} % like the previous two, but they put @code around the argument. \def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer} \def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} % Take care of Texinfo commands that can appear in an index entry. % Since there are some commands we want to expand, and others we don't, % we have to laboriously prevent expansion for those that we don't. % \def\indexdummies{% \escapechar = `\\ % use backslash in output files. \def\@{@}% change to @@ when we switch to @ as escape char in index files. \def\ {\realbackslash\space }% % % Need these in case \tex is in effect and \{ is a \delimiter again. % But can't use \lbracecmd and \rbracecmd because texindex assumes % braces and backslashes are used only as delimiters. \let\{ = \mylbrace \let\} = \myrbrace % % I don't entirely understand this, but when an index entry is % generated from a macro call, the \endinput which \scanmacro inserts % causes processing to be prematurely terminated. This is, % apparently, because \indexsorttmp is fully expanded, and \endinput % is an expandable command. The redefinition below makes \endinput % disappear altogether for that purpose -- although logging shows that % processing continues to some further point. On the other hand, it % seems \endinput does not hurt in the printed index arg, since that % is still getting written without apparent harm. % % Sample source (mac-idx3.tex, reported by Graham Percival to % help-texinfo, 22may06): % @macro funindex {WORD} % @findex xyz % @end macro % ... % @funindex commtest % % The above is not enough to reproduce the bug, but it gives the flavor. % % Sample whatsit resulting: % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}} % % So: \let\endinput = \empty % % Do the redefinitions. \commondummies } % For the aux and toc files, @ is the escape character. So we want to % redefine everything using @ as the escape character (instead of % \realbackslash, still used for index files). When everything uses @, % this will be simpler. % \def\atdummies{% \def\@{@@}% \def\ {@ }% \let\{ = \lbraceatcmd \let\} = \rbraceatcmd % % Do the redefinitions. \commondummies \otherbackslash } % Called from \indexdummies and \atdummies. % \def\commondummies{% % % \definedummyword defines \#1 as \string\#1\space, thus effectively % preventing its expansion. This is used only for control% words, % not control letters, because the \space would be incorrect for % control characters, but is needed to separate the control word % from whatever follows. % % For control letters, we have \definedummyletter, which omits the % space. % % These can be used both for control words that take an argument and % those that do not. If it is followed by {arg} in the input, then % that will dutifully get written to the index (or wherever). % \def\definedummyword ##1{\def##1{\string##1\space}}% \def\definedummyletter##1{\def##1{\string##1}}% \let\definedummyaccent\definedummyletter % \commondummiesnofonts % \definedummyletter\_% % % Non-English letters. \definedummyword\AA \definedummyword\AE \definedummyword\DH \definedummyword\L \definedummyword\O \definedummyword\OE \definedummyword\TH \definedummyword\aa \definedummyword\ae \definedummyword\dh \definedummyword\exclamdown \definedummyword\l \definedummyword\o \definedummyword\oe \definedummyword\ordf \definedummyword\ordm \definedummyword\questiondown \definedummyword\ss \definedummyword\th % % Although these internal commands shouldn't show up, sometimes they do. \definedummyword\bf \definedummyword\gtr \definedummyword\hat \definedummyword\less \definedummyword\sf \definedummyword\sl \definedummyword\tclose \definedummyword\tt % \definedummyword\LaTeX \definedummyword\TeX % % Assorted special characters. \definedummyword\bullet \definedummyword\comma \definedummyword\copyright \definedummyword\registeredsymbol \definedummyword\dots \definedummyword\enddots \definedummyword\equiv \definedummyword\error \definedummyword\euro \definedummyword\guillemetleft \definedummyword\guillemetright \definedummyword\guilsinglleft \definedummyword\guilsinglright \definedummyword\expansion \definedummyword\minus \definedummyword\ogonek \definedummyword\pounds \definedummyword\point \definedummyword\print \definedummyword\quotedblbase \definedummyword\quotedblleft \definedummyword\quotedblright \definedummyword\quoteleft \definedummyword\quoteright \definedummyword\quotesinglbase \definedummyword\result \definedummyword\textdegree % % We want to disable all macros so that they are not expanded by \write. \macrolist % \normalturnoffactive % % Handle some cases of @value -- where it does not contain any % (non-fully-expandable) commands. \makevalueexpandable } % \commondummiesnofonts: common to \commondummies and \indexnofonts. % \def\commondummiesnofonts{% % Control letters and accents. \definedummyletter\!% \definedummyaccent\"% \definedummyaccent\'% \definedummyletter\*% \definedummyaccent\,% \definedummyletter\.% \definedummyletter\/% \definedummyletter\:% \definedummyaccent\=% \definedummyletter\?% \definedummyaccent\^% \definedummyaccent\`% \definedummyaccent\~% \definedummyword\u \definedummyword\v \definedummyword\H \definedummyword\dotaccent \definedummyword\ogonek \definedummyword\ringaccent \definedummyword\tieaccent \definedummyword\ubaraccent \definedummyword\udotaccent \definedummyword\dotless % % Texinfo font commands. \definedummyword\b \definedummyword\i \definedummyword\r \definedummyword\sc \definedummyword\t % % Commands that take arguments. \definedummyword\acronym \definedummyword\cite \definedummyword\code \definedummyword\command \definedummyword\dfn \definedummyword\email \definedummyword\emph \definedummyword\env \definedummyword\file \definedummyword\kbd \definedummyword\key \definedummyword\math \definedummyword\option \definedummyword\pxref \definedummyword\ref \definedummyword\samp \definedummyword\strong \definedummyword\tie \definedummyword\uref \definedummyword\url \definedummyword\var \definedummyword\verb \definedummyword\w \definedummyword\xref } % \indexnofonts is used when outputting the strings to sort the index % by, and when constructing control sequence names. It eliminates all % control sequences and just writes whatever the best ASCII sort string % would be for a given command (usually its argument). % \def\indexnofonts{% % Accent commands should become @asis. \def\definedummyaccent##1{\let##1\asis}% % We can just ignore other control letters. \def\definedummyletter##1{\let##1\empty}% % Hopefully, all control words can become @asis. \let\definedummyword\definedummyaccent % \commondummiesnofonts % % Don't no-op \tt, since it isn't a user-level command % and is used in the definitions of the active chars like <, >, |, etc. % Likewise with the other plain tex font commands. %\let\tt=\asis % \def\ { }% \def\@{@}% % how to handle braces? \def\_{\normalunderscore}% % % Non-English letters. \def\AA{AA}% \def\AE{AE}% \def\DH{DZZ}% \def\L{L}% \def\OE{OE}% \def\O{O}% \def\TH{ZZZ}% \def\aa{aa}% \def\ae{ae}% \def\dh{dzz}% \def\exclamdown{!}% \def\l{l}% \def\oe{oe}% \def\ordf{a}% \def\ordm{o}% \def\o{o}% \def\questiondown{?}% \def\ss{ss}% \def\th{zzz}% % \def\LaTeX{LaTeX}% \def\TeX{TeX}% % % Assorted special characters. % (The following {} will end up in the sort string, but that's ok.) \def\bullet{bullet}% \def\comma{,}% \def\copyright{copyright}% \def\dots{...}% \def\enddots{...}% \def\equiv{==}% \def\error{error}% \def\euro{euro}% \def\expansion{==>}% \def\guillemetleft{<<}% \def\guillemetright{>>}% \def\guilsinglleft{<}% \def\guilsinglright{>}% \def\minus{-}% \def\point{.}% \def\pounds{pounds}% \def\print{-|}% \def\quotedblbase{"}% \def\quotedblleft{"}% \def\quotedblright{"}% \def\quoteleft{`}% \def\quoteright{'}% \def\quotesinglbase{,}% \def\registeredsymbol{R}% \def\result{=>}% \def\textdegree{o}% % % We need to get rid of all macros, leaving only the arguments (if present). % Of course this is not nearly correct, but it is the best we can do for now. % makeinfo does not expand macros in the argument to @deffn, which ends up % writing an index entry, and texindex isn't prepared for an index sort entry % that starts with \. % % Since macro invocations are followed by braces, we can just redefine them % to take a single TeX argument. The case of a macro invocation that % goes to end-of-line is not handled. % \macrolist } \let\indexbackslash=0 %overridden during \printindex. \let\SETmarginindex=\relax % put index entries in margin (undocumented)? % Most index entries go through here, but \dosubind is the general case. % #1 is the index name, #2 is the entry text. \def\doind#1#2{\dosubind{#1}{#2}{}} % Workhorse for all \fooindexes. % #1 is name of index, #2 is stuff to put there, #3 is subentry -- % empty if called from \doind, as we usually are (the main exception % is with most defuns, which call us directly). % \def\dosubind#1#2#3{% \iflinks {% % Store the main index entry text (including the third arg). \toks0 = {#2}% % If third arg is present, precede it with a space. \def\thirdarg{#3}% \ifx\thirdarg\empty \else \toks0 = \expandafter{\the\toks0 \space #3}% \fi % \edef\writeto{\csname#1indfile\endcsname}% % \safewhatsit\dosubindwrite }% \fi } % Write the entry in \toks0 to the index file: % \def\dosubindwrite{% % Put the index entry in the margin if desired. \ifx\SETmarginindex\relax\else \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}% \fi % % Remember, we are within a group. \indexdummies % Must do this here, since \bf, etc expand at this stage \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now % so it will be output as is; and it will print as backslash. % % Process the index entry with all font commands turned off, to % get the string to sort by. {\indexnofonts \edef\temp{\the\toks0}% need full expansion \xdef\indexsorttmp{\temp}% }% % % Set up the complete index entry, with both the sort key and % the original text, including any font commands. We write % three arguments to \entry to the .?? file (four in the % subentry case), texindex reduces to two when writing the .??s % sorted result. \edef\temp{% \write\writeto{% \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}% }% \temp } % Take care of unwanted page breaks/skips around a whatsit: % % If a skip is the last thing on the list now, preserve it % by backing up by \lastskip, doing the \write, then inserting % the skip again. Otherwise, the whatsit generated by the % \write or \pdfdest will make \lastskip zero. The result is that % sequences like this: % @end defun % @tindex whatever % @defun ... % will have extra space inserted, because the \medbreak in the % start of the @defun won't see the skip inserted by the @end of % the previous defun. % % But don't do any of this if we're not in vertical mode. We % don't want to do a \vskip and prematurely end a paragraph. % % Avoid page breaks due to these extra skips, too. % % But wait, there is a catch there: % We'll have to check whether \lastskip is zero skip. \ifdim is not % sufficient for this purpose, as it ignores stretch and shrink parts % of the skip. The only way seems to be to check the textual % representation of the skip. % % The following is almost like \def\zeroskipmacro{0.0pt} except that % the ``p'' and ``t'' characters have catcode \other, not 11 (letter). % \edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname} % \newskip\whatsitskip \newcount\whatsitpenalty % % ..., ready, GO: % \def\safewhatsit#1{% \ifhmode #1% \else % \lastskip and \lastpenalty cannot both be nonzero simultaneously. \whatsitskip = \lastskip \edef\lastskipmacro{\the\lastskip}% \whatsitpenalty = \lastpenalty % % If \lastskip is nonzero, that means the last item was a % skip. And since a skip is discardable, that means this % -\whatsitskip glue we're inserting is preceded by a % non-discardable item, therefore it is not a potential % breakpoint, therefore no \nobreak needed. \ifx\lastskipmacro\zeroskipmacro \else \vskip-\whatsitskip \fi % #1% % \ifx\lastskipmacro\zeroskipmacro % If \lastskip was zero, perhaps the last item was a penalty, and % perhaps it was >=10000, e.g., a \nobreak. In that case, we want % to re-insert the same penalty (values >10000 are used for various % signals); since we just inserted a non-discardable item, any % following glue (such as a \parskip) would be a breakpoint. For example: % % @deffn deffn-whatever % @vindex index-whatever % Description. % would allow a break between the index-whatever whatsit % and the "Description." paragraph. \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi \else % On the other hand, if we had a nonzero \lastskip, % this make-up glue would be preceded by a non-discardable item % (the whatsit from the \write), so we must insert a \nobreak. \nobreak\vskip\whatsitskip \fi \fi } % The index entry written in the file actually looks like % \entry {sortstring}{page}{topic} % or % \entry {sortstring}{page}{topic}{subtopic} % The texindex program reads in these files and writes files % containing these kinds of lines: % \initial {c} % before the first topic whose initial is c % \entry {topic}{pagelist} % for a topic that is used without subtopics % \primary {topic} % for the beginning of a topic that is used with subtopics % \secondary {subtopic}{pagelist} % for each subtopic. % Define the user-accessible indexing commands % @findex, @vindex, @kindex, @cindex. \def\findex {\fnindex} \def\kindex {\kyindex} \def\cindex {\cpindex} \def\vindex {\vrindex} \def\tindex {\tpindex} \def\pindex {\pgindex} \def\cindexsub {\begingroup\obeylines\cindexsub} {\obeylines % \gdef\cindexsub "#1" #2^^M{\endgroup % \dosubind{cp}{#2}{#1}}} % Define the macros used in formatting output of the sorted index material. % @printindex causes a particular index (the ??s file) to get printed. % It does not print any chapter heading (usually an @unnumbered). % \parseargdef\printindex{\begingroup \dobreak \chapheadingskip{10000}% % \smallfonts \rm \tolerance = 9500 \plainfrenchspacing \everypar = {}% don't want the \kern\-parindent from indentation suppression. % % See if the index file exists and is nonempty. % Change catcode of @ here so that if the index file contains % \initial {@} % as its first line, TeX doesn't complain about mismatched braces % (because it thinks @} is a control sequence). \catcode`\@ = 11 \openin 1 \jobname.#1s \ifeof 1 % \enddoublecolumns gets confused if there is no text in the index, % and it loses the chapter title and the aux file entries for the % index. The easiest way to prevent this problem is to make sure % there is some text. \putwordIndexNonexistent \else % % If the index file exists but is empty, then \openin leaves \ifeof % false. We have to make TeX try to read something from the file, so % it can discover if there is anything in it. \read 1 to \temp \ifeof 1 \putwordIndexIsEmpty \else % Index files are almost Texinfo source, but we use \ as the escape % character. It would be better to use @, but that's too big a change % to make right now. \def\indexbackslash{\backslashcurfont}% \catcode`\\ = 0 \escapechar = `\\ \begindoublecolumns \input \jobname.#1s \enddoublecolumns \fi \fi \closein 1 \endgroup} % These macros are used by the sorted index file itself. % Change them to control the appearance of the index. \def\initial#1{{% % Some minor font changes for the special characters. \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt % % Remove any glue we may have, we'll be inserting our own. \removelastskip % % We like breaks before the index initials, so insert a bonus. \nobreak \vskip 0pt plus 3\baselineskip \penalty 0 \vskip 0pt plus -3\baselineskip % % Typeset the initial. Making this add up to a whole number of % baselineskips increases the chance of the dots lining up from column % to column. It still won't often be perfect, because of the stretch % we need before each entry, but it's better. % % No shrink because it confuses \balancecolumns. \vskip 1.67\baselineskip plus .5\baselineskip \leftline{\secbf #1}% % Do our best not to break after the initial. \nobreak \vskip .33\baselineskip plus .1\baselineskip }} % \entry typesets a paragraph consisting of the text (#1), dot leaders, and % then page number (#2) flushed to the right margin. It is used for index % and table of contents entries. The paragraph is indented by \leftskip. % % A straightforward implementation would start like this: % \def\entry#1#2{... % But this freezes the catcodes in the argument, and can cause problems to % @code, which sets - active. This problem was fixed by a kludge--- % ``-'' was active throughout whole index, but this isn't really right. % % The right solution is to prevent \entry from swallowing the whole text. % --kasal, 21nov03 \def\entry{% \begingroup % % Start a new paragraph if necessary, so our assignments below can't % affect previous text. \par % % Do not fill out the last line with white space. \parfillskip = 0in % % No extra space above this paragraph. \parskip = 0in % % Do not prefer a separate line ending with a hyphen to fewer lines. \finalhyphendemerits = 0 % % \hangindent is only relevant when the entry text and page number % don't both fit on one line. In that case, bob suggests starting the % dots pretty far over on the line. Unfortunately, a large % indentation looks wrong when the entry text itself is broken across % lines. So we use a small indentation and put up with long leaders. % % \hangafter is reset to 1 (which is the value we want) at the start % of each paragraph, so we need not do anything with that. \hangindent = 2em % % When the entry text needs to be broken, just fill out the first line % with blank space. \rightskip = 0pt plus1fil % % A bit of stretch before each entry for the benefit of balancing % columns. \vskip 0pt plus1pt % % Swallow the left brace of the text (first parameter): \afterassignment\doentry \let\temp = } \def\doentry{% \bgroup % Instead of the swallowed brace. \noindent \aftergroup\finishentry % And now comes the text of the entry. } \def\finishentry#1{% % #1 is the page number. % % The following is kludged to not output a line of dots in the index if % there are no page numbers. The next person who breaks this will be % cursed by a Unix daemon. \setbox\boxA = \hbox{#1}% \ifdim\wd\boxA = 0pt \ % \else % % If we must, put the page number on a line of its own, and fill out % this line with blank space. (The \hfil is overwhelmed with the % fill leaders glue in \indexdotfill if the page number does fit.) \hfil\penalty50 \null\nobreak\indexdotfill % Have leaders before the page number. % % The `\ ' here is removed by the implicit \unskip that TeX does as % part of (the primitive) \par. Without it, a spurious underfull % \hbox ensues. \ifpdf \pdfgettoks#1.% \ \the\toksA \else \ #1% \fi \fi \par \endgroup } % Like plain.tex's \dotfill, except uses up at least 1 em. \def\indexdotfill{\cleaders \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill} \def\primary #1{\line{#1\hfil}} \newskip\secondaryindent \secondaryindent=0.5cm \def\secondary#1#2{{% \parfillskip=0in \parskip=0in \hangindent=1in \hangafter=1 \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill \ifpdf \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. \else #2 \fi \par }} % Define two-column mode, which we use to typeset indexes. % Adapted from the TeXbook, page 416, which is to say, % the manmac.tex format used to print the TeXbook itself. \catcode`\@=11 \newbox\partialpage \newdimen\doublecolumnhsize \def\begindoublecolumns{\begingroup % ended by \enddoublecolumns % Grab any single-column material above us. \output = {% % % Here is a possibility not foreseen in manmac: if we accumulate a % whole lot of material, we might end up calling this \output % routine twice in a row (see the doublecol-lose test, which is % essentially a couple of indexes with @setchapternewpage off). In % that case we just ship out what is in \partialpage with the normal % output routine. Generally, \partialpage will be empty when this % runs and this will be a no-op. See the indexspread.tex test case. \ifvoid\partialpage \else \onepageout{\pagecontents\partialpage}% \fi % \global\setbox\partialpage = \vbox{% % Unvbox the main output page. \unvbox\PAGE \kern-\topskip \kern\baselineskip }% }% \eject % run that output routine to set \partialpage % % Use the double-column output routine for subsequent pages. \output = {\doublecolumnout}% % % Change the page size parameters. We could do this once outside this % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 % format, but then we repeat the same computation. Repeating a couple % of assignments once per index is clearly meaningless for the % execution time, so we may as well do it in one place. % % First we halve the line length, less a little for the gutter between % the columns. We compute the gutter based on the line length, so it % changes automatically with the paper format. The magic constant % below is chosen so that the gutter has the same value (well, +-<1pt) % as it did when we hard-coded it. % % We put the result in a separate register, \doublecolumhsize, so we % can restore it in \pagesofar, after \hsize itself has (potentially) % been clobbered. % \doublecolumnhsize = \hsize \advance\doublecolumnhsize by -.04154\hsize \divide\doublecolumnhsize by 2 \hsize = \doublecolumnhsize % % Double the \vsize as well. (We don't need a separate register here, % since nobody clobbers \vsize.) \vsize = 2\vsize } % The double-column output routine for all double-column pages except % the last. % \def\doublecolumnout{% \splittopskip=\topskip \splitmaxdepth=\maxdepth % Get the available space for the double columns -- the normal % (undoubled) page height minus any material left over from the % previous page. \dimen@ = \vsize \divide\dimen@ by 2 \advance\dimen@ by -\ht\partialpage % % box0 will be the left-hand column, box2 the right. \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ \onepageout\pagesofar \unvbox255 \penalty\outputpenalty } % % Re-output the contents of the output page -- any previous material, % followed by the two boxes we just split, in box0 and box2. \def\pagesofar{% \unvbox\partialpage % \hsize = \doublecolumnhsize \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}% } % % All done with double columns. \def\enddoublecolumns{% % The following penalty ensures that the page builder is exercised % _before_ we change the output routine. This is necessary in the % following situation: % % The last section of the index consists only of a single entry. % Before this section, \pagetotal is less than \pagegoal, so no % break occurs before the last section starts. However, the last % section, consisting of \initial and the single \entry, does not % fit on the page and has to be broken off. Without the following % penalty the page builder will not be exercised until \eject % below, and by that time we'll already have changed the output % routine to the \balancecolumns version, so the next-to-last % double-column page will be processed with \balancecolumns, which % is wrong: The two columns will go to the main vertical list, with % the broken-off section in the recent contributions. As soon as % the output routine finishes, TeX starts reconsidering the page % break. The two columns and the broken-off section both fit on the % page, because the two columns now take up only half of the page % goal. When TeX sees \eject from below which follows the final % section, it invokes the new output routine that we've set after % \balancecolumns below; \onepageout will try to fit the two columns % and the final section into the vbox of \pageheight (see % \pagebody), causing an overfull box. % % Note that glue won't work here, because glue does not exercise the % page builder, unlike penalties (see The TeXbook, pp. 280-281). \penalty0 % \output = {% % Split the last of the double-column material. Leave it on the % current page, no automatic page break. \balancecolumns % % If we end up splitting too much material for the current page, % though, there will be another page break right after this \output % invocation ends. Having called \balancecolumns once, we do not % want to call it again. Therefore, reset \output to its normal % definition right away. (We hope \balancecolumns will never be % called on to balance too much material, but if it is, this makes % the output somewhat more palatable.) \global\output = {\onepageout{\pagecontents\PAGE}}% }% \eject \endgroup % started in \begindoublecolumns % % \pagegoal was set to the doubled \vsize above, since we restarted % the current page. We're now back to normal single-column % typesetting, so reset \pagegoal to the normal \vsize (after the % \endgroup where \vsize got restored). \pagegoal = \vsize } % % Called at the end of the double column material. \def\balancecolumns{% \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120. \dimen@ = \ht0 \advance\dimen@ by \topskip \advance\dimen@ by-\baselineskip \divide\dimen@ by 2 % target to split to %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}% \splittopskip = \topskip % Loop until we get a decent breakpoint. {% \vbadness = 10000 \loop \global\setbox3 = \copy0 \global\setbox1 = \vsplit3 to \dimen@ \ifdim\ht3>\dimen@ \global\advance\dimen@ by 1pt \repeat }% %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}% \setbox0=\vbox to\dimen@{\unvbox1}% \setbox2=\vbox to\dimen@{\unvbox3}% % \pagesofar } \catcode`\@ = \other \message{sectioning,} % Chapters, sections, etc. % \unnumberedno is an oxymoron, of course. But we count the unnumbered % sections so that we can refer to them unambiguously in the pdf % outlines by their "section number". We avoid collisions with chapter % numbers by starting them at 10000. (If a document ever has 10000 % chapters, we're in trouble anyway, I'm sure.) \newcount\unnumberedno \unnumberedno = 10000 \newcount\chapno \newcount\secno \secno=0 \newcount\subsecno \subsecno=0 \newcount\subsubsecno \subsubsecno=0 % This counter is funny since it counts through charcodes of letters A, B, ... \newcount\appendixno \appendixno = `\@ % % \def\appendixletter{\char\the\appendixno} % We do the following ugly conditional instead of the above simple % construct for the sake of pdftex, which needs the actual % letter in the expansion, not just typeset. % \def\appendixletter{% \ifnum\appendixno=`A A% \else\ifnum\appendixno=`B B% \else\ifnum\appendixno=`C C% \else\ifnum\appendixno=`D D% \else\ifnum\appendixno=`E E% \else\ifnum\appendixno=`F F% \else\ifnum\appendixno=`G G% \else\ifnum\appendixno=`H H% \else\ifnum\appendixno=`I I% \else\ifnum\appendixno=`J J% \else\ifnum\appendixno=`K K% \else\ifnum\appendixno=`L L% \else\ifnum\appendixno=`M M% \else\ifnum\appendixno=`N N% \else\ifnum\appendixno=`O O% \else\ifnum\appendixno=`P P% \else\ifnum\appendixno=`Q Q% \else\ifnum\appendixno=`R R% \else\ifnum\appendixno=`S S% \else\ifnum\appendixno=`T T% \else\ifnum\appendixno=`U U% \else\ifnum\appendixno=`V V% \else\ifnum\appendixno=`W W% \else\ifnum\appendixno=`X X% \else\ifnum\appendixno=`Y Y% \else\ifnum\appendixno=`Z Z% % The \the is necessary, despite appearances, because \appendixletter is % expanded while writing the .toc file. \char\appendixno is not % expandable, thus it is written literally, thus all appendixes come out % with the same letter (or @) in the toc without it. \else\char\the\appendixno \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} % Each @chapter defines these (using marks) as the number+name, number % and name of the chapter. Page headings and footings can use % these. @section does likewise. \def\thischapter{} \def\thischapternum{} \def\thischaptername{} \def\thissection{} \def\thissectionnum{} \def\thissectionname{} \newcount\absseclevel % used to calculate proper heading level \newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count % @raisesections: treat @section as chapter, @subsection as section, etc. \def\raisesections{\global\advance\secbase by -1} \let\up=\raisesections % original BFox name % @lowersections: treat @chapter as section, @section as subsection, etc. \def\lowersections{\global\advance\secbase by 1} \let\down=\lowersections % original BFox name % we only have subsub. \chardef\maxseclevel = 3 % % A numbered section within an unnumbered changes to unnumbered too. % To achive this, remember the "biggest" unnum. sec. we are currently in: \chardef\unmlevel = \maxseclevel % % Trace whether the current chapter is an appendix or not: % \chapheadtype is "N" or "A", unnumbered chapters are ignored. \def\chapheadtype{N} % Choose a heading macro % #1 is heading type % #2 is heading level % #3 is text for heading \def\genhead#1#2#3{% % Compute the abs. sec. level: \absseclevel=#2 \advance\absseclevel by \secbase % Make sure \absseclevel doesn't fall outside the range: \ifnum \absseclevel < 0 \absseclevel = 0 \else \ifnum \absseclevel > 3 \absseclevel = 3 \fi \fi % The heading type: \def\headtype{#1}% \if \headtype U% \ifnum \absseclevel < \unmlevel \chardef\unmlevel = \absseclevel \fi \else % Check for appendix sections: \ifnum \absseclevel = 0 \edef\chapheadtype{\headtype}% \else \if \headtype A\if \chapheadtype N% \errmessage{@appendix... within a non-appendix chapter}% \fi\fi \fi % Check for numbered within unnumbered: \ifnum \absseclevel > \unmlevel \def\headtype{U}% \else \chardef\unmlevel = 3 \fi \fi % Now print the heading: \if \headtype U% \ifcase\absseclevel \unnumberedzzz{#3}% \or \unnumberedseczzz{#3}% \or \unnumberedsubseczzz{#3}% \or \unnumberedsubsubseczzz{#3}% \fi \else \if \headtype A% \ifcase\absseclevel \appendixzzz{#3}% \or \appendixsectionzzz{#3}% \or \appendixsubseczzz{#3}% \or \appendixsubsubseczzz{#3}% \fi \else \ifcase\absseclevel \chapterzzz{#3}% \or \seczzz{#3}% \or \numberedsubseczzz{#3}% \or \numberedsubsubseczzz{#3}% \fi \fi \fi \suppressfirstparagraphindent } % an interface: \def\numhead{\genhead N} \def\apphead{\genhead A} \def\unnmhead{\genhead U} % @chapter, @appendix, @unnumbered. Increment top-level counter, reset % all lower-level sectioning counters to zero. % % Also set \chaplevelprefix, which we prepend to @float sequence numbers % (e.g., figures), q.v. By default (before any chapter), that is empty. \let\chaplevelprefix = \empty % \outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz \def\chapterzzz#1{% % section resetting is \global in case the chapter is in a group, such % as an @include file. \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 \global\advance\chapno by 1 % % Used for \float. \gdef\chaplevelprefix{\the\chapno.}% \resetallfloatnos % % \putwordChapter can contain complex things in translations. \toks0=\expandafter{\putwordChapter}% \message{\the\toks0 \space \the\chapno}% % % Write the actual heading. \chapmacro{#1}{Ynumbered}{\the\chapno}% % % So @section and the like are numbered underneath this chapter. \global\let\section = \numberedsec \global\let\subsection = \numberedsubsec \global\let\subsubsection = \numberedsubsubsec } \outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz % \def\appendixzzz#1{% \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 \global\advance\appendixno by 1 \gdef\chaplevelprefix{\appendixletter.}% \resetallfloatnos % % \putwordAppendix can contain complex things in translations. \toks0=\expandafter{\putwordAppendix}% \message{\the\toks0 \space \appendixletter}% % \chapmacro{#1}{Yappendix}{\appendixletter}% % \global\let\section = \appendixsec \global\let\subsection = \appendixsubsec \global\let\subsubsection = \appendixsubsubsec } \outer\parseargdef\unnumbered{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz \def\unnumberedzzz#1{% \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 \global\advance\unnumberedno by 1 % % Since an unnumbered has no number, no prefix for figures. \global\let\chaplevelprefix = \empty \resetallfloatnos % % This used to be simply \message{#1}, but TeX fully expands the % argument to \message. Therefore, if #1 contained @-commands, TeX % expanded them. For example, in `@unnumbered The @cite{Book}', TeX % expanded @cite (which turns out to cause errors because \cite is meant % to be executed, not expanded). % % Anyway, we don't want the fully-expanded definition of @cite to appear % as a result of the \message, we just want `@cite' itself. We use % \the to achieve this: TeX expands \the only once, % simply yielding the contents of . (We also do this for % the toc entries.) \toks0 = {#1}% \message{(\the\toks0)}% % \chapmacro{#1}{Ynothing}{\the\unnumberedno}% % \global\let\section = \unnumberedsec \global\let\subsection = \unnumberedsubsec \global\let\subsubsection = \unnumberedsubsubsec } % @centerchap is like @unnumbered, but the heading is centered. \outer\parseargdef\centerchap{% % Well, we could do the following in a group, but that would break % an assumption that \chapmacro is called at the outermost level. % Thus we are safer this way: --kasal, 24feb04 \let\centerparametersmaybe = \centerparameters \unnmhead0{#1}% \let\centerparametersmaybe = \relax } % @top is like @unnumbered. \let\top\unnumbered % Sections. \outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz \def\seczzz#1{% \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}% } \outer\parseargdef\appendixsection{\apphead1{#1}} % normally calls appendixsectionzzz \def\appendixsectionzzz#1{% \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}% } \let\appendixsec\appendixsection \outer\parseargdef\unnumberedsec{\unnmhead1{#1}} % normally calls unnumberedseczzz \def\unnumberedseczzz#1{% \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}% } % Subsections. \outer\parseargdef\numberedsubsec{\numhead2{#1}} % normally calls numberedsubseczzz \def\numberedsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}% } \outer\parseargdef\appendixsubsec{\apphead2{#1}} % normally calls appendixsubseczzz \def\appendixsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Yappendix}% {\appendixletter.\the\secno.\the\subsecno}% } \outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} %normally calls unnumberedsubseczzz \def\unnumberedsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Ynothing}% {\the\unnumberedno.\the\secno.\the\subsecno}% } % Subsubsections. \outer\parseargdef\numberedsubsubsec{\numhead3{#1}} % normally numberedsubsubseczzz \def\numberedsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Ynumbered}% {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}% } \outer\parseargdef\appendixsubsubsec{\apphead3{#1}} % normally appendixsubsubseczzz \def\appendixsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Yappendix}% {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}% } \outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} %normally unnumberedsubsubseczzz \def\unnumberedsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Ynothing}% {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}% } % These macros control what the section commands do, according % to what kind of chapter we are in (ordinary, appendix, or unnumbered). % Define them by default for a numbered chapter. \let\section = \numberedsec \let\subsection = \numberedsubsec \let\subsubsection = \numberedsubsubsec % Define @majorheading, @heading and @subheading % NOTE on use of \vbox for chapter headings, section headings, and such: % 1) We use \vbox rather than the earlier \line to permit % overlong headings to fold. % 2) \hyphenpenalty is set to 10000 because hyphenation in a % heading is obnoxious; this forbids it. % 3) Likewise, headings look best if no \parindent is used, and % if justification is not attempted. Hence \raggedright. \def\majorheading{% {\advance\chapheadingskip by 10pt \chapbreak }% \parsearg\chapheadingzzz } \def\chapheading{\chapbreak \parsearg\chapheadingzzz} \def\chapheadingzzz#1{% {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 \parindent=0pt\ptexraggedright \rmisbold #1\hfill}}% \bigskip \par\penalty 200\relax \suppressfirstparagraphindent } % @heading, @subheading, @subsubheading. \parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{} \suppressfirstparagraphindent} \parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{} \suppressfirstparagraphindent} \parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{} \suppressfirstparagraphindent} % These macros generate a chapter, section, etc. heading only % (including whitespace, linebreaking, etc. around it), % given all the information in convenient, parsed form. %%% Args are the skip and penalty (usually negative) \def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi} %%% Define plain chapter starts, and page on/off switching for it % Parameter controlling skip before chapter headings (if needed) \newskip\chapheadingskip \def\chapbreak{\dobreak \chapheadingskip {-4000}} \def\chappager{\par\vfill\supereject} % Because \domark is called before \chapoddpage, the filler page will % get the headings for the next chapter, which is wrong. But we don't % care -- we just disable all headings on the filler page. \def\chapoddpage{% \chappager \ifodd\pageno \else \begingroup \evenheadline={\hfil}\evenfootline={\hfil}% \oddheadline={\hfil}\oddfootline={\hfil}% \hbox to 0pt{}% \chappager \endgroup \fi } \def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname} \def\CHAPPAGoff{% \global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chapbreak \global\let\pagealignmacro=\chappager} \def\CHAPPAGon{% \global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chappager \global\let\pagealignmacro=\chappager \global\def\HEADINGSon{\HEADINGSsingle}} \def\CHAPPAGodd{% \global\let\contentsalignmacro = \chapoddpage \global\let\pchapsepmacro=\chapoddpage \global\let\pagealignmacro=\chapoddpage \global\def\HEADINGSon{\HEADINGSdouble}} \CHAPPAGon % Chapter opening. % % #1 is the text, #2 is the section type (Ynumbered, Ynothing, % Yappendix, Yomitfromtoc), #3 the chapter number. % % To test against our argument. \def\Ynothingkeyword{Ynothing} \def\Yomitfromtockeyword{Yomitfromtoc} \def\Yappendixkeyword{Yappendix} % \def\chapmacro#1#2#3{% % Insert the first mark before the heading break (see notes for \domark). \let\prevchapterdefs=\lastchapterdefs \let\prevsectiondefs=\lastsectiondefs \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}% \gdef\thissection{}}% % \def\temptype{#2}% \ifx\temptype\Ynothingkeyword \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% \gdef\thischapter{\thischaptername}}% \else\ifx\temptype\Yomitfromtockeyword \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% \gdef\thischapter{}}% \else\ifx\temptype\Yappendixkeyword \toks0={#1}% \xdef\lastchapterdefs{% \gdef\noexpand\thischaptername{\the\toks0}% \gdef\noexpand\thischapternum{\appendixletter}% % \noexpand\putwordAppendix avoids expanding indigestible % commands in some of the translations. \gdef\noexpand\thischapter{\noexpand\putwordAppendix{} \noexpand\thischapternum: \noexpand\thischaptername}% }% \else \toks0={#1}% \xdef\lastchapterdefs{% \gdef\noexpand\thischaptername{\the\toks0}% \gdef\noexpand\thischapternum{\the\chapno}% % \noexpand\putwordChapter avoids expanding indigestible % commands in some of the translations. \gdef\noexpand\thischapter{\noexpand\putwordChapter{} \noexpand\thischapternum: \noexpand\thischaptername}% }% \fi\fi\fi % % Output the mark. Pass it through \safewhatsit, to take care of % the preceding space. \safewhatsit\domark % % Insert the chapter heading break. \pchapsepmacro % % Now the second mark, after the heading break. No break points % between here and the heading. \let\prevchapterdefs=\lastchapterdefs \let\prevsectiondefs=\lastsectiondefs \domark % {% \chapfonts \rmisbold % % Have to define \lastsection before calling \donoderef, because the % xref code eventually uses it. On the other hand, it has to be called % after \pchapsepmacro, or the headline will change too soon. \gdef\lastsection{#1}% % % Only insert the separating space if we have a chapter/appendix % number, and don't print the unnumbered ``number''. \ifx\temptype\Ynothingkeyword \setbox0 = \hbox{}% \def\toctype{unnchap}% \else\ifx\temptype\Yomitfromtockeyword \setbox0 = \hbox{}% contents like unnumbered, but no toc entry \def\toctype{omit}% \else\ifx\temptype\Yappendixkeyword \setbox0 = \hbox{\putwordAppendix{} #3\enspace}% \def\toctype{app}% \else \setbox0 = \hbox{#3\enspace}% \def\toctype{numchap}% \fi\fi\fi % % Write the toc entry for this chapter. Must come before the % \donoderef, because we include the current node name in the toc % entry, and \donoderef resets it to empty. \writetocentry{\toctype}{#1}{#3}% % % For pdftex, we have to write out the node definition (aka, make % the pdfdest) after any page break, but before the actual text has % been typeset. If the destination for the pdf outline is after the % text, then jumping from the outline may wind up with the text not % being visible, for instance under high magnification. \donoderef{#2}% % % Typeset the actual heading. \nobreak % Avoid page breaks at the interline glue. \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright \hangindent=\wd0 \centerparametersmaybe \unhbox0 #1\par}% }% \nobreak\bigskip % no page break after a chapter title \nobreak } % @centerchap -- centered and unnumbered. \let\centerparametersmaybe = \relax \def\centerparameters{% \advance\rightskip by 3\rightskip \leftskip = \rightskip \parfillskip = 0pt } % I don't think this chapter style is supported any more, so I'm not % updating it with the new noderef stuff. We'll see. --karl, 11aug03. % \def\setchapterstyle #1 {\csname CHAPF#1\endcsname} % \def\unnchfopen #1{% \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 \parindent=0pt\ptexraggedright \rmisbold #1\hfill}}\bigskip \par\nobreak } \def\chfopen #1#2{\chapoddpage {\chapfonts \vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}% \par\penalty 5000 % } \def\centerchfopen #1{% \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 \parindent=0pt \hfill {\rmisbold #1}\hfill}}\bigskip \par\nobreak } \def\CHAPFopen{% \global\let\chapmacro=\chfopen \global\let\centerchapmacro=\centerchfopen} % Section titles. These macros combine the section number parts and % call the generic \sectionheading to do the printing. % \newskip\secheadingskip \def\secheadingbreak{\dobreak \secheadingskip{-1000}} % Subsection titles. \newskip\subsecheadingskip \def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}} % Subsubsection titles. \def\subsubsecheadingskip{\subsecheadingskip} \def\subsubsecheadingbreak{\subsecheadingbreak} % Print any size, any type, section title. % % #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is % the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the % section number. % \def\seckeyword{sec} % \def\sectionheading#1#2#3#4{% {% % Switch to the right set of fonts. \csname #2fonts\endcsname \rmisbold % \def\sectionlevel{#2}% \def\temptype{#3}% % % Insert first mark before the heading break (see notes for \domark). \let\prevsectiondefs=\lastsectiondefs \ifx\temptype\Ynothingkeyword \ifx\sectionlevel\seckeyword \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}% \gdef\thissection{\thissectionname}}% \fi \else\ifx\temptype\Yomitfromtockeyword % Don't redefine \thissection. \else\ifx\temptype\Yappendixkeyword \ifx\sectionlevel\seckeyword \toks0={#1}% \xdef\lastsectiondefs{% \gdef\noexpand\thissectionname{\the\toks0}% \gdef\noexpand\thissectionnum{#4}% % \noexpand\putwordSection avoids expanding indigestible % commands in some of the translations. \gdef\noexpand\thissection{\noexpand\putwordSection{} \noexpand\thissectionnum: \noexpand\thissectionname}% }% \fi \else \ifx\sectionlevel\seckeyword \toks0={#1}% \xdef\lastsectiondefs{% \gdef\noexpand\thissectionname{\the\toks0}% \gdef\noexpand\thissectionnum{#4}% % \noexpand\putwordSection avoids expanding indigestible % commands in some of the translations. \gdef\noexpand\thissection{\noexpand\putwordSection{} \noexpand\thissectionnum: \noexpand\thissectionname}% }% \fi \fi\fi\fi % % Go into vertical mode. Usually we'll already be there, but we % don't want the following whatsit to end up in a preceding paragraph % if the document didn't happen to have a blank line. \par % % Output the mark. Pass it through \safewhatsit, to take care of % the preceding space. \safewhatsit\domark % % Insert space above the heading. \csname #2headingbreak\endcsname % % Now the second mark, after the heading break. No break points % between here and the heading. \let\prevsectiondefs=\lastsectiondefs \domark % % Only insert the space after the number if we have a section number. \ifx\temptype\Ynothingkeyword \setbox0 = \hbox{}% \def\toctype{unn}% \gdef\lastsection{#1}% \else\ifx\temptype\Yomitfromtockeyword % for @headings -- no section number, don't include in toc, % and don't redefine \lastsection. \setbox0 = \hbox{}% \def\toctype{omit}% \let\sectionlevel=\empty \else\ifx\temptype\Yappendixkeyword \setbox0 = \hbox{#4\enspace}% \def\toctype{app}% \gdef\lastsection{#1}% \else \setbox0 = \hbox{#4\enspace}% \def\toctype{num}% \gdef\lastsection{#1}% \fi\fi\fi % % Write the toc entry (before \donoderef). See comments in \chapmacro. \writetocentry{\toctype\sectionlevel}{#1}{#4}% % % Write the node reference (= pdf destination for pdftex). % Again, see comments in \chapmacro. \donoderef{#3}% % % Interline glue will be inserted when the vbox is completed. % That glue will be a valid breakpoint for the page, since it'll be % preceded by a whatsit (usually from the \donoderef, or from the % \writetocentry if there was no node). We don't want to allow that % break, since then the whatsits could end up on page n while the % section is on page n+1, thus toc/etc. are wrong. Debian bug 276000. \nobreak % % Output the actual section heading. \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright \hangindent=\wd0 % zero if no section number \unhbox0 #1}% }% % Add extra space after the heading -- half of whatever came above it. % Don't allow stretch, though. \kern .5 \csname #2headingskip\endcsname % % Do not let the kern be a potential breakpoint, as it would be if it % was followed by glue. \nobreak % % We'll almost certainly start a paragraph next, so don't let that % glue accumulate. (Not a breakpoint because it's preceded by a % discardable item.) \vskip-\parskip % % This is purely so the last item on the list is a known \penalty > % 10000. This is so \startdefun can avoid allowing breakpoints after % section headings. Otherwise, it would insert a valid breakpoint between: % % @section sec-whatever % @deffn def-whatever \penalty 10001 } \message{toc,} % Table of contents. \newwrite\tocfile % Write an entry to the toc file, opening it if necessary. % Called from @chapter, etc. % % Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno} % We append the current node name (if any) and page number as additional % arguments for the \{chap,sec,...}entry macros which will eventually % read this. The node name is used in the pdf outlines as the % destination to jump to. % % We open the .toc file for writing here instead of at @setfilename (or % any other fixed time) so that @contents can be anywhere in the document. % But if #1 is `omit', then we don't do anything. This is used for the % table of contents chapter openings themselves. % \newif\iftocfileopened \def\omitkeyword{omit}% % \def\writetocentry#1#2#3{% \edef\writetoctype{#1}% \ifx\writetoctype\omitkeyword \else \iftocfileopened\else \immediate\openout\tocfile = \jobname.toc \global\tocfileopenedtrue \fi % \iflinks {\atdummies \edef\temp{% \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}% \temp }% \fi \fi % % Tell \shipout to create a pdf destination on each page, if we're % writing pdf. These are used in the table of contents. We can't % just write one on every page because the title pages are numbered % 1 and 2 (the page numbers aren't printed), and so are the first % two pages of the document. Thus, we'd have two destinations named % `1', and two named `2'. \ifpdf \global\pdfmakepagedesttrue \fi } % These characters do not print properly in the Computer Modern roman % fonts, so we must take special care. This is more or less redundant % with the Texinfo input format setup at the end of this file. % \def\activecatcodes{% \catcode`\"=\active \catcode`\$=\active \catcode`\<=\active \catcode`\>=\active \catcode`\\=\active \catcode`\^=\active \catcode`\_=\active \catcode`\|=\active \catcode`\~=\active } % Read the toc file, which is essentially Texinfo input. \def\readtocfile{% \setupdatafile \activecatcodes \input \tocreadfilename } \newskip\contentsrightmargin \contentsrightmargin=1in \newcount\savepageno \newcount\lastnegativepageno \lastnegativepageno = -1 % Prepare to read what we've written to \tocfile. % \def\startcontents#1{% % If @setchapternewpage on, and @headings double, the contents should % start on an odd page, unlike chapters. Thus, we maintain % \contentsalignmacro in parallel with \pagealignmacro. % From: Torbjorn Granlund \contentsalignmacro \immediate\closeout\tocfile % % Don't need to put `Contents' or `Short Contents' in the headline. % It is abundantly clear what they are. \chapmacro{#1}{Yomitfromtoc}{}% % \savepageno = \pageno \begingroup % Set up to handle contents files properly. \raggedbottom % Worry more about breakpoints than the bottom. \advance\hsize by -\contentsrightmargin % Don't use the full line length. % % Roman numerals for page numbers. \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi } % redefined for the two-volume lispref. We always output on % \jobname.toc even if this is redefined. % \def\tocreadfilename{\jobname.toc} % Normal (long) toc. % \def\contents{% \startcontents{\putwordTOC}% \openin 1 \tocreadfilename\space \ifeof 1 \else \readtocfile \fi \vfill \eject \contentsalignmacro % in case @setchapternewpage odd is in effect \ifeof 1 \else \pdfmakeoutlines \fi \closein 1 \endgroup \lastnegativepageno = \pageno \global\pageno = \savepageno } % And just the chapters. \def\summarycontents{% \startcontents{\putwordShortTOC}% % \let\numchapentry = \shortchapentry \let\appentry = \shortchapentry \let\unnchapentry = \shortunnchapentry % We want a true roman here for the page numbers. \secfonts \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl \let\tt=\shortconttt \rm \hyphenpenalty = 10000 \advance\baselineskip by 1pt % Open it up a little. \def\numsecentry##1##2##3##4{} \let\appsecentry = \numsecentry \let\unnsecentry = \numsecentry \let\numsubsecentry = \numsecentry \let\appsubsecentry = \numsecentry \let\unnsubsecentry = \numsecentry \let\numsubsubsecentry = \numsecentry \let\appsubsubsecentry = \numsecentry \let\unnsubsubsecentry = \numsecentry \openin 1 \tocreadfilename\space \ifeof 1 \else \readtocfile \fi \closein 1 \vfill \eject \contentsalignmacro % in case @setchapternewpage odd is in effect \endgroup \lastnegativepageno = \pageno \global\pageno = \savepageno } \let\shortcontents = \summarycontents % Typeset the label for a chapter or appendix for the short contents. % The arg is, e.g., `A' for an appendix, or `3' for a chapter. % \def\shortchaplabel#1{% % This space should be enough, since a single number is .5em, and the % widest letter (M) is 1em, at least in the Computer Modern fonts. % But use \hss just in case. % (This space doesn't include the extra space that gets added after % the label; that gets put in by \shortchapentry above.) % % We'd like to right-justify chapter numbers, but that looks strange % with appendix letters. And right-justifying numbers and % left-justifying letters looks strange when there is less than 10 % chapters. Have to read the whole toc once to know how many chapters % there are before deciding ... \hbox to 1em{#1\hss}% } % These macros generate individual entries in the table of contents. % The first argument is the chapter or section name. % The last argument is the page number. % The arguments in between are the chapter number, section number, ... % Chapters, in the main contents. \def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}} % % Chapters, in the short toc. % See comments in \dochapentry re vbox and related settings. \def\shortchapentry#1#2#3#4{% \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}% } % Appendices, in the main contents. % Need the word Appendix, and a fixed-size box. % \def\appendixbox#1{% % We use M since it's probably the widest letter. \setbox0 = \hbox{\putwordAppendix{} M}% \hbox to \wd0{\putwordAppendix{} #1\hss}} % \def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}} % Unnumbered chapters. \def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}} \def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}} % Sections. \def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}} \let\appsecentry=\numsecentry \def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}} % Subsections. \def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}} \let\appsubsecentry=\numsubsecentry \def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}} % And subsubsections. \def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}} \let\appsubsubsecentry=\numsubsubsecentry \def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}} % This parameter controls the indentation of the various levels. % Same as \defaultparindent. \newdimen\tocindent \tocindent = 15pt % Now for the actual typesetting. In all these, #1 is the text and #2 is the % page number. % % If the toc has to be broken over pages, we want it to be at chapters % if at all possible; hence the \penalty. \def\dochapentry#1#2{% \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip \begingroup \chapentryfonts \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup \nobreak\vskip .25\baselineskip plus.1\baselineskip } \def\dosecentry#1#2{\begingroup \secentryfonts \leftskip=\tocindent \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} \def\dosubsecentry#1#2{\begingroup \subsecentryfonts \leftskip=2\tocindent \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} \def\dosubsubsecentry#1#2{\begingroup \subsubsecentryfonts \leftskip=3\tocindent \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} % We use the same \entry macro as for the index entries. \let\tocentry = \entry % Space between chapter (or whatever) number and the title. \def\labelspace{\hskip1em \relax} \def\dopageno#1{{\rm #1}} \def\doshortpageno#1{{\rm #1}} \def\chapentryfonts{\secfonts \rm} \def\secentryfonts{\textfonts} \def\subsecentryfonts{\textfonts} \def\subsubsecentryfonts{\textfonts} \message{environments,} % @foo ... @end foo. % @tex ... @end tex escapes into raw Tex temporarily. % One exception: @ is still an escape character, so that @end tex works. % But \@ or @@ will get a plain tex @ character. \envdef\tex{% \setupmarkupstyle{tex}% \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie \catcode `\%=14 \catcode `\+=\other \catcode `\"=\other \catcode `\|=\other \catcode `\<=\other \catcode `\>=\other \catcode`\`=\other \catcode`\'=\other \escapechar=`\\ % \let\b=\ptexb \let\bullet=\ptexbullet \let\c=\ptexc \let\,=\ptexcomma \let\.=\ptexdot \let\dots=\ptexdots \let\equiv=\ptexequiv \let\!=\ptexexclam \let\i=\ptexi \let\indent=\ptexindent \let\noindent=\ptexnoindent \let\{=\ptexlbrace \let\+=\tabalign \let\}=\ptexrbrace \let\/=\ptexslash \let\*=\ptexstar \let\t=\ptext \expandafter \let\csname top\endcsname=\ptextop % outer \let\frenchspacing=\plainfrenchspacing % \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% \def\@{@}% } % There is no need to define \Etex. % Define @lisp ... @end lisp. % @lisp environment forms a group so it can rebind things, % including the definition of @end lisp (which normally is erroneous). % Amount to narrow the margins by for @lisp. \newskip\lispnarrowing \lispnarrowing=0.4in % This is the definition that ^^M gets inside @lisp, @example, and other % such environments. \null is better than a space, since it doesn't % have any width. \def\lisppar{\null\endgraf} % This space is always present above and below environments. \newskip\envskipamount \envskipamount = 0pt % Make spacing and below environment symmetrical. We use \parskip here % to help in doing that, since in @example-like environments \parskip % is reset to zero; thus the \afterenvbreak inserts no space -- but the % start of the next paragraph will insert \parskip. % \def\aboveenvbreak{{% % =10000 instead of <10000 because of a special case in \itemzzz and % \sectionheading, q.v. \ifnum \lastpenalty=10000 \else \advance\envskipamount by \parskip \endgraf \ifdim\lastskip<\envskipamount \removelastskip % it's not a good place to break if the last penalty was \nobreak % or better ... \ifnum\lastpenalty<10000 \penalty-50 \fi \vskip\envskipamount \fi \fi }} \let\afterenvbreak = \aboveenvbreak % \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will % also clear it, so that its embedded environments do the narrowing again. \let\nonarrowing=\relax % @cartouche ... @end cartouche: draw rectangle w/rounded corners around % environment contents. \font\circle=lcircle10 \newdimen\circthick \newdimen\cartouter\newdimen\cartinner \newskip\normbskip\newskip\normpskip\newskip\normlskip \circthick=\fontdimen8\circle % \def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth \def\ctr{{\hskip 6pt\circle\char'010}} \def\cbl{{\circle\char'012\hskip -6pt}} \def\cbr{{\hskip 6pt\circle\char'011}} \def\carttop{\hbox to \cartouter{\hskip\lskip \ctl\leaders\hrule height\circthick\hfil\ctr \hskip\rskip}} \def\cartbot{\hbox to \cartouter{\hskip\lskip \cbl\leaders\hrule height\circthick\hfil\cbr \hskip\rskip}} % \newskip\lskip\newskip\rskip \envdef\cartouche{% \ifhmode\par\fi % can't be in the midst of a paragraph. \startsavinginserts \lskip=\leftskip \rskip=\rightskip \leftskip=0pt\rightskip=0pt % we want these *outside*. \cartinner=\hsize \advance\cartinner by-\lskip \advance\cartinner by-\rskip \cartouter=\hsize \advance\cartouter by 18.4pt % allow for 3pt kerns on either % side, and for 6pt waste from % each corner char, and rule thickness \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip % Flag to tell @lisp, etc., not to narrow margin. \let\nonarrowing = t% \vbox\bgroup \baselineskip=0pt\parskip=0pt\lineskip=0pt \carttop \hbox\bgroup \hskip\lskip \vrule\kern3pt \vbox\bgroup \kern3pt \hsize=\cartinner \baselineskip=\normbskip \lineskip=\normlskip \parskip=\normpskip \vskip -\parskip \comment % For explanation, see the end of \def\group. } \def\Ecartouche{% \ifhmode\par\fi \kern3pt \egroup \kern3pt\vrule \hskip\rskip \egroup \cartbot \egroup \checkinserts } % This macro is called at the beginning of all the @example variants, % inside a group. \newdimen\nonfillparindent \def\nonfillstart{% \aboveenvbreak \hfuzz = 12pt % Don't be fussy \sepspaces % Make spaces be word-separators rather than space tokens. \let\par = \lisppar % don't ignore blank lines \obeylines % each line of input is a line of output \parskip = 0pt % Turn off paragraph indentation but redefine \indent to emulate % the normal \indent. \nonfillparindent=\parindent \parindent = 0pt \let\indent\nonfillindent % \emergencystretch = 0pt % don't try to avoid overfull boxes \ifx\nonarrowing\relax \advance \leftskip by \lispnarrowing \exdentamount=\lispnarrowing \else \let\nonarrowing = \relax \fi \let\exdent=\nofillexdent } \begingroup \obeyspaces % We want to swallow spaces (but not other tokens) after the fake % @indent in our nonfill-environments, where spaces are normally % active and set to @tie, resulting in them not being ignored after % @indent. \gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}% \gdef\nonfillindentcheck{% \ifx\temp % \expandafter\nonfillindentgobble% \else% \leavevmode\nonfillindentbox% \fi% }% \endgroup \def\nonfillindentgobble#1{\nonfillindent} \def\nonfillindentbox{\hbox to \nonfillparindent{\hss}} % If you want all examples etc. small: @set dispenvsize small. % If you want even small examples the full size: @set dispenvsize nosmall. % This affects the following displayed environments: % @example, @display, @format, @lisp % \def\smallword{small} \def\nosmallword{nosmall} \let\SETdispenvsize\relax \def\setnormaldispenv{% \ifx\SETdispenvsize\smallword % end paragraph for sake of leading, in case document has no blank % line. This is redundant with what happens in \aboveenvbreak, but % we need to do it before changing the fonts, and it's inconvenient % to change the fonts afterward. \ifnum \lastpenalty=10000 \else \endgraf \fi \smallexamplefonts \rm \fi } \def\setsmalldispenv{% \ifx\SETdispenvsize\nosmallword \else \ifnum \lastpenalty=10000 \else \endgraf \fi \smallexamplefonts \rm \fi } % We often define two environments, @foo and @smallfoo. % Let's do it by one command: \def\makedispenv #1#2{ \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2} \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2} \expandafter\let\csname E#1\endcsname \afterenvbreak \expandafter\let\csname Esmall#1\endcsname \afterenvbreak } % Define two synonyms: \def\maketwodispenvs #1#2#3{ \makedispenv{#1}{#3} \makedispenv{#2}{#3} } % @lisp: indented, narrowed, typewriter font; @example: same as @lisp. % % @smallexample and @smalllisp: use smaller fonts. % Originally contributed by Pavel@xerox. % \maketwodispenvs {lisp}{example}{% \nonfillstart \tt\setupmarkupstyle{example}% \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. \gobble % eat return } % @display/@smalldisplay: same as @lisp except keep current font. % \makedispenv {display}{% \nonfillstart \gobble } % @format/@smallformat: same as @display except don't narrow margins. % \makedispenv{format}{% \let\nonarrowing = t% \nonfillstart \gobble } % @flushleft: same as @format, but doesn't obey \SETdispenvsize. \envdef\flushleft{% \let\nonarrowing = t% \nonfillstart \gobble } \let\Eflushleft = \afterenvbreak % @flushright. % \envdef\flushright{% \let\nonarrowing = t% \nonfillstart \advance\leftskip by 0pt plus 1fill \gobble } \let\Eflushright = \afterenvbreak % @raggedright does more-or-less normal line breaking but no right % justification. From plain.tex. \envdef\raggedright{% \rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax } \let\Eraggedright\par \envdef\raggedleft{% \parindent=0pt \leftskip0pt plus2em \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt \hbadness=10000 % Last line will usually be underfull, so turn off % badness reporting. } \let\Eraggedleft\par \envdef\raggedcenter{% \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt \hbadness=10000 % Last line will usually be underfull, so turn off % badness reporting. } \let\Eraggedcenter\par % @quotation does normal linebreaking (hence we can't use \nonfillstart) % and narrows the margins. We keep \parskip nonzero in general, since % we're doing normal filling. So, when using \aboveenvbreak and % \afterenvbreak, temporarily make \parskip 0. % \def\quotationstart{% {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip \parindent=0pt % % @cartouche defines \nonarrowing to inhibit narrowing at next level down. \ifx\nonarrowing\relax \advance\leftskip by \lispnarrowing \advance\rightskip by \lispnarrowing \exdentamount = \lispnarrowing \else \let\nonarrowing = \relax \fi \parsearg\quotationlabel } \envdef\quotation{% \setnormaldispenv \quotationstart } \envdef\smallquotation{% \setsmalldispenv \quotationstart } \let\Esmallquotation = \Equotation % We have retained a nonzero parskip for the environment, since we're % doing normal filling. % \def\Equotation{% \par \ifx\quotationauthor\undefined\else % indent a bit. \leftline{\kern 2\leftskip \sl ---\quotationauthor}% \fi {\parskip=0pt \afterenvbreak}% } % If we're given an argument, typeset it in bold with a colon after. \def\quotationlabel#1{% \def\temp{#1}% \ifx\temp\empty \else {\bf #1: }% \fi } % LaTeX-like @verbatim...@end verbatim and @verb{...} % If we want to allow any as delimiter, % we need the curly braces so that makeinfo sees the @verb command, eg: % `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org % % [Knuth]: Donald Ervin Knuth, 1996. The TeXbook. % % [Knuth] p.344; only we need to do the other characters Texinfo sets % active too. Otherwise, they get lost as the first character on a % verbatim line. \def\dospecials{% \do\ \do\\\do\{\do\}\do\$\do\&% \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~% \do\<\do\>\do\|\do\@\do+\do\"% % Don't do the quotes -- if we do, @set txicodequoteundirected and % @set txicodequotebacktick will not have effect on @verb and % @verbatim, and ?` and !` ligatures won't get disabled. %\do\`\do\'% } % % [Knuth] p. 380 \def\uncatcodespecials{% \def\do##1{\catcode`##1=\other}\dospecials} % % Setup for the @verb command. % % Eight spaces for a tab \begingroup \catcode`\^^I=\active \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }} \endgroup % \def\setupverb{% \tt % easiest (and conventionally used) font for verbatim \def\par{\leavevmode\endgraf}% \setupmarkupstyle{verb}% \tabeightspaces % Respect line breaks, % print special symbols as themselves, and % make each space count % must do in this order: \obeylines \uncatcodespecials \sepspaces } % Setup for the @verbatim environment % % Real tab expansion \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount % \def\starttabbox{\setbox0=\hbox\bgroup} % \begingroup \catcode`\^^I=\active \gdef\tabexpand{% \catcode`\^^I=\active \def^^I{\leavevmode\egroup \dimen0=\wd0 % the width so far, or since the previous tab \divide\dimen0 by\tabw \multiply\dimen0 by\tabw % compute previous multiple of \tabw \advance\dimen0 by\tabw % advance to next multiple of \tabw \wd0=\dimen0 \box0 \starttabbox }% } \endgroup % start the verbatim environment. \def\setupverbatim{% \let\nonarrowing = t% \nonfillstart % Easiest (and conventionally used) font for verbatim \tt \def\par{\leavevmode\egroup\box0\endgraf}% \tabexpand \setupmarkupstyle{verbatim}% % Respect line breaks, % print special symbols as themselves, and % make each space count % must do in this order: \obeylines \uncatcodespecials \sepspaces \everypar{\starttabbox}% } % Do the @verb magic: verbatim text is quoted by unique % delimiter characters. Before first delimiter expect a % right brace, after last delimiter expect closing brace: % % \def\doverb'{'#1'}'{#1} % % [Knuth] p. 382; only eat outer {} \begingroup \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next] \endgroup % \def\verb{\begingroup\setupverb\doverb} % % % Do the @verbatim magic: define the macro \doverbatim so that % the (first) argument ends when '@end verbatim' is reached, ie: % % \def\doverbatim#1@end verbatim{#1} % % For Texinfo it's a lot easier than for LaTeX, % because texinfo's \verbatim doesn't stop at '\end{verbatim}': % we need not redefine '\', '{' and '}'. % % Inspired by LaTeX's verbatim command set [latex.ltx] % \begingroup \catcode`\ =\active \obeylines % % ignore everything up to the first ^^M, that's the newline at the end % of the @verbatim input line itself. Otherwise we get an extra blank % line in the output. \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}% % We really want {...\end verbatim} in the body of the macro, but % without the active space; thus we have to use \xdef and \gobble. \endgroup % \envdef\verbatim{% \setupverbatim\doverbatim } \let\Everbatim = \afterenvbreak % @verbatiminclude FILE - insert text of file in verbatim environment. % \def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude} % \def\doverbatiminclude#1{% {% \makevalueexpandable \setupverbatim \indexnofonts % Allow `@@' and other weird things in file names. \input #1 \afterenvbreak }% } % @copying ... @end copying. % Save the text away for @insertcopying later. % % We save the uninterpreted tokens, rather than creating a box. % Saving the text in a box would be much easier, but then all the % typesetting commands (@smallbook, font changes, etc.) have to be done % beforehand -- and a) we want @copying to be done first in the source % file; b) letting users define the frontmatter in as flexible order as % possible is very desirable. % \def\copying{\checkenv{}\begingroup\scanargctxt\docopying} \def\docopying#1@end copying{\endgroup\def\copyingtext{#1}} % \def\insertcopying{% \begingroup \parindent = 0pt % paragraph indentation looks wrong on title page \scanexp\copyingtext \endgroup } \message{defuns,} % @defun etc. \newskip\defbodyindent \defbodyindent=.4in \newskip\defargsindent \defargsindent=50pt \newskip\deflastargmargin \deflastargmargin=18pt \newcount\defunpenalty % Start the processing of @deffn: \def\startdefun{% \ifnum\lastpenalty<10000 \medbreak \defunpenalty=10003 % Will keep this @deffn together with the % following @def command, see below. \else % If there are two @def commands in a row, we'll have a \nobreak, % which is there to keep the function description together with its % header. But if there's nothing but headers, we need to allow a % break somewhere. Check specifically for penalty 10002, inserted % by \printdefunline, instead of 10000, since the sectioning % commands also insert a nobreak penalty, and we don't want to allow % a break between a section heading and a defun. % % As a minor refinement, we avoid "club" headers by signalling % with penalty of 10003 after the very first @deffn in the % sequence (see above), and penalty of 10002 after any following % @def command. \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi % % Similarly, after a section heading, do not allow a break. % But do insert the glue. \medskip % preceded by discardable penalty, so not a breakpoint \fi % \parindent=0in \advance\leftskip by \defbodyindent \exdentamount=\defbodyindent } \def\dodefunx#1{% % First, check whether we are in the right environment: \checkenv#1% % % As above, allow line break if we have multiple x headers in a row. % It's not a great place, though. \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi % % And now, it's time to reuse the body of the original defun: \expandafter\gobbledefun#1% } \def\gobbledefun#1\startdefun{} % \printdefunline \deffnheader{text} % \def\printdefunline#1#2{% \begingroup % call \deffnheader: #1#2 \endheader % common ending: \interlinepenalty = 10000 \advance\rightskip by 0pt plus 1fil \endgraf \nobreak\vskip -\parskip \penalty\defunpenalty % signal to \startdefun and \dodefunx % Some of the @defun-type tags do not enable magic parentheses, % rendering the following check redundant. But we don't optimize. \checkparencounts \endgroup } \def\Edefun{\endgraf\medbreak} % \makedefun{deffn} creates \deffn, \deffnx and \Edeffn; % the only thing remaining is to define \deffnheader. % \def\makedefun#1{% \expandafter\let\csname E#1\endcsname = \Edefun \edef\temp{\noexpand\domakedefun \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}% \temp } % \domakedefun \deffn \deffnx \deffnheader % % Define \deffn and \deffnx, without parameters. % \deffnheader has to be defined explicitly. % \def\domakedefun#1#2#3{% \envdef#1{% \startdefun \parseargusing\activeparens{\printdefunline#3}% }% \def#2{\dodefunx#1}% \def#3% } %%% Untyped functions: % @deffn category name args \makedefun{deffn}{\deffngeneral{}} % @deffn category class name args \makedefun{defop}#1 {\defopon{#1\ \putwordon}} % \defopon {category on}class name args \def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } % \deffngeneral {subind}category name args % \def\deffngeneral#1#2 #3 #4\endheader{% % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}. \dosubind{fn}{\code{#3}}{#1}% \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}% } %%% Typed functions: % @deftypefn category type name args \makedefun{deftypefn}{\deftypefngeneral{}} % @deftypeop category class type name args \makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}} % \deftypeopon {category on}class type name args \def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } % \deftypefngeneral {subind}category type name args % \def\deftypefngeneral#1#2 #3 #4 #5\endheader{% \dosubind{fn}{\code{#4}}{#1}% \defname{#2}{#3}{#4}\defunargs{#5\unskip}% } %%% Typed variables: % @deftypevr category type var args \makedefun{deftypevr}{\deftypecvgeneral{}} % @deftypecv category class type var args \makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}} % \deftypecvof {category of}class type var args \def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} } % \deftypecvgeneral {subind}category type var args % \def\deftypecvgeneral#1#2 #3 #4 #5\endheader{% \dosubind{vr}{\code{#4}}{#1}% \defname{#2}{#3}{#4}\defunargs{#5\unskip}% } %%% Untyped variables: % @defvr category var args \makedefun{defvr}#1 {\deftypevrheader{#1} {} } % @defcv category class var args \makedefun{defcv}#1 {\defcvof{#1\ \putwordof}} % \defcvof {category of}class var args \def\defcvof#1#2 {\deftypecvof{#1}#2 {} } %%% Type: % @deftp category name args \makedefun{deftp}#1 #2 #3\endheader{% \doind{tp}{\code{#2}}% \defname{#1}{}{#2}\defunargs{#3\unskip}% } % Remaining @defun-like shortcuts: \makedefun{defun}{\deffnheader{\putwordDeffunc} } \makedefun{defmac}{\deffnheader{\putwordDefmac} } \makedefun{defspec}{\deffnheader{\putwordDefspec} } \makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} } \makedefun{defvar}{\defvrheader{\putwordDefvar} } \makedefun{defopt}{\defvrheader{\putwordDefopt} } \makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} } \makedefun{defmethod}{\defopon\putwordMethodon} \makedefun{deftypemethod}{\deftypeopon\putwordMethodon} \makedefun{defivar}{\defcvof\putwordInstanceVariableof} \makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof} % \defname, which formats the name of the @def (not the args). % #1 is the category, such as "Function". % #2 is the return type, if any. % #3 is the function name. % % We are followed by (but not passed) the arguments, if any. % \def\defname#1#2#3{% % Get the values of \leftskip and \rightskip as they were outside the @def... \advance\leftskip by -\defbodyindent % % How we'll format the type name. Putting it in brackets helps % distinguish it from the body text that may end up on the next line % just below it. \def\temp{#1}% \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi} % % Figure out line sizes for the paragraph shape. % The first line needs space for \box0; but if \rightskip is nonzero, % we need only space for the part of \box0 which exceeds it: \dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip % The continuations: \dimen2=\hsize \advance\dimen2 by -\defargsindent % (plain.tex says that \dimen1 should be used only as global.) \parshape 2 0in \dimen0 \defargsindent \dimen2 % % Put the type name to the right margin. \noindent \hbox to 0pt{% \hfil\box0 \kern-\hsize % \hsize has to be shortened this way: \kern\leftskip % Intentionally do not respect \rightskip, since we need the space. }% % % Allow all lines to be underfull without complaint: \tolerance=10000 \hbadness=10000 \exdentamount=\defbodyindent {% % defun fonts. We use typewriter by default (used to be bold) because: % . we're printing identifiers, they should be in tt in principle. % . in languages with many accents, such as Czech or French, it's % common to leave accents off identifiers. The result looks ok in % tt, but exceedingly strange in rm. % . we don't want -- and --- to be treated as ligatures. % . this still does not fix the ?` and !` ligatures, but so far no % one has made identifiers using them :). \df \tt \def\temp{#2}% return value type \ifx\temp\empty\else \tclose{\temp} \fi #3% output function name }% {\rm\enskip}% hskip 0.5 em of \tenrm % \boldbrax % arguments will be output next, if any. } % Print arguments in slanted roman (not ttsl), inconsistently with using % tt for the name. This is because literal text is sometimes needed in % the argument list (groff manual), and ttsl and tt are not very % distinguishable. Prevent hyphenation at `-' chars. % \def\defunargs#1{% % use sl by default (not ttsl), % tt for the names. \df \sl \hyphenchar\font=0 % % On the other hand, if an argument has two dashes (for instance), we % want a way to get ttsl. Let's try @var for that. \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}% #1% \sl\hyphenchar\font=45 } % We want ()&[] to print specially on the defun line. % \def\activeparens{% \catcode`\(=\active \catcode`\)=\active \catcode`\[=\active \catcode`\]=\active \catcode`\&=\active } % Make control sequences which act like normal parenthesis chars. \let\lparen = ( \let\rparen = ) % Be sure that we always have a definition for `(', etc. For example, % if the fn name has parens in it, \boldbrax will not be in effect yet, % so TeX would otherwise complain about undefined control sequence. { \activeparens \global\let(=\lparen \global\let)=\rparen \global\let[=\lbrack \global\let]=\rbrack \global\let& = \& \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} \gdef\magicamp{\let&=\amprm} } \newcount\parencount % If we encounter &foo, then turn on ()-hacking afterwards \newif\ifampseen \def\amprm#1 {\ampseentrue{\bf\ }} \def\parenfont{% \ifampseen % At the first level, print parens in roman, % otherwise use the default font. \ifnum \parencount=1 \rm \fi \else % The \sf parens (in \boldbrax) actually are a little bolder than % the contained text. This is especially needed for [ and ] . \sf \fi } \def\infirstlevel#1{% \ifampseen \ifnum\parencount=1 #1% \fi \fi } \def\bfafterword#1 {#1 \bf} \def\opnr{% \global\advance\parencount by 1 {\parenfont(}% \infirstlevel \bfafterword } \def\clnr{% {\parenfont)}% \infirstlevel \sl \global\advance\parencount by -1 } \newcount\brackcount \def\lbrb{% \global\advance\brackcount by 1 {\bf[}% } \def\rbrb{% {\bf]}% \global\advance\brackcount by -1 } \def\checkparencounts{% \ifnum\parencount=0 \else \badparencount \fi \ifnum\brackcount=0 \else \badbrackcount \fi } % these should not use \errmessage; the glibc manual, at least, actually % has such constructs (when documenting function pointers). \def\badparencount{% \message{Warning: unbalanced parentheses in @def...}% \global\parencount=0 } \def\badbrackcount{% \message{Warning: unbalanced square brackets in @def...}% \global\brackcount=0 } \message{macros,} % @macro. % To do this right we need a feature of e-TeX, \scantokens, % which we arrange to emulate with a temporary file in ordinary TeX. \ifx\eTeXversion\undefined \newwrite\macscribble \def\scantokens#1{% \toks0={#1}% \immediate\openout\macscribble=\jobname.tmp \immediate\write\macscribble{\the\toks0}% \immediate\closeout\macscribble \input \jobname.tmp } \fi \def\scanmacro#1{% \begingroup \newlinechar`\^^M \let\xeatspaces\eatspaces % Undo catcode changes of \startcontents and \doprintindex % When called from @insertcopying or (short)caption, we need active % backslash to get it printed correctly. Previously, we had % \catcode`\\=\other instead. We'll see whether a problem appears % with macro expansion. --kasal, 19aug04 \catcode`\@=0 \catcode`\\=\active \escapechar=`\@ % ... and \example \spaceisspace % % Append \endinput to make sure that TeX does not see the ending newline. % I've verified that it is necessary both for e-TeX and for ordinary TeX % --kasal, 29nov03 \scantokens{#1\endinput}% \endgroup } \def\scanexp#1{% \edef\temp{\noexpand\scanmacro{#1}}% \temp } \newcount\paramno % Count of parameters \newtoks\macname % Macro name \newif\ifrecursive % Is it recursive? % List of all defined macros in the form % \definedummyword\macro1\definedummyword\macro2... % Currently is also contains all @aliases; the list can be split % if there is a need. \def\macrolist{} % Add the macro to \macrolist \def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname} \def\addtomacrolistxxx#1{% \toks0 = \expandafter{\macrolist\definedummyword#1}% \xdef\macrolist{\the\toks0}% } % Utility routines. % This does \let #1 = #2, with \csnames; that is, % \let \csname#1\endcsname = \csname#2\endcsname % (except of course we have to play expansion games). % \def\cslet#1#2{% \expandafter\let \csname#1\expandafter\endcsname \csname#2\endcsname } % Trim leading and trailing spaces off a string. % Concepts from aro-bend problem 15 (see CTAN). {\catcode`\@=11 \gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }} \gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@} \gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @} \def\unbrace#1{#1} \unbrace{\gdef\trim@@@ #1 } #2@{#1} } % Trim a single trailing ^^M off a string. {\catcode`\^^M=\other \catcode`\Q=3% \gdef\eatcr #1{\eatcra #1Q^^MQ}% \gdef\eatcra#1^^MQ{\eatcrb#1Q}% \gdef\eatcrb#1Q#2Q{#1}% } % Macro bodies are absorbed as an argument in a context where % all characters are catcode 10, 11 or 12, except \ which is active % (as in normal texinfo). It is necessary to change the definition of \. % Non-ASCII encodings make 8-bit characters active, so un-activate % them to avoid their expansion. Must do this non-globally, to % confine the change to the current group. % It's necessary to have hard CRs when the macro is executed. This is % done by making ^^M (\endlinechar) catcode 12 when reading the macro % body, and then making it the \newlinechar in \scanmacro. \def\scanctxt{% \catcode`\"=\other \catcode`\+=\other \catcode`\<=\other \catcode`\>=\other \catcode`\@=\other \catcode`\^=\other \catcode`\_=\other \catcode`\|=\other \catcode`\~=\other \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi } \def\scanargctxt{% \scanctxt \catcode`\\=\other \catcode`\^^M=\other } \def\macrobodyctxt{% \scanctxt \catcode`\{=\other \catcode`\}=\other \catcode`\^^M=\other \usembodybackslash } \def\macroargctxt{% \scanctxt \catcode`\\=\other } % \mbodybackslash is the definition of \ in @macro bodies. % It maps \foo\ => \csname macarg.foo\endcsname => #N % where N is the macro parameter number. % We define \csname macarg.\endcsname to be \realbackslash, so % \\ in macro replacement text gets you a backslash. {\catcode`@=0 @catcode`@\=@active @gdef@usembodybackslash{@let\=@mbodybackslash} @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname} } \expandafter\def\csname macarg.\endcsname{\realbackslash} \def\macro{\recursivefalse\parsearg\macroxxx} \def\rmacro{\recursivetrue\parsearg\macroxxx} \def\macroxxx#1{% \getargs{#1}% now \macname is the macname and \argl the arglist \ifx\argl\empty % no arguments \paramno=0% \else \expandafter\parsemargdef \argl;% \fi \if1\csname ismacro.\the\macname\endcsname \message{Warning: redefining \the\macname}% \else \expandafter\ifx\csname \the\macname\endcsname \relax \else \errmessage{Macro name \the\macname\space already defined}\fi \global\cslet{macsave.\the\macname}{\the\macname}% \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% \addtomacrolist{\the\macname}% \fi \begingroup \macrobodyctxt \ifrecursive \expandafter\parsermacbody \else \expandafter\parsemacbody \fi} \parseargdef\unmacro{% \if1\csname ismacro.#1\endcsname \global\cslet{#1}{macsave.#1}% \global\expandafter\let \csname ismacro.#1\endcsname=0% % Remove the macro name from \macrolist: \begingroup \expandafter\let\csname#1\endcsname \relax \let\definedummyword\unmacrodo \xdef\macrolist{\macrolist}% \endgroup \else \errmessage{Macro #1 not defined}% \fi } % Called by \do from \dounmacro on each macro. The idea is to omit any % macro definitions that have been changed to \relax. % \def\unmacrodo#1{% \ifx #1\relax % remove this \else \noexpand\definedummyword \noexpand#1% \fi } % This makes use of the obscure feature that if the last token of a % is #, then the preceding argument is delimited by % an opening brace, and that opening brace is not consumed. \def\getargs#1{\getargsxxx#1{}} \def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} \def\getmacname #1 #2\relax{\macname={#1}} \def\getmacargs#1{\def\argl{#1}} % Parse the optional {params} list. Set up \paramno and \paramlist % so \defmacro knows what to do. Define \macarg.blah for each blah % in the params list, to be ##N where N is the position in that list. % That gets used by \mbodybackslash (above). % We need to get `macro parameter char #' into several definitions. % The technique used is stolen from LaTeX: let \hash be something % unexpandable, insert that wherever you need a #, and then redefine % it to # just before using the token list produced. % % The same technique is used to protect \eatspaces till just before % the macro is used. \def\parsemargdef#1;{\paramno=0\def\paramlist{}% \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,} \def\parsemargdefxxx#1,{% \if#1;\let\next=\relax \else \let\next=\parsemargdefxxx \advance\paramno by 1% \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname {\xeatspaces{\hash\the\paramno}}% \edef\paramlist{\paramlist\hash\the\paramno,}% \fi\next} % These two commands read recursive and nonrecursive macro bodies. % (They're different since rec and nonrec macros end differently.) \long\def\parsemacbody#1@end macro% {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% \long\def\parsermacbody#1@end rmacro% {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% % This defines the macro itself. There are six cases: recursive and % nonrecursive macros of zero, one, and many arguments. % Much magic with \expandafter here. % \xdef is used so that macro definitions will survive the file % they're defined in; @include reads the file inside a group. \def\defmacro{% \let\hash=##% convert placeholders to macro parameter chars \ifrecursive \ifcase\paramno % 0 \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\scanmacro{\temp}}% \or % 1 \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt \noexpand\braceorline \expandafter\noexpand\csname\the\macname xxx\endcsname}% \expandafter\xdef\csname\the\macname xxx\endcsname##1{% \egroup\noexpand\scanmacro{\temp}}% \else % many \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt \noexpand\csname\the\macname xx\endcsname}% \expandafter\xdef\csname\the\macname xx\endcsname##1{% \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% \expandafter\expandafter \expandafter\xdef \expandafter\expandafter \csname\the\macname xxx\endcsname \paramlist{\egroup\noexpand\scanmacro{\temp}}% \fi \else \ifcase\paramno % 0 \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\norecurse{\the\macname}% \noexpand\scanmacro{\temp}\egroup}% \or % 1 \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt \noexpand\braceorline \expandafter\noexpand\csname\the\macname xxx\endcsname}% \expandafter\xdef\csname\the\macname xxx\endcsname##1{% \egroup \noexpand\norecurse{\the\macname}% \noexpand\scanmacro{\temp}\egroup}% \else % many \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt \expandafter\noexpand\csname\the\macname xx\endcsname}% \expandafter\xdef\csname\the\macname xx\endcsname##1{% \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% \expandafter\expandafter \expandafter\xdef \expandafter\expandafter \csname\the\macname xxx\endcsname \paramlist{% \egroup \noexpand\norecurse{\the\macname}% \noexpand\scanmacro{\temp}\egroup}% \fi \fi} \def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}} % \braceorline decides whether the next nonwhitespace character is a % {. If so it reads up to the closing }, if not, it reads the whole % line. Whatever was read is then fed to the next control sequence % as an argument (by \parsebrace or \parsearg) \def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx} \def\braceorlinexxx{% \ifx\nchar\bgroup\else \expandafter\parsearg \fi \macnamexxx} % @alias. % We need some trickery to remove the optional spaces around the equal % sign. Just make them active and then expand them all to nothing. \def\alias{\parseargusing\obeyspaces\aliasxxx} \def\aliasxxx #1{\aliasyyy#1\relax} \def\aliasyyy #1=#2\relax{% {% \expandafter\let\obeyedspace=\empty \addtomacrolist{#1}% \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}% }% \next } \message{cross references,} \newwrite\auxfile \newif\ifhavexrefs % True if xref values are known. \newif\ifwarnedxrefs % True if we warned once that they aren't known. % @inforef is relatively simple. \def\inforef #1{\inforefzzz #1,,,,**} \def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, node \samp{\ignorespaces#1{}}} % @node's only job in TeX is to define \lastnode, which is used in % cross-references. The @node line might or might not have commas, and % might or might not have spaces before the first comma, like: % @node foo , bar , ... % We don't want such trailing spaces in the node name. % \parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse} % % also remove a trailing comma, in case of something like this: % @node Help-Cross, , , Cross-refs \def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse} \def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}} \let\nwnode=\node \let\lastnode=\empty % Write a cross-reference definition for the current node. #1 is the % type (Ynumbered, Yappendix, Ynothing). % \def\donoderef#1{% \ifx\lastnode\empty\else \setref{\lastnode}{#1}% \global\let\lastnode=\empty \fi } % @anchor{NAME} -- define xref target at arbitrary point. % \newcount\savesfregister % \def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi} \def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi} \def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces} % \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an % anchor), which consists of three parts: % 1) NAME-title - the current sectioning name taken from \lastsection, % or the anchor name. % 2) NAME-snt - section number and type, passed as the SNT arg, or % empty for anchors. % 3) NAME-pg - the page number. % % This is called from \donoderef, \anchor, and \dofloat. In the case of % floats, there is an additional part, which is not written here: % 4) NAME-lof - the text as it should appear in a @listoffloats. % \def\setref#1#2{% \pdfmkdest{#1}% \iflinks {% \atdummies % preserve commands, but don't expand them \edef\writexrdef##1##2{% \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef ##1}{##2}}% these are parameters of \writexrdef }% \toks0 = \expandafter{\lastsection}% \immediate \writexrdef{title}{\the\toks0 }% \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc. \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, during \shipout }% \fi } % @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is % the node name, #2 the name of the Info cross-reference, #3 the printed % node name, #4 the name of the Info file, #5 the name of the printed % manual. All but the node name can be omitted. % \def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]} \def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]} \def\ref#1{\xrefX[#1,,,,,,,]} \def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup \unsepspaces \def\printedmanual{\ignorespaces #5}% \def\printedrefname{\ignorespaces #3}% \setbox1=\hbox{\printedmanual\unskip}% \setbox0=\hbox{\printedrefname\unskip}% \ifdim \wd0 = 0pt % No printed node name was explicitly given. \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax % Use the node name inside the square brackets. \def\printedrefname{\ignorespaces #1}% \else % Use the actual chapter/section title appear inside % the square brackets. Use the real section title if we have it. \ifdim \wd1 > 0pt % It is in another manual, so we don't have it. \def\printedrefname{\ignorespaces #1}% \else \ifhavexrefs % We know the real title if we have the xref values. \def\printedrefname{\refx{#1-title}{}}% \else % Otherwise just copy the Info node name. \def\printedrefname{\ignorespaces #1}% \fi% \fi \fi \fi % % Make link in pdf output. \ifpdf {\indexnofonts \turnoffactive % This expands tokens, so do it after making catcode changes, so _ % etc. don't get their TeX definitions. \getfilename{#4}% % % See comments at \activebackslashdouble. {\activebackslashdouble \xdef\pdfxrefdest{#1}% \backslashparens\pdfxrefdest}% % \leavevmode \startlink attr{/Border [0 0 0]}% \ifnum\filenamelength>0 goto file{\the\filename.pdf} name{\pdfxrefdest}% \else goto name{\pdfmkpgn{\pdfxrefdest}}% \fi }% \setcolor{\linkcolor}% \fi % % Float references are printed completely differently: "Figure 1.2" % instead of "[somenode], p.3". We distinguish them by the % LABEL-title being set to a magic string. {% % Have to otherify everything special to allow the \csname to % include an _ in the xref name, etc. \indexnofonts \turnoffactive \expandafter\global\expandafter\let\expandafter\Xthisreftitle \csname XR#1-title\endcsname }% \iffloat\Xthisreftitle % If the user specified the print name (third arg) to the ref, % print it instead of our usual "Figure 1.2". \ifdim\wd0 = 0pt \refx{#1-snt}{}% \else \printedrefname \fi % % if the user also gave the printed manual name (fifth arg), append % "in MANUALNAME". \ifdim \wd1 > 0pt \space \putwordin{} \cite{\printedmanual}% \fi \else % node/anchor (non-float) references. % % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not % insert empty discretionaries after hyphens, which means that it will % not find a line break at a hyphen in a node names. Since some manuals % are best written with fairly long node names, containing hyphens, this % is a loss. Therefore, we give the text of the node name again, so it % is as if TeX is seeing it for the first time. \ifdim \wd1 > 0pt \putwordSection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}% \else % _ (for example) has to be the character _ for the purposes of the % control sequence corresponding to the node, but it has to expand % into the usual \leavevmode...\vrule stuff for purposes of % printing. So we \turnoffactive for the \refx-snt, back on for the % printing, back off for the \refx-pg. {\turnoffactive % Only output a following space if the -snt ref is nonempty; for % @unnumbered and @anchor, it won't be. \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}% \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi }% % output the `[mynode]' via a macro so it can be overridden. \xrefprintnodename\printedrefname % % But we always want a comma and a space: ,\space % % output the `page 3'. \turnoffactive \putwordpage\tie\refx{#1-pg}{}% \fi \fi \endlink \endgroup} % This macro is called from \xrefX for the `[nodename]' part of xref % output. It's a separate macro only so it can be changed more easily, % since square brackets don't work well in some documents. Particularly % one that Bob is working on :). % \def\xrefprintnodename#1{[#1]} % Things referred to by \setref. % \def\Ynothing{} \def\Yomitfromtoc{} \def\Ynumbered{% \ifnum\secno=0 \putwordChapter@tie \the\chapno \else \ifnum\subsecno=0 \putwordSection@tie \the\chapno.\the\secno \else \ifnum\subsubsecno=0 \putwordSection@tie \the\chapno.\the\secno.\the\subsecno \else \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno \fi\fi\fi } \def\Yappendix{% \ifnum\secno=0 \putwordAppendix@tie @char\the\appendixno{}% \else \ifnum\subsecno=0 \putwordSection@tie @char\the\appendixno.\the\secno \else \ifnum\subsubsecno=0 \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno \else \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno \fi\fi\fi } % Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME. % If its value is nonempty, SUFFIX is output afterward. % \def\refx#1#2{% {% \indexnofonts \otherbackslash \expandafter\global\expandafter\let\expandafter\thisrefX \csname XR#1\endcsname }% \ifx\thisrefX\relax % If not defined, say something at least. \angleleft un\-de\-fined\angleright \iflinks \ifhavexrefs \message{\linenumber Undefined cross reference `#1'.}% \else \ifwarnedxrefs\else \global\warnedxrefstrue \message{Cross reference values unknown; you must run TeX again.}% \fi \fi \fi \else % It's defined, so just use it. \thisrefX \fi #2% Output the suffix in any case. } % This is the macro invoked by entries in the aux file. Usually it's % just a \def (we prepend XR to the control sequence name to avoid % collisions). But if this is a float type, we have more work to do. % \def\xrdef#1#2{% {% The node name might contain 8-bit characters, which in our current % implementation are changed to commands like @'e. Don't let these % mess up the control sequence name. \indexnofonts \turnoffactive \xdef\safexrefname{#1}% }% % \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref % % Was that xref control sequence that we just defined for a float? \expandafter\iffloat\csname XR\safexrefname\endcsname % it was a float, and we have the (safe) float type in \iffloattype. \expandafter\let\expandafter\floatlist \csname floatlist\iffloattype\endcsname % % Is this the first time we've seen this float type? \expandafter\ifx\floatlist\relax \toks0 = {\do}% yes, so just \do \else % had it before, so preserve previous elements in list. \toks0 = \expandafter{\floatlist\do}% \fi % % Remember this xref in the control sequence \floatlistFLOATTYPE, % for later use in \listoffloats. \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0 {\safexrefname}}% \fi } % Read the last existing aux file, if any. No error if none exists. % \def\tryauxfile{% \openin 1 \jobname.aux \ifeof 1 \else \readdatafile{aux}% \global\havexrefstrue \fi \closein 1 } \def\setupdatafile{% \catcode`\^^@=\other \catcode`\^^A=\other \catcode`\^^B=\other \catcode`\^^C=\other \catcode`\^^D=\other \catcode`\^^E=\other \catcode`\^^F=\other \catcode`\^^G=\other \catcode`\^^H=\other \catcode`\^^K=\other \catcode`\^^L=\other \catcode`\^^N=\other \catcode`\^^P=\other \catcode`\^^Q=\other \catcode`\^^R=\other \catcode`\^^S=\other \catcode`\^^T=\other \catcode`\^^U=\other \catcode`\^^V=\other \catcode`\^^W=\other \catcode`\^^X=\other \catcode`\^^Z=\other \catcode`\^^[=\other \catcode`\^^\=\other \catcode`\^^]=\other \catcode`\^^^=\other \catcode`\^^_=\other % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc. % in xref tags, i.e., node names. But since ^^e4 notation isn't % supported in the main text, it doesn't seem desirable. Furthermore, % that is not enough: for node names that actually contain a ^ % character, we would end up writing a line like this: 'xrdef {'hat % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first % argument, and \hat is not an expandable control sequence. It could % all be worked out, but why? Either we support ^^ or we don't. % % The other change necessary for this was to define \auxhat: % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter % and then to call \auxhat in \setq. % \catcode`\^=\other % % Special characters. Should be turned off anyway, but... \catcode`\~=\other \catcode`\[=\other \catcode`\]=\other \catcode`\"=\other \catcode`\_=\other \catcode`\|=\other \catcode`\<=\other \catcode`\>=\other \catcode`\$=\other \catcode`\#=\other \catcode`\&=\other \catcode`\%=\other \catcode`+=\other % avoid \+ for paranoia even though we've turned it off % % This is to support \ in node names and titles, since the \ % characters end up in a \csname. It's easier than % leaving it active and making its active definition an actual \ % character. What I don't understand is why it works in the *value* % of the xrdef. Seems like it should be a catcode12 \, and that % should not typeset properly. But it works, so I'm moving on for % now. --karl, 15jan04. \catcode`\\=\other % % Make the characters 128-255 be printing characters. {% \count1=128 \def\loop{% \catcode\count1=\other \advance\count1 by 1 \ifnum \count1<256 \loop \fi }% }% % % @ is our escape character in .aux files, and we need braces. \catcode`\{=1 \catcode`\}=2 \catcode`\@=0 } \def\readdatafile#1{% \begingroup \setupdatafile \input\jobname.#1 \endgroup} \message{insertions,} % including footnotes. \newcount \footnoteno % The trailing space in the following definition for supereject is % vital for proper filling; pages come out unaligned when you do a % pagealignmacro call if that space before the closing brace is % removed. (Generally, numeric constants should always be followed by a % space to prevent strange expansion errors.) \def\supereject{\par\penalty -20000\footnoteno =0 } % @footnotestyle is meaningful for info output only. \let\footnotestyle=\comment {\catcode `\@=11 % % Auto-number footnotes. Otherwise like plain. \gdef\footnote{% \let\indent=\ptexindent \let\noindent=\ptexnoindent \global\advance\footnoteno by \@ne \edef\thisfootno{$^{\the\footnoteno}$}% % % In case the footnote comes at the end of a sentence, preserve the % extra spacing after we do the footnote number. \let\@sf\empty \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi % % Remove inadvertent blank space before typesetting the footnote number. \unskip \thisfootno\@sf \dofootnote }% % Don't bother with the trickery in plain.tex to not require the % footnote text as a parameter. Our footnotes don't need to be so general. % % Oh yes, they do; otherwise, @ifset (and anything else that uses % \parseargline) fails inside footnotes because the tokens are fixed when % the footnote is read. --karl, 16nov96. % \gdef\dofootnote{% \insert\footins\bgroup % We want to typeset this text as a normal paragraph, even if the % footnote reference occurs in (for example) a display environment. % So reset some parameters. \hsize=\pagewidth \interlinepenalty\interfootnotelinepenalty \splittopskip\ht\strutbox % top baseline for broken footnotes \splitmaxdepth\dp\strutbox \floatingpenalty\@MM \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip \parindent\defaultparindent % \smallfonts \rm % % Because we use hanging indentation in footnotes, a @noindent appears % to exdent this text, so make it be a no-op. makeinfo does not use % hanging indentation so @noindent can still be needed within footnote % text after an @example or the like (not that this is good style). \let\noindent = \relax % % Hang the footnote text off the number. Use \everypar in case the % footnote extends for more than one paragraph. \everypar = {\hang}% \textindent{\thisfootno}% % % Don't crash into the line above the footnote text. Since this % expands into a box, it must come within the paragraph, lest it % provide a place where TeX can split the footnote. \footstrut \futurelet\next\fo@t } }%end \catcode `\@=11 % In case a @footnote appears in a vbox, save the footnote text and create % the real \insert just after the vbox finished. Otherwise, the insertion % would be lost. % Similarly, if a @footnote appears inside an alignment, save the footnote % text to a box and make the \insert when a row of the table is finished. % And the same can be done for other insert classes. --kasal, 16nov03. % Replace the \insert primitive by a cheating macro. % Deeper inside, just make sure that the saved insertions are not spilled % out prematurely. % \def\startsavinginserts{% \ifx \insert\ptexinsert \let\insert\saveinsert \else \let\checkinserts\relax \fi } % This \insert replacement works for both \insert\footins{foo} and % \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}. % \def\saveinsert#1{% \edef\next{\noexpand\savetobox \makeSAVEname#1}% \afterassignment\next % swallow the left brace \let\temp = } \def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}} \def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1} \def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi} \def\placesaveins#1{% \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname {\box#1}% } % eat @SAVE -- beware, all of them have catcode \other: { \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials % ;-) \gdef\gobblesave @SAVE{} } % initialization: \def\newsaveins #1{% \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}% \next } \def\newsaveinsX #1{% \csname newbox\endcsname #1% \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts \checksaveins #1}% } % initialize: \let\checkinserts\empty \newsaveins\footins \newsaveins\margin % @image. We use the macros from epsf.tex to support this. % If epsf.tex is not installed and @image is used, we complain. % % Check for and read epsf.tex up front. If we read it only at @image % time, we might be inside a group, and then its definitions would get % undone and the next image would fail. \openin 1 = epsf.tex \ifeof 1 \else % Do not bother showing banner with epsf.tex v2.7k (available in % doc/epsf.tex and on ctan). \def\epsfannounce{\toks0 = }% \input epsf.tex \fi \closein 1 % % We will only complain once about lack of epsf.tex. \newif\ifwarnednoepsf \newhelp\noepsfhelp{epsf.tex must be installed for images to work. It is also included in the Texinfo distribution, or you can get it from ftp://tug.org/tex/epsf.tex.} % \def\image#1{% \ifx\epsfbox\undefined \ifwarnednoepsf \else \errhelp = \noepsfhelp \errmessage{epsf.tex not found, images will be ignored}% \global\warnednoepsftrue \fi \else \imagexxx #1,,,,,\finish \fi } % % Arguments to @image: % #1 is (mandatory) image filename; we tack on .eps extension. % #2 is (optional) width, #3 is (optional) height. % #4 is (ignored optional) html alt text. % #5 is (ignored optional) extension. % #6 is just the usual extra ignored arg for parsing this stuff. \newif\ifimagevmode \def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup \catcode`\^^M = 5 % in case we're inside an example \normalturnoffactive % allow _ et al. in names % If the image is by itself, center it. \ifvmode \imagevmodetrue \nobreak\medskip % Usually we'll have text after the image which will insert % \parskip glue, so insert it here too to equalize the space % above and below. \nobreak\vskip\parskip \nobreak \fi % % Leave vertical mode so that indentation from an enclosing % environment such as @quotation is respected. On the other hand, if % it's at the top level, we don't want the normal paragraph indentation. \noindent % % Output the image. \ifpdf \dopdfimage{#1}{#2}{#3}% \else % \epsfbox itself resets \epsf?size at each figure. \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi \epsfbox{#1.eps}% \fi % \ifimagevmode \medskip \fi % space after the standalone image \endgroup} % @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables, % etc. We don't actually implement floating yet, we always include the % float "here". But it seemed the best name for the future. % \envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish} % There may be a space before second and/or third parameter; delete it. \def\eatcommaspace#1, {#1,} % #1 is the optional FLOATTYPE, the text label for this float, typically % "Figure", "Table", "Example", etc. Can't contain commas. If omitted, % this float will not be numbered and cannot be referred to. % % #2 is the optional xref label. Also must be present for the float to % be referable. % % #3 is the optional positioning argument; for now, it is ignored. It % will somehow specify the positions allowed to float to (here, top, bottom). % % We keep a separate counter for each FLOATTYPE, which we reset at each % chapter-level command. \let\resetallfloatnos=\empty % \def\dofloat#1,#2,#3,#4\finish{% \let\thiscaption=\empty \let\thisshortcaption=\empty % % don't lose footnotes inside @float. % % BEWARE: when the floats start float, we have to issue warning whenever an % insert appears inside a float which could possibly float. --kasal, 26may04 % \startsavinginserts % % We can't be used inside a paragraph. \par % \vtop\bgroup \def\floattype{#1}% \def\floatlabel{#2}% \def\floatloc{#3}% we do nothing with this yet. % \ifx\floattype\empty \let\safefloattype=\empty \else {% % the floattype might have accents or other special characters, % but we need to use it in a control sequence name. \indexnofonts \turnoffactive \xdef\safefloattype{\floattype}% }% \fi % % If label is given but no type, we handle that as the empty type. \ifx\floatlabel\empty \else % We want each FLOATTYPE to be numbered separately (Figure 1, % Table 1, Figure 2, ...). (And if no label, no number.) % \expandafter\getfloatno\csname\safefloattype floatno\endcsname \global\advance\floatno by 1 % {% % This magic value for \lastsection is output by \setref as the % XREFLABEL-title value. \xrefX uses it to distinguish float % labels (which have a completely different output format) from % node and anchor labels. And \xrdef uses it to construct the % lists of floats. % \edef\lastsection{\floatmagic=\safefloattype}% \setref{\floatlabel}{Yfloat}% }% \fi % % start with \parskip glue, I guess. \vskip\parskip % % Don't suppress indentation if a float happens to start a section. \restorefirstparagraphindent } % we have these possibilities: % @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap % @float Foo,lbl & no caption: Foo 1.1 % @float Foo & @caption{Cap}: Foo: Cap % @float Foo & no caption: Foo % @float ,lbl & Caption{Cap}: 1.1: Cap % @float ,lbl & no caption: 1.1 % @float & @caption{Cap}: Cap % @float & no caption: % \def\Efloat{% \let\floatident = \empty % % In all cases, if we have a float type, it comes first. \ifx\floattype\empty \else \def\floatident{\floattype}\fi % % If we have an xref label, the number comes next. \ifx\floatlabel\empty \else \ifx\floattype\empty \else % if also had float type, need tie first. \appendtomacro\floatident{\tie}% \fi % the number. \appendtomacro\floatident{\chaplevelprefix\the\floatno}% \fi % % Start the printed caption with what we've constructed in % \floatident, but keep it separate; we need \floatident again. \let\captionline = \floatident % \ifx\thiscaption\empty \else \ifx\floatident\empty \else \appendtomacro\captionline{: }% had ident, so need a colon between \fi % % caption text. \appendtomacro\captionline{\scanexp\thiscaption}% \fi % % If we have anything to print, print it, with space before. % Eventually this needs to become an \insert. \ifx\captionline\empty \else \vskip.5\parskip \captionline % % Space below caption. \vskip\parskip \fi % % If have an xref label, write the list of floats info. Do this % after the caption, to avoid chance of it being a breakpoint. \ifx\floatlabel\empty \else % Write the text that goes in the lof to the aux file as % \floatlabel-lof. Besides \floatident, we include the short % caption if specified, else the full caption if specified, else nothing. {% \atdummies % % since we read the caption text in the macro world, where ^^M % is turned into a normal character, we have to scan it back, so % we don't write the literal three characters "^^M" into the aux file. \scanexp{% \xdef\noexpand\gtemp{% \ifx\thisshortcaption\empty \thiscaption \else \thisshortcaption \fi }% }% \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident \ifx\gtemp\empty \else : \gtemp \fi}}% }% \fi \egroup % end of \vtop % % place the captured inserts % % BEWARE: when the floats start floating, we have to issue warning % whenever an insert appears inside a float which could possibly % float. --kasal, 26may04 % \checkinserts } % Append the tokens #2 to the definition of macro #1, not expanding either. % \def\appendtomacro#1#2{% \expandafter\def\expandafter#1\expandafter{#1#2}% } % @caption, @shortcaption % \def\caption{\docaption\thiscaption} \def\shortcaption{\docaption\thisshortcaption} \def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption} \def\defcaption#1#2{\egroup \def#1{#2}} % The parameter is the control sequence identifying the counter we are % going to use. Create it if it doesn't exist and assign it to \floatno. \def\getfloatno#1{% \ifx#1\relax % Haven't seen this figure type before. \csname newcount\endcsname #1% % % Remember to reset this floatno at the next chap. \expandafter\gdef\expandafter\resetallfloatnos \expandafter{\resetallfloatnos #1=0 }% \fi \let\floatno#1% } % \setref calls this to get the XREFLABEL-snt value. We want an @xref % to the FLOATLABEL to expand to "Figure 3.1". We call \setref when we % first read the @float command. % \def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}% % Magic string used for the XREFLABEL-title value, so \xrefX can % distinguish floats from other xref types. \def\floatmagic{!!float!!} % #1 is the control sequence we are passed; we expand into a conditional % which is true if #1 represents a float ref. That is, the magic % \lastsection value which we \setref above. % \def\iffloat#1{\expandafter\doiffloat#1==\finish} % % #1 is (maybe) the \floatmagic string. If so, #2 will be the % (safe) float type for this float. We set \iffloattype to #2. % \def\doiffloat#1=#2=#3\finish{% \def\temp{#1}% \def\iffloattype{#2}% \ifx\temp\floatmagic } % @listoffloats FLOATTYPE - print a list of floats like a table of contents. % \parseargdef\listoffloats{% \def\floattype{#1}% floattype {% % the floattype might have accents or other special characters, % but we need to use it in a control sequence name. \indexnofonts \turnoffactive \xdef\safefloattype{\floattype}% }% % % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE. \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax \ifhavexrefs % if the user said @listoffloats foo but never @float foo. \message{\linenumber No `\safefloattype' floats to list.}% \fi \else \begingroup \leftskip=\tocindent % indent these entries like a toc \let\do=\listoffloatsdo \csname floatlist\safefloattype\endcsname \endgroup \fi } % This is called on each entry in a list of floats. We're passed the % xref label, in the form LABEL-title, which is how we save it in the % aux file. We strip off the -title and look up \XRLABEL-lof, which % has the text we're supposed to typeset here. % % Figures without xref labels will not be included in the list (since % they won't appear in the aux file). % \def\listoffloatsdo#1{\listoffloatsdoentry#1\finish} \def\listoffloatsdoentry#1-title\finish{{% % Can't fully expand XR#1-lof because it can contain anything. Just % pass the control sequence. On the other hand, XR#1-pg is just the % page number, and we want to fully expand that so we can get a link % in pdf output. \toksA = \expandafter{\csname XR#1-lof\endcsname}% % % use the same \entry macro we use to generate the TOC and index. \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}% \writeentry }} \message{localization,} % For single-language documents, @documentlanguage is usually given very % early, just after @documentencoding. Single argument is the language % (de) or locale (de_DE) abbreviation. % { \catcode`\_ = \active \globaldefs=1 \parseargdef\documentlanguage{\begingroup \let_=\normalunderscore % normal _ character for filenames \tex % read txi-??.tex file in plain TeX. % Read the file by the name they passed if it exists. \openin 1 txi-#1.tex \ifeof 1 \documentlanguagetrywithoutunderscore{#1_\finish}% \else \globaldefs = 1 % everything in the txi-LL files needs to persist \input txi-#1.tex \fi \closein 1 \endgroup % end raw TeX \endgroup} % % If they passed de_DE, and txi-de_DE.tex doesn't exist, % try txi-de.tex. % \gdef\documentlanguagetrywithoutunderscore#1_#2\finish{% \openin 1 txi-#1.tex \ifeof 1 \errhelp = \nolanghelp \errmessage{Cannot read language file txi-#1.tex}% \else \globaldefs = 1 % everything in the txi-LL files needs to persist \input txi-#1.tex \fi \closein 1 } }% end of special _ catcode % \newhelp\nolanghelp{The given language definition file cannot be found or is empty. Maybe you need to install it? Putting it in the current directory should work if nowhere else does.} % This macro is called from txi-??.tex files; the first argument is the % \language name to set (without the "\lang@" prefix), the second and % third args are \{left,right}hyphenmin. % % The language names to pass are determined when the format is built. % See the etex.log file created at that time, e.g., % /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log. % % With TeX Live 2008, etex now includes hyphenation patterns for all % available languages. This means we can support hyphenation in % Texinfo, at least to some extent. (This still doesn't solve the % accented characters problem.) % \catcode`@=11 \def\txisetlanguage#1#2#3{% % do not set the language if the name is undefined in the current TeX. \expandafter\ifx\csname lang@#1\endcsname \relax \message{no patterns for #1}% \else \global\language = \csname lang@#1\endcsname \fi % but there is no harm in adjusting the hyphenmin values regardless. \global\lefthyphenmin = #2\relax \global\righthyphenmin = #3\relax } % Helpers for encodings. % Set the catcode of characters 128 through 255 to the specified number. % \def\setnonasciicharscatcode#1{% \count255=128 \loop\ifnum\count255<256 \global\catcode\count255=#1\relax \advance\count255 by 1 \repeat } \def\setnonasciicharscatcodenonglobal#1{% \count255=128 \loop\ifnum\count255<256 \catcode\count255=#1\relax \advance\count255 by 1 \repeat } % @documentencoding sets the definition of non-ASCII characters % according to the specified encoding. % \parseargdef\documentencoding{% % Encoding being declared for the document. \def\declaredencoding{\csname #1.enc\endcsname}% % % Supported encodings: names converted to tokens in order to be able % to compare them with \ifx. \def\ascii{\csname US-ASCII.enc\endcsname}% \def\latnine{\csname ISO-8859-15.enc\endcsname}% \def\latone{\csname ISO-8859-1.enc\endcsname}% \def\lattwo{\csname ISO-8859-2.enc\endcsname}% \def\utfeight{\csname UTF-8.enc\endcsname}% % \ifx \declaredencoding \ascii \asciichardefs % \else \ifx \declaredencoding \lattwo \setnonasciicharscatcode\active \lattwochardefs % \else \ifx \declaredencoding \latone \setnonasciicharscatcode\active \latonechardefs % \else \ifx \declaredencoding \latnine \setnonasciicharscatcode\active \latninechardefs % \else \ifx \declaredencoding \utfeight \setnonasciicharscatcode\active \utfeightchardefs % \else \message{Unknown document encoding #1, ignoring.}% % \fi % utfeight \fi % latnine \fi % latone \fi % lattwo \fi % ascii } % A message to be logged when using a character that isn't available % the default font encoding (OT1). % \def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}} % Take account of \c (plain) vs. \, (Texinfo) difference. \def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi} % First, make active non-ASCII characters in order for them to be % correctly categorized when TeX reads the replacement text of % macros containing the character definitions. \setnonasciicharscatcode\active % % Latin1 (ISO-8859-1) character definitions. \def\latonechardefs{% \gdef^^a0{~} \gdef^^a1{\exclamdown} \gdef^^a2{\missingcharmsg{CENT SIGN}} \gdef^^a3{{\pounds}} \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} \gdef^^a5{\missingcharmsg{YEN SIGN}} \gdef^^a6{\missingcharmsg{BROKEN BAR}} \gdef^^a7{\S} \gdef^^a8{\"{}} \gdef^^a9{\copyright} \gdef^^aa{\ordf} \gdef^^ab{\guillemetleft} \gdef^^ac{$\lnot$} \gdef^^ad{\-} \gdef^^ae{\registeredsymbol} \gdef^^af{\={}} % \gdef^^b0{\textdegree} \gdef^^b1{$\pm$} \gdef^^b2{$^2$} \gdef^^b3{$^3$} \gdef^^b4{\'{}} \gdef^^b5{$\mu$} \gdef^^b6{\P} % \gdef^^b7{$^.$} \gdef^^b8{\cedilla\ } \gdef^^b9{$^1$} \gdef^^ba{\ordm} % \gdef^^bb{\guilletright} \gdef^^bc{$1\over4$} \gdef^^bd{$1\over2$} \gdef^^be{$3\over4$} \gdef^^bf{\questiondown} % \gdef^^c0{\`A} \gdef^^c1{\'A} \gdef^^c2{\^A} \gdef^^c3{\~A} \gdef^^c4{\"A} \gdef^^c5{\ringaccent A} \gdef^^c6{\AE} \gdef^^c7{\cedilla C} \gdef^^c8{\`E} \gdef^^c9{\'E} \gdef^^ca{\^E} \gdef^^cb{\"E} \gdef^^cc{\`I} \gdef^^cd{\'I} \gdef^^ce{\^I} \gdef^^cf{\"I} % \gdef^^d0{\DH} \gdef^^d1{\~N} \gdef^^d2{\`O} \gdef^^d3{\'O} \gdef^^d4{\^O} \gdef^^d5{\~O} \gdef^^d6{\"O} \gdef^^d7{$\times$} \gdef^^d8{\O} \gdef^^d9{\`U} \gdef^^da{\'U} \gdef^^db{\^U} \gdef^^dc{\"U} \gdef^^dd{\'Y} \gdef^^de{\TH} \gdef^^df{\ss} % \gdef^^e0{\`a} \gdef^^e1{\'a} \gdef^^e2{\^a} \gdef^^e3{\~a} \gdef^^e4{\"a} \gdef^^e5{\ringaccent a} \gdef^^e6{\ae} \gdef^^e7{\cedilla c} \gdef^^e8{\`e} \gdef^^e9{\'e} \gdef^^ea{\^e} \gdef^^eb{\"e} \gdef^^ec{\`{\dotless i}} \gdef^^ed{\'{\dotless i}} \gdef^^ee{\^{\dotless i}} \gdef^^ef{\"{\dotless i}} % \gdef^^f0{\dh} \gdef^^f1{\~n} \gdef^^f2{\`o} \gdef^^f3{\'o} \gdef^^f4{\^o} \gdef^^f5{\~o} \gdef^^f6{\"o} \gdef^^f7{$\div$} \gdef^^f8{\o} \gdef^^f9{\`u} \gdef^^fa{\'u} \gdef^^fb{\^u} \gdef^^fc{\"u} \gdef^^fd{\'y} \gdef^^fe{\th} \gdef^^ff{\"y} } % Latin9 (ISO-8859-15) encoding character definitions. \def\latninechardefs{% % Encoding is almost identical to Latin1. \latonechardefs % \gdef^^a4{\euro} \gdef^^a6{\v S} \gdef^^a8{\v s} \gdef^^b4{\v Z} \gdef^^b8{\v z} \gdef^^bc{\OE} \gdef^^bd{\oe} \gdef^^be{\"Y} } % Latin2 (ISO-8859-2) character definitions. \def\lattwochardefs{% \gdef^^a0{~} \gdef^^a1{\ogonek{A}} \gdef^^a2{\u{}} \gdef^^a3{\L} \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} \gdef^^a5{\v L} \gdef^^a6{\'S} \gdef^^a7{\S} \gdef^^a8{\"{}} \gdef^^a9{\v S} \gdef^^aa{\cedilla S} \gdef^^ab{\v T} \gdef^^ac{\'Z} \gdef^^ad{\-} \gdef^^ae{\v Z} \gdef^^af{\dotaccent Z} % \gdef^^b0{\textdegree} \gdef^^b1{\ogonek{a}} \gdef^^b2{\ogonek{ }} \gdef^^b3{\l} \gdef^^b4{\'{}} \gdef^^b5{\v l} \gdef^^b6{\'s} \gdef^^b7{\v{}} \gdef^^b8{\cedilla\ } \gdef^^b9{\v s} \gdef^^ba{\cedilla s} \gdef^^bb{\v t} \gdef^^bc{\'z} \gdef^^bd{\H{}} \gdef^^be{\v z} \gdef^^bf{\dotaccent z} % \gdef^^c0{\'R} \gdef^^c1{\'A} \gdef^^c2{\^A} \gdef^^c3{\u A} \gdef^^c4{\"A} \gdef^^c5{\'L} \gdef^^c6{\'C} \gdef^^c7{\cedilla C} \gdef^^c8{\v C} \gdef^^c9{\'E} \gdef^^ca{\ogonek{E}} \gdef^^cb{\"E} \gdef^^cc{\v E} \gdef^^cd{\'I} \gdef^^ce{\^I} \gdef^^cf{\v D} % \gdef^^d0{\DH} \gdef^^d1{\'N} \gdef^^d2{\v N} \gdef^^d3{\'O} \gdef^^d4{\^O} \gdef^^d5{\H O} \gdef^^d6{\"O} \gdef^^d7{$\times$} \gdef^^d8{\v R} \gdef^^d9{\ringaccent U} \gdef^^da{\'U} \gdef^^db{\H U} \gdef^^dc{\"U} \gdef^^dd{\'Y} \gdef^^de{\cedilla T} \gdef^^df{\ss} % \gdef^^e0{\'r} \gdef^^e1{\'a} \gdef^^e2{\^a} \gdef^^e3{\u a} \gdef^^e4{\"a} \gdef^^e5{\'l} \gdef^^e6{\'c} \gdef^^e7{\cedilla c} \gdef^^e8{\v c} \gdef^^e9{\'e} \gdef^^ea{\ogonek{e}} \gdef^^eb{\"e} \gdef^^ec{\v e} \gdef^^ed{\'\i} \gdef^^ee{\^\i} \gdef^^ef{\v d} % \gdef^^f0{\dh} \gdef^^f1{\'n} \gdef^^f2{\v n} \gdef^^f3{\'o} \gdef^^f4{\^o} \gdef^^f5{\H o} \gdef^^f6{\"o} \gdef^^f7{$\div$} \gdef^^f8{\v r} \gdef^^f9{\ringaccent u} \gdef^^fa{\'u} \gdef^^fb{\H u} \gdef^^fc{\"u} \gdef^^fd{\'y} \gdef^^fe{\cedilla t} \gdef^^ff{\dotaccent{}} } % UTF-8 character definitions. % % This code to support UTF-8 is based on LaTeX's utf8.def, with some % changes for Texinfo conventions. It is included here under the GPL by % permission from Frank Mittelbach and the LaTeX team. % \newcount\countUTFx \newcount\countUTFy \newcount\countUTFz \gdef\UTFviiiTwoOctets#1#2{\expandafter \UTFviiiDefined\csname u8:#1\string #2\endcsname} % \gdef\UTFviiiThreeOctets#1#2#3{\expandafter \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname} % \gdef\UTFviiiFourOctets#1#2#3#4{\expandafter \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname} \gdef\UTFviiiDefined#1{% \ifx #1\relax \message{\linenumber Unicode char \string #1 not defined for Texinfo}% \else \expandafter #1% \fi } \begingroup \catcode`\~13 \catcode`\"12 \def\UTFviiiLoop{% \global\catcode\countUTFx\active \uccode`\~\countUTFx \uppercase\expandafter{\UTFviiiTmp}% \advance\countUTFx by 1 \ifnum\countUTFx < \countUTFy \expandafter\UTFviiiLoop \fi} \countUTFx = "C2 \countUTFy = "E0 \def\UTFviiiTmp{% \xdef~{\noexpand\UTFviiiTwoOctets\string~}} \UTFviiiLoop \countUTFx = "E0 \countUTFy = "F0 \def\UTFviiiTmp{% \xdef~{\noexpand\UTFviiiThreeOctets\string~}} \UTFviiiLoop \countUTFx = "F0 \countUTFy = "F4 \def\UTFviiiTmp{% \xdef~{\noexpand\UTFviiiFourOctets\string~}} \UTFviiiLoop \endgroup \begingroup \catcode`\"=12 \catcode`\<=12 \catcode`\.=12 \catcode`\,=12 \catcode`\;=12 \catcode`\!=12 \catcode`\~=13 \gdef\DeclareUnicodeCharacter#1#2{% \countUTFz = "#1\relax \wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}% \begingroup \parseXMLCharref \def\UTFviiiTwoOctets##1##2{% \csname u8:##1\string ##2\endcsname}% \def\UTFviiiThreeOctets##1##2##3{% \csname u8:##1\string ##2\string ##3\endcsname}% \def\UTFviiiFourOctets##1##2##3##4{% \csname u8:##1\string ##2\string ##3\string ##4\endcsname}% \expandafter\expandafter\expandafter\expandafter \expandafter\expandafter\expandafter \gdef\UTFviiiTmp{#2}% \endgroup} \gdef\parseXMLCharref{% \ifnum\countUTFz < "A0\relax \errhelp = \EMsimple \errmessage{Cannot define Unicode char value < 00A0}% \else\ifnum\countUTFz < "800\relax \parseUTFviiiA,% \parseUTFviiiB C\UTFviiiTwoOctets.,% \else\ifnum\countUTFz < "10000\relax \parseUTFviiiA;% \parseUTFviiiA,% \parseUTFviiiB E\UTFviiiThreeOctets.{,;}% \else \parseUTFviiiA;% \parseUTFviiiA,% \parseUTFviiiA!% \parseUTFviiiB F\UTFviiiFourOctets.{!,;}% \fi\fi\fi } \gdef\parseUTFviiiA#1{% \countUTFx = \countUTFz \divide\countUTFz by 64 \countUTFy = \countUTFz \multiply\countUTFz by 64 \advance\countUTFx by -\countUTFz \advance\countUTFx by 128 \uccode `#1\countUTFx \countUTFz = \countUTFy} \gdef\parseUTFviiiB#1#2#3#4{% \advance\countUTFz by "#10\relax \uccode `#3\countUTFz \uppercase{\gdef\UTFviiiTmp{#2#3#4}}} \endgroup \def\utfeightchardefs{% \DeclareUnicodeCharacter{00A0}{\tie} \DeclareUnicodeCharacter{00A1}{\exclamdown} \DeclareUnicodeCharacter{00A3}{\pounds} \DeclareUnicodeCharacter{00A8}{\"{ }} \DeclareUnicodeCharacter{00A9}{\copyright} \DeclareUnicodeCharacter{00AA}{\ordf} \DeclareUnicodeCharacter{00AB}{\guillemetleft} \DeclareUnicodeCharacter{00AD}{\-} \DeclareUnicodeCharacter{00AE}{\registeredsymbol} \DeclareUnicodeCharacter{00AF}{\={ }} \DeclareUnicodeCharacter{00B0}{\ringaccent{ }} \DeclareUnicodeCharacter{00B4}{\'{ }} \DeclareUnicodeCharacter{00B8}{\cedilla{ }} \DeclareUnicodeCharacter{00BA}{\ordm} \DeclareUnicodeCharacter{00BB}{\guillemetright} \DeclareUnicodeCharacter{00BF}{\questiondown} \DeclareUnicodeCharacter{00C0}{\`A} \DeclareUnicodeCharacter{00C1}{\'A} \DeclareUnicodeCharacter{00C2}{\^A} \DeclareUnicodeCharacter{00C3}{\~A} \DeclareUnicodeCharacter{00C4}{\"A} \DeclareUnicodeCharacter{00C5}{\AA} \DeclareUnicodeCharacter{00C6}{\AE} \DeclareUnicodeCharacter{00C7}{\cedilla{C}} \DeclareUnicodeCharacter{00C8}{\`E} \DeclareUnicodeCharacter{00C9}{\'E} \DeclareUnicodeCharacter{00CA}{\^E} \DeclareUnicodeCharacter{00CB}{\"E} \DeclareUnicodeCharacter{00CC}{\`I} \DeclareUnicodeCharacter{00CD}{\'I} \DeclareUnicodeCharacter{00CE}{\^I} \DeclareUnicodeCharacter{00CF}{\"I} \DeclareUnicodeCharacter{00D0}{\DH} \DeclareUnicodeCharacter{00D1}{\~N} \DeclareUnicodeCharacter{00D2}{\`O} \DeclareUnicodeCharacter{00D3}{\'O} \DeclareUnicodeCharacter{00D4}{\^O} \DeclareUnicodeCharacter{00D5}{\~O} \DeclareUnicodeCharacter{00D6}{\"O} \DeclareUnicodeCharacter{00D8}{\O} \DeclareUnicodeCharacter{00D9}{\`U} \DeclareUnicodeCharacter{00DA}{\'U} \DeclareUnicodeCharacter{00DB}{\^U} \DeclareUnicodeCharacter{00DC}{\"U} \DeclareUnicodeCharacter{00DD}{\'Y} \DeclareUnicodeCharacter{00DE}{\TH} \DeclareUnicodeCharacter{00DF}{\ss} \DeclareUnicodeCharacter{00E0}{\`a} \DeclareUnicodeCharacter{00E1}{\'a} \DeclareUnicodeCharacter{00E2}{\^a} \DeclareUnicodeCharacter{00E3}{\~a} \DeclareUnicodeCharacter{00E4}{\"a} \DeclareUnicodeCharacter{00E5}{\aa} \DeclareUnicodeCharacter{00E6}{\ae} \DeclareUnicodeCharacter{00E7}{\cedilla{c}} \DeclareUnicodeCharacter{00E8}{\`e} \DeclareUnicodeCharacter{00E9}{\'e} \DeclareUnicodeCharacter{00EA}{\^e} \DeclareUnicodeCharacter{00EB}{\"e} \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}} \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}} \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}} \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}} \DeclareUnicodeCharacter{00F0}{\dh} \DeclareUnicodeCharacter{00F1}{\~n} \DeclareUnicodeCharacter{00F2}{\`o} \DeclareUnicodeCharacter{00F3}{\'o} \DeclareUnicodeCharacter{00F4}{\^o} \DeclareUnicodeCharacter{00F5}{\~o} \DeclareUnicodeCharacter{00F6}{\"o} \DeclareUnicodeCharacter{00F8}{\o} \DeclareUnicodeCharacter{00F9}{\`u} \DeclareUnicodeCharacter{00FA}{\'u} \DeclareUnicodeCharacter{00FB}{\^u} \DeclareUnicodeCharacter{00FC}{\"u} \DeclareUnicodeCharacter{00FD}{\'y} \DeclareUnicodeCharacter{00FE}{\th} \DeclareUnicodeCharacter{00FF}{\"y} \DeclareUnicodeCharacter{0100}{\=A} \DeclareUnicodeCharacter{0101}{\=a} \DeclareUnicodeCharacter{0102}{\u{A}} \DeclareUnicodeCharacter{0103}{\u{a}} \DeclareUnicodeCharacter{0104}{\ogonek{A}} \DeclareUnicodeCharacter{0105}{\ogonek{a}} \DeclareUnicodeCharacter{0106}{\'C} \DeclareUnicodeCharacter{0107}{\'c} \DeclareUnicodeCharacter{0108}{\^C} \DeclareUnicodeCharacter{0109}{\^c} \DeclareUnicodeCharacter{0118}{\ogonek{E}} \DeclareUnicodeCharacter{0119}{\ogonek{e}} \DeclareUnicodeCharacter{010A}{\dotaccent{C}} \DeclareUnicodeCharacter{010B}{\dotaccent{c}} \DeclareUnicodeCharacter{010C}{\v{C}} \DeclareUnicodeCharacter{010D}{\v{c}} \DeclareUnicodeCharacter{010E}{\v{D}} \DeclareUnicodeCharacter{0112}{\=E} \DeclareUnicodeCharacter{0113}{\=e} \DeclareUnicodeCharacter{0114}{\u{E}} \DeclareUnicodeCharacter{0115}{\u{e}} \DeclareUnicodeCharacter{0116}{\dotaccent{E}} \DeclareUnicodeCharacter{0117}{\dotaccent{e}} \DeclareUnicodeCharacter{011A}{\v{E}} \DeclareUnicodeCharacter{011B}{\v{e}} \DeclareUnicodeCharacter{011C}{\^G} \DeclareUnicodeCharacter{011D}{\^g} \DeclareUnicodeCharacter{011E}{\u{G}} \DeclareUnicodeCharacter{011F}{\u{g}} \DeclareUnicodeCharacter{0120}{\dotaccent{G}} \DeclareUnicodeCharacter{0121}{\dotaccent{g}} \DeclareUnicodeCharacter{0124}{\^H} \DeclareUnicodeCharacter{0125}{\^h} \DeclareUnicodeCharacter{0128}{\~I} \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}} \DeclareUnicodeCharacter{012A}{\=I} \DeclareUnicodeCharacter{012B}{\={\dotless{i}}} \DeclareUnicodeCharacter{012C}{\u{I}} \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}} \DeclareUnicodeCharacter{0130}{\dotaccent{I}} \DeclareUnicodeCharacter{0131}{\dotless{i}} \DeclareUnicodeCharacter{0132}{IJ} \DeclareUnicodeCharacter{0133}{ij} \DeclareUnicodeCharacter{0134}{\^J} \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}} \DeclareUnicodeCharacter{0139}{\'L} \DeclareUnicodeCharacter{013A}{\'l} \DeclareUnicodeCharacter{0141}{\L} \DeclareUnicodeCharacter{0142}{\l} \DeclareUnicodeCharacter{0143}{\'N} \DeclareUnicodeCharacter{0144}{\'n} \DeclareUnicodeCharacter{0147}{\v{N}} \DeclareUnicodeCharacter{0148}{\v{n}} \DeclareUnicodeCharacter{014C}{\=O} \DeclareUnicodeCharacter{014D}{\=o} \DeclareUnicodeCharacter{014E}{\u{O}} \DeclareUnicodeCharacter{014F}{\u{o}} \DeclareUnicodeCharacter{0150}{\H{O}} \DeclareUnicodeCharacter{0151}{\H{o}} \DeclareUnicodeCharacter{0152}{\OE} \DeclareUnicodeCharacter{0153}{\oe} \DeclareUnicodeCharacter{0154}{\'R} \DeclareUnicodeCharacter{0155}{\'r} \DeclareUnicodeCharacter{0158}{\v{R}} \DeclareUnicodeCharacter{0159}{\v{r}} \DeclareUnicodeCharacter{015A}{\'S} \DeclareUnicodeCharacter{015B}{\'s} \DeclareUnicodeCharacter{015C}{\^S} \DeclareUnicodeCharacter{015D}{\^s} \DeclareUnicodeCharacter{015E}{\cedilla{S}} \DeclareUnicodeCharacter{015F}{\cedilla{s}} \DeclareUnicodeCharacter{0160}{\v{S}} \DeclareUnicodeCharacter{0161}{\v{s}} \DeclareUnicodeCharacter{0162}{\cedilla{t}} \DeclareUnicodeCharacter{0163}{\cedilla{T}} \DeclareUnicodeCharacter{0164}{\v{T}} \DeclareUnicodeCharacter{0168}{\~U} \DeclareUnicodeCharacter{0169}{\~u} \DeclareUnicodeCharacter{016A}{\=U} \DeclareUnicodeCharacter{016B}{\=u} \DeclareUnicodeCharacter{016C}{\u{U}} \DeclareUnicodeCharacter{016D}{\u{u}} \DeclareUnicodeCharacter{016E}{\ringaccent{U}} \DeclareUnicodeCharacter{016F}{\ringaccent{u}} \DeclareUnicodeCharacter{0170}{\H{U}} \DeclareUnicodeCharacter{0171}{\H{u}} \DeclareUnicodeCharacter{0174}{\^W} \DeclareUnicodeCharacter{0175}{\^w} \DeclareUnicodeCharacter{0176}{\^Y} \DeclareUnicodeCharacter{0177}{\^y} \DeclareUnicodeCharacter{0178}{\"Y} \DeclareUnicodeCharacter{0179}{\'Z} \DeclareUnicodeCharacter{017A}{\'z} \DeclareUnicodeCharacter{017B}{\dotaccent{Z}} \DeclareUnicodeCharacter{017C}{\dotaccent{z}} \DeclareUnicodeCharacter{017D}{\v{Z}} \DeclareUnicodeCharacter{017E}{\v{z}} \DeclareUnicodeCharacter{01C4}{D\v{Z}} \DeclareUnicodeCharacter{01C5}{D\v{z}} \DeclareUnicodeCharacter{01C6}{d\v{z}} \DeclareUnicodeCharacter{01C7}{LJ} \DeclareUnicodeCharacter{01C8}{Lj} \DeclareUnicodeCharacter{01C9}{lj} \DeclareUnicodeCharacter{01CA}{NJ} \DeclareUnicodeCharacter{01CB}{Nj} \DeclareUnicodeCharacter{01CC}{nj} \DeclareUnicodeCharacter{01CD}{\v{A}} \DeclareUnicodeCharacter{01CE}{\v{a}} \DeclareUnicodeCharacter{01CF}{\v{I}} \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}} \DeclareUnicodeCharacter{01D1}{\v{O}} \DeclareUnicodeCharacter{01D2}{\v{o}} \DeclareUnicodeCharacter{01D3}{\v{U}} \DeclareUnicodeCharacter{01D4}{\v{u}} \DeclareUnicodeCharacter{01E2}{\={\AE}} \DeclareUnicodeCharacter{01E3}{\={\ae}} \DeclareUnicodeCharacter{01E6}{\v{G}} \DeclareUnicodeCharacter{01E7}{\v{g}} \DeclareUnicodeCharacter{01E8}{\v{K}} \DeclareUnicodeCharacter{01E9}{\v{k}} \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}} \DeclareUnicodeCharacter{01F1}{DZ} \DeclareUnicodeCharacter{01F2}{Dz} \DeclareUnicodeCharacter{01F3}{dz} \DeclareUnicodeCharacter{01F4}{\'G} \DeclareUnicodeCharacter{01F5}{\'g} \DeclareUnicodeCharacter{01F8}{\`N} \DeclareUnicodeCharacter{01F9}{\`n} \DeclareUnicodeCharacter{01FC}{\'{\AE}} \DeclareUnicodeCharacter{01FD}{\'{\ae}} \DeclareUnicodeCharacter{01FE}{\'{\O}} \DeclareUnicodeCharacter{01FF}{\'{\o}} \DeclareUnicodeCharacter{021E}{\v{H}} \DeclareUnicodeCharacter{021F}{\v{h}} \DeclareUnicodeCharacter{0226}{\dotaccent{A}} \DeclareUnicodeCharacter{0227}{\dotaccent{a}} \DeclareUnicodeCharacter{0228}{\cedilla{E}} \DeclareUnicodeCharacter{0229}{\cedilla{e}} \DeclareUnicodeCharacter{022E}{\dotaccent{O}} \DeclareUnicodeCharacter{022F}{\dotaccent{o}} \DeclareUnicodeCharacter{0232}{\=Y} \DeclareUnicodeCharacter{0233}{\=y} \DeclareUnicodeCharacter{0237}{\dotless{j}} \DeclareUnicodeCharacter{02DB}{\ogonek{ }} \DeclareUnicodeCharacter{1E02}{\dotaccent{B}} \DeclareUnicodeCharacter{1E03}{\dotaccent{b}} \DeclareUnicodeCharacter{1E04}{\udotaccent{B}} \DeclareUnicodeCharacter{1E05}{\udotaccent{b}} \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}} \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}} \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}} \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}} \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}} \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}} \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}} \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}} \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}} \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}} \DeclareUnicodeCharacter{1E20}{\=G} \DeclareUnicodeCharacter{1E21}{\=g} \DeclareUnicodeCharacter{1E22}{\dotaccent{H}} \DeclareUnicodeCharacter{1E23}{\dotaccent{h}} \DeclareUnicodeCharacter{1E24}{\udotaccent{H}} \DeclareUnicodeCharacter{1E25}{\udotaccent{h}} \DeclareUnicodeCharacter{1E26}{\"H} \DeclareUnicodeCharacter{1E27}{\"h} \DeclareUnicodeCharacter{1E30}{\'K} \DeclareUnicodeCharacter{1E31}{\'k} \DeclareUnicodeCharacter{1E32}{\udotaccent{K}} \DeclareUnicodeCharacter{1E33}{\udotaccent{k}} \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}} \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}} \DeclareUnicodeCharacter{1E36}{\udotaccent{L}} \DeclareUnicodeCharacter{1E37}{\udotaccent{l}} \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}} \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}} \DeclareUnicodeCharacter{1E3E}{\'M} \DeclareUnicodeCharacter{1E3F}{\'m} \DeclareUnicodeCharacter{1E40}{\dotaccent{M}} \DeclareUnicodeCharacter{1E41}{\dotaccent{m}} \DeclareUnicodeCharacter{1E42}{\udotaccent{M}} \DeclareUnicodeCharacter{1E43}{\udotaccent{m}} \DeclareUnicodeCharacter{1E44}{\dotaccent{N}} \DeclareUnicodeCharacter{1E45}{\dotaccent{n}} \DeclareUnicodeCharacter{1E46}{\udotaccent{N}} \DeclareUnicodeCharacter{1E47}{\udotaccent{n}} \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}} \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}} \DeclareUnicodeCharacter{1E54}{\'P} \DeclareUnicodeCharacter{1E55}{\'p} \DeclareUnicodeCharacter{1E56}{\dotaccent{P}} \DeclareUnicodeCharacter{1E57}{\dotaccent{p}} \DeclareUnicodeCharacter{1E58}{\dotaccent{R}} \DeclareUnicodeCharacter{1E59}{\dotaccent{r}} \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}} \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}} \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}} \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}} \DeclareUnicodeCharacter{1E60}{\dotaccent{S}} \DeclareUnicodeCharacter{1E61}{\dotaccent{s}} \DeclareUnicodeCharacter{1E62}{\udotaccent{S}} \DeclareUnicodeCharacter{1E63}{\udotaccent{s}} \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}} \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}} \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}} \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}} \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}} \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}} \DeclareUnicodeCharacter{1E7C}{\~V} \DeclareUnicodeCharacter{1E7D}{\~v} \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}} \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}} \DeclareUnicodeCharacter{1E80}{\`W} \DeclareUnicodeCharacter{1E81}{\`w} \DeclareUnicodeCharacter{1E82}{\'W} \DeclareUnicodeCharacter{1E83}{\'w} \DeclareUnicodeCharacter{1E84}{\"W} \DeclareUnicodeCharacter{1E85}{\"w} \DeclareUnicodeCharacter{1E86}{\dotaccent{W}} \DeclareUnicodeCharacter{1E87}{\dotaccent{w}} \DeclareUnicodeCharacter{1E88}{\udotaccent{W}} \DeclareUnicodeCharacter{1E89}{\udotaccent{w}} \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}} \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}} \DeclareUnicodeCharacter{1E8C}{\"X} \DeclareUnicodeCharacter{1E8D}{\"x} \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}} \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}} \DeclareUnicodeCharacter{1E90}{\^Z} \DeclareUnicodeCharacter{1E91}{\^z} \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}} \DeclareUnicodeCharacter{1E93}{\udotaccent{z}} \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}} \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}} \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}} \DeclareUnicodeCharacter{1E97}{\"t} \DeclareUnicodeCharacter{1E98}{\ringaccent{w}} \DeclareUnicodeCharacter{1E99}{\ringaccent{y}} \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}} \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}} \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}} \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}} \DeclareUnicodeCharacter{1EBC}{\~E} \DeclareUnicodeCharacter{1EBD}{\~e} \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}} \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}} \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}} \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}} \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}} \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}} \DeclareUnicodeCharacter{1EF2}{\`Y} \DeclareUnicodeCharacter{1EF3}{\`y} \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}} \DeclareUnicodeCharacter{1EF8}{\~Y} \DeclareUnicodeCharacter{1EF9}{\~y} \DeclareUnicodeCharacter{2013}{--} \DeclareUnicodeCharacter{2014}{---} \DeclareUnicodeCharacter{2018}{\quoteleft} \DeclareUnicodeCharacter{2019}{\quoteright} \DeclareUnicodeCharacter{201A}{\quotesinglbase} \DeclareUnicodeCharacter{201C}{\quotedblleft} \DeclareUnicodeCharacter{201D}{\quotedblright} \DeclareUnicodeCharacter{201E}{\quotedblbase} \DeclareUnicodeCharacter{2022}{\bullet} \DeclareUnicodeCharacter{2026}{\dots} \DeclareUnicodeCharacter{2039}{\guilsinglleft} \DeclareUnicodeCharacter{203A}{\guilsinglright} \DeclareUnicodeCharacter{20AC}{\euro} \DeclareUnicodeCharacter{2192}{\expansion} \DeclareUnicodeCharacter{21D2}{\result} \DeclareUnicodeCharacter{2212}{\minus} \DeclareUnicodeCharacter{2217}{\point} \DeclareUnicodeCharacter{2261}{\equiv} }% end of \utfeightchardefs % US-ASCII character definitions. \def\asciichardefs{% nothing need be done \relax } % Make non-ASCII characters printable again for compatibility with % existing Texinfo documents that may use them, even without declaring a % document encoding. % \setnonasciicharscatcode \other \message{formatting,} \newdimen\defaultparindent \defaultparindent = 15pt \chapheadingskip = 15pt plus 4pt minus 2pt \secheadingskip = 12pt plus 3pt minus 2pt \subsecheadingskip = 9pt plus 2pt minus 2pt % Prevent underfull vbox error messages. \vbadness = 10000 % Don't be so finicky about underfull hboxes, either. \hbadness = 2000 % Following George Bush, get rid of widows and orphans. \widowpenalty=10000 \clubpenalty=10000 % Use TeX 3.0's \emergencystretch to help line breaking, but if we're % using an old version of TeX, don't do anything. We want the amount of % stretch added to depend on the line length, hence the dependence on % \hsize. We call this whenever the paper size is set. % \def\setemergencystretch{% \ifx\emergencystretch\thisisundefined % Allow us to assign to \emergencystretch anyway. \def\emergencystretch{\dimen0}% \else \emergencystretch = .15\hsize \fi } % Parameters in order: 1) textheight; 2) textwidth; % 3) voffset; 4) hoffset; 5) binding offset; 6) topskip; % 7) physical page height; 8) physical page width. % % We also call \setleading{\textleading}, so the caller should define % \textleading. The caller should also set \parskip. % \def\internalpagesizes#1#2#3#4#5#6#7#8{% \voffset = #3\relax \topskip = #6\relax \splittopskip = \topskip % \vsize = #1\relax \advance\vsize by \topskip \outervsize = \vsize \advance\outervsize by 2\topandbottommargin \pageheight = \vsize % \hsize = #2\relax \outerhsize = \hsize \advance\outerhsize by 0.5in \pagewidth = \hsize % \normaloffset = #4\relax \bindingoffset = #5\relax % \ifpdf \pdfpageheight #7\relax \pdfpagewidth #8\relax % if we don't reset these, they will remain at "1 true in" of % whatever layout pdftex was dumped with. \pdfhorigin = 1 true in \pdfvorigin = 1 true in \fi % \setleading{\textleading} % \parindent = \defaultparindent \setemergencystretch } % @letterpaper (the default). \def\letterpaper{{\globaldefs = 1 \parskip = 3pt plus 2pt minus 1pt \textleading = 13.2pt % % If page is nothing but text, make it come out even. \internalpagesizes{607.2pt}{6in}% that's 46 lines {\voffset}{.25in}% {\bindingoffset}{36pt}% {11in}{8.5in}% }} % Use @smallbook to reset parameters for 7x9.25 trim size. \def\smallbook{{\globaldefs = 1 \parskip = 2pt plus 1pt \textleading = 12pt % \internalpagesizes{7.5in}{5in}% {-.2in}{0in}% {\bindingoffset}{16pt}% {9.25in}{7in}% % \lispnarrowing = 0.3in \tolerance = 700 \hfuzz = 1pt \contentsrightmargin = 0pt \defbodyindent = .5cm }} % Use @smallerbook to reset parameters for 6x9 trim size. % (Just testing, parameters still in flux.) \def\smallerbook{{\globaldefs = 1 \parskip = 1.5pt plus 1pt \textleading = 12pt % \internalpagesizes{7.4in}{4.8in}% {-.2in}{-.4in}% {0pt}{14pt}% {9in}{6in}% % \lispnarrowing = 0.25in \tolerance = 700 \hfuzz = 1pt \contentsrightmargin = 0pt \defbodyindent = .4cm }} % Use @afourpaper to print on European A4 paper. \def\afourpaper{{\globaldefs = 1 \parskip = 3pt plus 2pt minus 1pt \textleading = 13.2pt % % Double-side printing via postscript on Laserjet 4050 % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm. % To change the settings for a different printer or situation, adjust % \normaloffset until the front-side and back-side texts align. Then % do the same for \bindingoffset. You can set these for testing in % your texinfo source file like this: % @tex % \global\normaloffset = -6mm % \global\bindingoffset = 10mm % @end tex \internalpagesizes{673.2pt}{160mm}% that's 51 lines {\voffset}{\hoffset}% {\bindingoffset}{44pt}% {297mm}{210mm}% % \tolerance = 700 \hfuzz = 1pt \contentsrightmargin = 0pt \defbodyindent = 5mm }} % Use @afivepaper to print on European A5 paper. % From romildo@urano.iceb.ufop.br, 2 July 2000. % He also recommends making @example and @lisp be small. \def\afivepaper{{\globaldefs = 1 \parskip = 2pt plus 1pt minus 0.1pt \textleading = 12.5pt % \internalpagesizes{160mm}{120mm}% {\voffset}{\hoffset}% {\bindingoffset}{8pt}% {210mm}{148mm}% % \lispnarrowing = 0.2in \tolerance = 800 \hfuzz = 1.2pt \contentsrightmargin = 0pt \defbodyindent = 2mm \tableindent = 12mm }} % A specific text layout, 24x15cm overall, intended for A4 paper. \def\afourlatex{{\globaldefs = 1 \afourpaper \internalpagesizes{237mm}{150mm}% {\voffset}{4.6mm}% {\bindingoffset}{7mm}% {297mm}{210mm}% % % Must explicitly reset to 0 because we call \afourpaper. \globaldefs = 0 }} % Use @afourwide to print on A4 paper in landscape format. \def\afourwide{{\globaldefs = 1 \afourpaper \internalpagesizes{241mm}{165mm}% {\voffset}{-2.95mm}% {\bindingoffset}{7mm}% {297mm}{210mm}% \globaldefs = 0 }} % @pagesizes TEXTHEIGHT[,TEXTWIDTH] % Perhaps we should allow setting the margins, \topskip, \parskip, % and/or leading, also. Or perhaps we should compute them somehow. % \parseargdef\pagesizes{\pagesizesyyy #1,,\finish} \def\pagesizesyyy#1,#2,#3\finish{{% \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi \globaldefs = 1 % \parskip = 3pt plus 2pt minus 1pt \setleading{\textleading}% % \dimen0 = #1\relax \advance\dimen0 by \voffset % \dimen2 = \hsize \advance\dimen2 by \normaloffset % \internalpagesizes{#1}{\hsize}% {\voffset}{\normaloffset}% {\bindingoffset}{44pt}% {\dimen0}{\dimen2}% }} % Set default to letter. % \letterpaper \message{and turning on texinfo input format.} % DEL is a comment character, in case @c does not suffice. \catcode`\^^? = 14 % Define macros to output various characters with catcode for normal text. \catcode`\"=\other \catcode`\~=\other \catcode`\^=\other \catcode`\_=\other \catcode`\|=\other \catcode`\<=\other \catcode`\>=\other \catcode`\+=\other \catcode`\$=\other \def\normaldoublequote{"} \def\normaltilde{~} \def\normalcaret{^} \def\normalunderscore{_} \def\normalverticalbar{|} \def\normalless{<} \def\normalgreater{>} \def\normalplus{+} \def\normaldollar{$}%$ font-lock fix % This macro is used to make a character print one way in \tt % (where it can probably be output as-is), and another way in other fonts, % where something hairier probably needs to be done. % % #1 is what to print if we are indeed using \tt; #2 is what to print % otherwise. Since all the Computer Modern typewriter fonts have zero % interword stretch (and shrink), and it is reasonable to expect all % typewriter fonts to have this, we can check that font parameter. % \def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi} % Same as above, but check for italic font. Actually this also catches % non-italic slanted fonts since it is impossible to distinguish them from % italic fonts. But since this is only used by $ and it uses \sl anyway % this is not a problem. \def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi} % Turn off all special characters except @ % (and those which the user can use as if they were ordinary). % Most of these we simply print from the \tt font, but for some, we can % use math or other variants that look better in normal text. \catcode`\"=\active \def\activedoublequote{{\tt\char34}} \let"=\activedoublequote \catcode`\~=\active \def~{{\tt\char126}} \chardef\hat=`\^ \catcode`\^=\active \def^{{\tt \hat}} \catcode`\_=\active \def_{\ifusingtt\normalunderscore\_} \let\realunder=_ % Subroutine for the previous macro. \def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em } \catcode`\|=\active \def|{{\tt\char124}} \chardef \less=`\< \catcode`\<=\active \def<{{\tt \less}} \chardef \gtr=`\> \catcode`\>=\active \def>{{\tt \gtr}} \catcode`\+=\active \def+{{\tt \char 43}} \catcode`\$=\active \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix % If a .fmt file is being used, characters that might appear in a file % name cannot be active until we have parsed the command line. % So turn them off again, and have \everyjob (or @setfilename) turn them on. % \otherifyactive is called near the end of this file. \def\otherifyactive{\catcode`+=\other \catcode`\_=\other} % Used sometimes to turn off (effectively) the active characters even after % parsing them. \def\turnoffactive{% \normalturnoffactive \otherbackslash } \catcode`\@=0 % \backslashcurfont outputs one backslash character in current font, % as in \char`\\. \global\chardef\backslashcurfont=`\\ \global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work % \realbackslash is an actual character `\' with catcode other, and % \doublebackslash is two of them (for the pdf outlines). {\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}} % In texinfo, backslash is an active character; it prints the backslash % in fixed width font. \catcode`\\=\active @def@normalbackslash{{@tt@backslashcurfont}} % On startup, @fixbackslash assigns: % @let \ = @normalbackslash % \rawbackslash defines an active \ to do \backslashcurfont. % \otherbackslash defines an active \ to be a literal `\' character with % catcode other. @gdef@rawbackslash{@let\=@backslashcurfont} @gdef@otherbackslash{@let\=@realbackslash} % Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of % the literal character `\'. % @def@normalturnoffactive{% @let\=@normalbackslash @let"=@normaldoublequote @let~=@normaltilde @let^=@normalcaret @let_=@normalunderscore @let|=@normalverticalbar @let<=@normalless @let>=@normalgreater @let+=@normalplus @let$=@normaldollar %$ font-lock fix @markupsetuplqdefault @markupsetuprqdefault @unsepspaces } % Make _ and + \other characters, temporarily. % This is canceled by @fixbackslash. @otherifyactive % If a .fmt file is being used, we don't want the `\input texinfo' to show up. % That is what \eatinput is for; after that, the `\' should revert to printing % a backslash. % @gdef@eatinput input texinfo{@fixbackslash} @global@let\ = @eatinput % On the other hand, perhaps the file did not have a `\input texinfo'. Then % the first `\' in the file would cause an error. This macro tries to fix % that, assuming it is called before the first `\' could plausibly occur. % Also turn back on active characters that might appear in the input % file name, in case not using a pre-dumped format. % @gdef@fixbackslash{% @ifx\@eatinput @let\ = @normalbackslash @fi @catcode`+=@active @catcode`@_=@active } % Say @foo, not \foo, in error messages. @escapechar = `@@ % These look ok in all fonts, so just make them not special. @catcode`@& = @other @catcode`@# = @other @catcode`@% = @other @c Finally, make ` and ' active, so that txicodequoteundirected and @c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we @c don't make ` and ' active, @code will not get them as active chars. @c Do this last of all since we use ` in the previous @catcode assignments. @catcode`@'=@active @catcode`@`=@active @markupsetuplqdefault @markupsetuprqdefault @c Local variables: @c eval: (add-hook 'write-file-hooks 'time-stamp) @c page-delimiter: "^\\\\message" @c time-stamp-start: "def\\\\texinfoversion{" @c time-stamp-format: "%:y-%02m-%02d.%02H" @c time-stamp-end: "}" @c End: @c vim:sw=2: @ignore arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115 @end ignore hkl-4.0.3/config/config.sub0000755000175000017500000010344511402461122012445 00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 # Free Software Foundation, Inc. timestamp='2010-01-22' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted GNU ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nios | nios2 \ | ns16k | ns32k \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | ubicom32 \ | v850 | v850e \ | we32k \ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12 | picochip) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile-* | tilegx-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze) basic_machine=microblaze-xilinx ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tic55x | c55x*) basic_machine=tic55x-unknown os=-coff ;; tic6x | c6x*) basic_machine=tic6x-unknown os=-coff ;; # This must be matched before tile*. tilegx*) basic_machine=tilegx-unknown os=-linux-gnu ;; tile*) basic_machine=tile-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: hkl-4.0.3/hkl.pc.in0000644000175000017500000000044411366756371010745 00000000000000prefix=@prefix@ exec_prefix=${prefix} libdir=${exec_prefix}/lib includedir=${prefix}/include Name: hkl Description: Library for hkl Diffractometer computation Version: @VERSION@ URL: http://repo.or.cz/w/hkl.git Requires: gsl Libs: -L${libdir} -lhkl Libs.private: -lm Cflags: -I${includedir}