[sword-devel] bcpp project files

Charles W. Crary sword-devel@crosswire.org
Thu, 4 Dec 2003 09:56:50 -0800


Guys,
 
I've been trying to build 1.5.6 and the current version in CVS in the
Standard (cheap) edition of Borland C++Builder 5.  I've run into a couple of
problems and the occaisional solution and wanted to run them by the list.
 
I'm primarily a Pascal and SQL developer, so please pardon my ignorance.
 
The first issue:  When trying to build the library using
lib\bcppmake\libsword.bpr or lib\bcppmake\libsword6icu.bpr I had problems
when linking - the linker said that it couldn't fine cg32.lib.  After a bit
of research I discovered that the library belongs to CodeGuard, an extra
tool that Borland ships with the Enterprise version of C++Builder.  There is
no GUI access to CodeGuard options in the cheaper versions of C++Builder,
but I removed the line indicated below from the linker section of the
Borland project files (*.bpr).
 
  <LINKER>
    <ALLOBJ value="$(OBJFILES)"/>
    <ALLLIB value="cg32.lib"/>        <-- remove this line!
  </LINKER>

Once this line was gone, I was able to build the library.

I'm not familiar with CodeGuard, and haven't gotten to where I can test the
library to make sure it works without it.  But if it isn't necessary, I
think it would make sense to remove the reference so those of us with the
cheaper versions of the C++Builder won't have to mess with it in the future.

Second item: While trying to figure this out I got the current code from CVS
and played around with it.  The *.bpf files in lib\bcppmake (which list the
files to build) appear to be empty.  I may be betraying my ignorance here,
but the same files in 1.5.6 list quite a number of files, none of which
appear in the CVS version.  When I try to Build the projects from CVS, it is
finished immediately, so I suspect that some files are missing.  Are these
project files in the midst of revision?  It isn't a big deal, since I have
access to 1.5.6, but I *am* curious.

Third item: I am trying to build the flat API version of the library
(bindings\bcppmake\sword.bpr).  I've gotten icu-sword from CVS and have
built it successfully, but when I try to build the flat API, the linker
complains that it can't find ICUI18N.LIB.  That doesn't appear to be in the
icu-sword project, so I'm not sure where to go.  

I did see on the list that someone (Chris maybe?) had updated the ICU stuff
in the last few months.  Perhaps bindings\bcppmake\sword.bpf hasn't been
updated to reflect the new ICU libraries?  Currently it looks like this:

     USEUNIT("sword.c");
     USEUNIT("..\flatapi.cpp");
     USELIB("..\..\lib\libsword.lib");
     USELIB("..\..\..\icu-sword\as_is\borland\icui18n.lib");
     USELIB("..\..\..\icu-sword\as_is\borland\icudatab.lib");
     USELIB("..\..\..\icu-sword\as_is\borland\icucommon.lib");
 
//--------------------------------------------------------------------------
-
     This file is used by the project manager only and should be treated
like the project file


     DllEntryPoint

I've tried replacing the ICU libraries above with the five ICU libraries in
the current CVS (icuuc.lib, icuin.lib, icuio.lib, icule.lib, iculx.lib), but
I get an error on linking:

[Linker Error] Unresolved external '_icuudt26_dat' referenced from
ICU-SWOD\AS_IS\BORLAND\ICUUC.LIB|udata

If anyone could give me a hint as to how to proceed, I would appreciate it.

Lest I be accused of complaining, I think that this is a great project, and
I appreciate all the work you guys have done on it.

Thanks,

Charles Crary