[sword-devel] SWORD 1.7.0RC2

Greg Hellings greg.hellings at gmail.com
Tue Aug 6 06:49:43 MST 2013


On Tue, Aug 6, 2013 at 8:05 AM, Troy A. Griffitts <scribe at crosswire.org>wrote:

> For example, consider the following code:
>
> class Q_CORE_EXPORT QString
> {
> public:
> ...
> #ifndef QT_NO_REGEXP
>     int indexOf(const QRegExp &, int from = 0) const;
>     int lastIndexOf(const QRegExp &, int from = -1) const;
>     inline QBool contains(const QRegExp &rx) const { return
> QBool(indexOf(rx) != -1); }
>     int count(const QRegExp &) const;
>
>     int indexOf(QRegExp &, int from = 0) const;
>     int lastIndexOf(QRegExp &, int from = -1) const;
>     inline QBool contains(QRegExp &rx) const { return QBool(indexOf(rx) !=
> -1); }
> #endif
>
> ...
>
>
> If this library was compiled with QT_NO_REGEXP defined, and you include
> this header file in your project and build without QT_NO_REGEXP defined,
> then your .o files will expect different vtables than what are provided by
> the compiled library.


It seems like relying on pkg-config to convey this, for a library that is
otherwise so cross-platform compatible, is a bad strategy. pkg-config is
available on every Linux distribution I've used but it's definitely not
guaranteed to be present in other Unixes (I had trouble installing it on
Solaris the last time I built apps there) and Windows lacks any coherent
implementation of this.

Following on your example, Qt on Fedora includes a file
/usr/include/QtCore/qconfig-64.h and several others that define the
necessary pre-processor macros. Installing such a file for Sword would
alleviate the need to depend on pkg-config where it's not available.
BibleTime does not rely on pkg-config because it's not available when the
official Windows distribution is built. Xiphos builds its official Windows
version by cross-compiling within Linux and thus is able to leverage
pkg-config. BibleTime has, hitherto, done its Sword version checking by
compiling a sample program and running it, taking advantage of the material
in SWVersion. This is, in general, a bad hack and doesn't lend itself to
cross-building very well. Choosing to ensconce this information into a
config.h file - even if it is installed as something other than config.h -
would go a long way to improving this behavior.

For reference, I have installed config.h files from wxWidgets, CLucene,
grub and Perl on my system right now.  Far more if we include files named
*config.h (libstdc++, fontconfig, freetype2, gtk-3.0/gdk, json, python,
ICU, glib2). If we later implement Jaak's suggestion to change includes
from #include <swkey.h> to #include <sword/swkey.h> and such, that would
allow us to directly install config.h and reference it as #include
<sword/config.h> when it's needed. Changing its name to swconfig.h (which
seems to be more the consensus among other libraries) would make the change
relatively trivial. Maybe, then, it's something that wouldn't be a 1.7
thing but could be targeted for 1.8?

--Greg


>
>
>
>
>
> On 08/06/2013 02:37 PM, Jaak Ristioja wrote:
>
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA1
>>
>> On 06.08.2013 14:54, Troy A. Griffitts wrote:
>>
>>> Remember, just because you compile and link doesn't mean you've
>>> successfully build your app against the exact state of the headers
>>> when the library was compiled and this can be dangerous.
>>>
>> Can you please be more specific about this danger?
>>
>> Blessings,
>> Jaak
>> -----BEGIN PGP SIGNATURE-----
>> Version: GnuPG v2.0.20 (GNU/Linux)
>>
>> iQgcBAEBAgAGBQJSAO4VAAoJEEqsYm**Et1rCOFsI//3EZpmRSfmleQlAU0/**myrO+7
>> J9myjJrWzI2ysELx6Urb6u/**ErufIjakyg+**YWyd9ftJ40DMtBa4goVmP0SYsg3vfv
>> 2NwESFdJhVEYWlNZqVcW+**2utH0dDpCbPY4sovDUF6Xrum3fnDxe**iuIc55Pf2HOrF
>> TlpK6lShxA0sSd3+**VsYmvbhW0zVfMt8Fjr5yM6t0rc7FSw**Wp5eni1W13/wmoK6l+
>> cbTsHDEbf7oWdynonxVZag3uewpAdX**IzJ0r7gZ0+sRKvQCwqRBlAclJFGL/**feUjS
>> jhGbtsnSjCKvfpKojfWzvgsaw100yH**cVDjBFni4ubwEv/**XpvHaNoh126G7x929ln
>> 65YVOHBZVVbSdGU6PpVn/GC8X7WT/**VTa+IEJxl7vhK/**TcDRo5L1wpo0RgY75DT6E
>> dvGoPw/**umPZYiR5mz0Rv1dk8V4VpJi7DV3n8Z**zNC6KsZELwsBelW1r0JsUCGJ3Lo
>> l8Y3jKDmIPRzU3Ej0X/**6KqZyNdunPXbPDBDxuQAq5WFtiKVOs**AfZAYso2dvfuTV6
>> EFs7k5mC4sAgZuVXX1nLJMCOw93qZA**fsgDkhGs+GjjEzwk4d7Rtm7hcJL/**2lY89e
>> f3DYTvnOKI3NFeB/Lc3mNOxSe/**uqt5AfR2J2KX7yl+cXZMOyDbrSY+**AznfHzr2GS
>> 5wJPS2RNQ/vgH87IWTkVAhiLAwczg+**rPhZedDXQ6Qba4zG+**gBYNbxYQ7jCyJc2Yh
>> wshNLsTYgkXMwH0jE+**vXz7xV6iQUn307fLRGe2wKZMDlgDA1**feh8WOcQukXCKe9b
>> wCX6t/Nv7831fZAN+A22N+/VNQ/**4NQ0OxuWv4GY+**2txI3hgSKqUj9niZe0l6N4qJ
>> wKJUzpFhPFy9RR1DF1/**SdZCFznM2VdkIWnWlWLQc8qQMGqJgo**0aiVtw3Ks7dp9EJ
>> /**DXN20QCmJgPcQHpomuWBj0kBPCS6Ys**3dijuysQqD9UsfSWFHTMMa6nCpQ8TD**rhg
>> MuYBVhNIjgMT5v0mR29v9glP/**VwEEYkiv1K0s7+929y96lG39YX/**wPhdpkooi4/t
>> d/**wBbHC0atv2hhQ9HQDSj0TdXlJlO9SR**gJi4IlNejP7VsZDu5HJ070owx8nQIk**bT
>> S+Ri7Z6L4/aaCAr+**famomlNE8JOzm87aJ+**O8zL2xMTzILy+/+jlSzkDF/oMM0ON/
>> JyCzNWKv0dQU+VMW+**STjLD1npxODkOhA09RfmomqXmR8eVe**NbZOGarUSfJd+ZExS
>> QtVcbCL37Cuhz6LMWshQXmURj2AQzH**XxIu0Z8bh30S4nMKoXEYLxqlf1ZfJj**ZRMv
>> TrCO7/v7rkq/x7/MANVD1/**UYI53SA1wwgHSPn9/**guAj1sRTYh8pLVOzR/8vbVTVH
>> vqAT3ZnezxCpXahxn9ABdYhEChSJH2**fv1PTR5az1JvZVoLZlYe5kkNVYIbx8**hMH7
>> xm0JfztCcPEDkZ3eNfc1N0AA3aYEOG**Fgk5gU8zXRnU3tq/50/**QCay0H7fqT423Pb
>> cv7gqcRbiQCZsEK90teXJJLnR+**lIGPMFrvj9amLwcTzZ1j9WMnxb2ptw**DjRSBIo1
>> c6X+EP153/DM+**bAg5HxwZedcYdEdUOW6hiuQrWWHKcR**VTeIgDous9TTi4h0mviwZ
>> 2dvl54sEoWs4AED/**MR6jpf04ABu8HPN5i83e0yIjUuIAyZ**6iTYxjYSiLxlH86nVo
>> Po0H0a5W2C3OXkFDj0XgX3DiAIh4zZ**JhaWz0yX/XTsCxcKkVKhIfzsUJ+**x8ddDvc
>> As3sWxYttikQfzv0o2X8FzGdFEWs2+**So6jJy9ge1qSHuewVaZBAreVLauLLv**SPKe
>> Mbe1/**IWETgWXFZgeQ6Qr72JlC8d4zxL4sT8**nnh5SacSvlqTFZfiaEr73dZ3tHZAS
>> YYemINNFZX/Nkc4qjdGqp+**vxkM9LGSTRyf6umuwZRt7vMaq6TR/**RiE3bS51NUbU8
>> w4Jhdc7dZA/**Jf7Z5seYaIjn3ljrBDy6+**Zzp5OxsW45ZmMhbLg3BE4M9YaIiB11**HV
>> /**Eh3RN5aMCYGDOIt9hUHh3exSkZquUX**vXj6AKUJT0AlWhgyTgrDJ39oYxXRDk**Luq
>> G+73l3vp52T/**6bpzMvIvqCQxrgGLbHsKQjkZaDDVin**K1krkFMwjVtkRZQMwSwZeU
>> kOZZN5DC4i0wJPxMk0qawHMgMwHz+**T9TNXVppPRtmbVyCENOC5Bgbyn7+**25qAiji
>> SQGw/eR+**h3ro9lquNUD6n1UZxoFABl99EgYSKB**3jYQfsMWbbZTPa8lfG7QlOJazP
>> CD8YH198RcqAngq8F8CpHBT9xE3et3**5hon7u/VBakpI+**650BEHG4lMvMrMp5CtCD
>> gsMDsSnIyPnjVYZ2i2/CYQ+M/**J9Hsbm7I9yBBm7HfakWuOiWiKiHuPV**869ZSd7+v
>> N5J3wWDp9vEryOk9+**FBiqrHbdtQ6nPkmhPfEN5yExF9elN0**wXhoIi+s9c5h36aU/
>> S1arxeReDQzE0kvjSaCnkO5TnH9Cnw**NgxZgnYxwxP8HpmNTVi+**f9eM9rBzVxqUUZ
>> Gq6nQSHYzEm4oTb+**lCPUEfkhJ9Z2SXsGC/4v4Xd/**O1HjKgzSeM0GNzo9XyoQ1yvu
>> 9L1AqHxNd8w+k+AAmN3DFSYQfFFkD+**xpw6PA/+**E4rABTnDQCmV2lxRKCLwlRTSEZ
>> ZKjvl8KrSV8R7xLh+**9W7Qad3ocUxfMghVL8B8VXua/**n86R7QhaezqVjSYGKeZTj/
>> 2JE7e7HORaYbSP/f+NqW
>> =I6Gb
>> -----END PGP SIGNATURE-----
>>
>> ______________________________**_________________
>> sword-devel mailing list: sword-devel at crosswire.org
>> http://www.crosswire.org/**mailman/listinfo/sword-devel<http://www.crosswire.org/mailman/listinfo/sword-devel>
>> Instructions to unsubscribe/change your settings at above page
>>
>
>
> ______________________________**_________________
> sword-devel mailing list: sword-devel at crosswire.org
> http://www.crosswire.org/**mailman/listinfo/sword-devel<http://www.crosswire.org/mailman/listinfo/sword-devel>
> Instructions to unsubscribe/change your settings at above page
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.crosswire.org/pipermail/sword-devel/attachments/20130806/cba55a74/attachment.html>


More information about the sword-devel mailing list