Thread overview
Building recls-1.7.2 with VC6
Feb 15, 2006
Carlos Smith
Feb 15, 2006
Matthew
Feb 20, 2006
Carlos Smith
Feb 17, 2006
Matthew
Feb 20, 2006
Carlos Smith
Re: [recls] Building recls-1.7.2 with VC6
Jun 18, 2006
Matthew
February 15, 2006
Hi,

I am working to produce a benchmark for
recls on my computer.

I have :
Ruby 1.8.4 (mswin32 installer)
VC6, Mingw 3.4.5, Cygwin 3.4.4
dmd .146

I just downloaded

recls 1.7.2
stlsoft 1.9.2 beta2

I am trying to buid recls.dsp
The build stopped with an error
for missing pch.cpp file.

I tried the makefile, i got:
NMAKE : fatal error U1073: don't know how to make '..\..\sample\sample_directories_C\sample_directories_C.c'

So i tried with recls 1.7.1 : same thing
And i finally tried with recls 1.6.4, which worked
after some work.

There is a lot code in there and very few instructions.

There is no instructions on how to install
the package. I know this is simple to do, but
there is a lot of environment vars to set if
you want to build everything.

Also, some of the makefiles, has references to
"P:\Programs..." in them.
So the linker does not find the libraries.
This should be explained.
There is an invalid option to the linker
-LTCG (or is it -LTGC )

The build coul be automated (ie, no more
directory walking by hand), in order to
build, eg: the vc6 configuration.

May be, it's already there, but i did not
found it.

If you want i can test all the VC6 stuff
an report what is working and what is not.

A lot of hard work had gone in there...
So i do not want to criticize, but i feel
it's not easy to build.

En plus, vous êtes débordé de travail, et
je viens en rajouter sur la pile.
Aussi, prenz tout ça avec un grain de sel,
et répondez moi quand vous pourrez

Thanks for your attention.

Carlos.




February 15, 2006
Carlos,

Thanks for taking the trouble to post.

The project is not well documented, I certainly concede that point.

The intention is build for a given compiler using the makefile in <recls-dir>/build/<compiler-id>, so for VC6, you need to open a command prompt at the <recls-dir>/build/vc6 directory, and execute nmake. The STLSOFT_INCLUDE environment variable must be defined (and the makefile will let you know about this), to the root stlsoft include directory (the one under which the atlstl, comstl, stlsoft, winstl etc. directories) reside.

I have plans to move recls to SourceForge, and in doing so address all the problems about docs, READMEs, installation, etc., but I just haven't found the time. (This is one of the reasons I like STLSoft: it's 100% header-only, so it's only problem is the paucity of the documentation.)

One of the reasons why my other libs - cstring, b64, openrj, recls, and so on - are less well-known/popular than they might be if judged on code alone is that all the other stuff - installers, readmes, docs, etc. - are pretty much a dark art to me. It sure would be good to find a guide-to-open-source-lib-distribution somewhere. ;-)

I'd love it if someone volunteered to help me. But I understand that everyone else is likely to be as busy as me. ;-/

Let me know if the advice I've given for building is not sufficient.

Cheers

Matthew




"Carlos Smith" <carlos.smith@sympatico.ca> wrote in message news:dsuic2$e5i$1@digitaldaemon.com...
> Hi,
>
> I am working to produce a benchmark for
> recls on my computer.
>
> I have :
> Ruby 1.8.4 (mswin32 installer)
> VC6, Mingw 3.4.5, Cygwin 3.4.4
> dmd .146
>
> I just downloaded
>
> recls 1.7.2
> stlsoft 1.9.2 beta2
>
> I am trying to buid recls.dsp
> The build stopped with an error
> for missing pch.cpp file.
>
> I tried the makefile, i got:
> NMAKE : fatal error U1073: don't know how to make
> '..\..\sample\sample_directories_C\sample_directories_C.c'
>
> So i tried with recls 1.7.1 : same thing
> And i finally tried with recls 1.6.4, which worked
> after some work.
>
> There is a lot code in there and very few instructions.
>
> There is no instructions on how to install
> the package. I know this is simple to do, but
> there is a lot of environment vars to set if
> you want to build everything.
>
> Also, some of the makefiles, has references to
> "P:\Programs..." in them.
> So the linker does not find the libraries.
> This should be explained.
> There is an invalid option to the linker
> -LTCG (or is it -LTGC )
>
> The build coul be automated (ie, no more
> directory walking by hand), in order to
> build, eg: the vc6 configuration.
>
> May be, it's already there, but i did not
> found it.
>
> If you want i can test all the VC6 stuff
> an report what is working and what is not.
>
> A lot of hard work had gone in there...
> So i do not want to criticize, but i feel
> it's not easy to build.
>
> En plus, vous êtes débordé de travail, et
> je viens en rajouter sur la pile.
> Aussi, prenz tout ça avec un grain de sel,
> et répondez moi quand vous pourrez
>
> Thanks for your attention.
>
> Carlos.
>
>
>
> 


February 16, 2006
Carlos Smith wrote:
> Hi,
> 
> I tried the makefile, i got:
> NMAKE : fatal error U1073: don't know how to make '..\..\sample\sample_directories_C\sample_directories_C.c'


Hi Carlos.

I had the same problem today and the error appears because the sample programs where removed from the distribution but not from the makefile.

I had to modify the makefile on the definition of the TARGETS variable like the following to exclude the samples from the building process:

# $(TARGETS_SAMPLE) \
TARGETS = \
 $(TARGETS_TEST) \
 $(TARGETS_LIBS) \

After that it throw this error:

..\..\test\C\C.c(512) : warning C4996: 'sprintf' was declared deprecated
        C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE\stdio.h(345) : see declaration of 'sprintf'
        Message: 'This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'

Which I fixed by adding:

CC_TOOL_FLAGS		= /D_CRT_SECURE_NO_DEPRECATE=1

CPPC_TOOL_FLAGS		= /D_CRT_SECURE_NO_DEPRECATE=1

And then some versions of the test programs didn't build because of duplicated symbols:

        link -nologo -OPT:NOWIN98 -LTCG -out:..\..\bin\recls.test.C.vc8.dll.debug.exe user32.lib wininet.lib ole32.lib oleaut32.lib .\C.dll.debug.obj ..\..\lib\recls.1.vc8.dll.debug.lib
msvcprtd.lib(MSVCP80D.dll) : error LNK2005: "public: char * __thiscall std::allocator<char>::allocate(unsigned int,void const *)" (?allocate@?$allocator@D@std@@QAEPADIPBX@Z) already defined in recls.1.vc8.dll.debug.lib(ReclsSearch.dll.debug.obj)
msvcprtd.lib(MSVCP80D.dll) : error LNK2005: "public: void __thiscall std::allocator<char>::deallocate(char *,unsigned int)" (?deallocate@?$allocator@D@std@@QAEXPADI@Z) already defined in recls.1.vc8.dll.debug.lib(ReclsSearch.dll.debug.obj)msvcprtd.lib(MSVCP80D.dll) : error LNK2005: "public: __thiscall std::allocator<char>::allocator<char>(void)" (??0?$allocator@D@std@@QAE@XZ) already defined in recls.1.vc8.dll.debug.lib(ReclsSearch.dll.debug.obj)
..\..\bin\recls.test.C.vc8.dll.debug.exe : fatal error LNK1169: one or more multiply defined symbols found

I tried adding /NODEFAULTLIB:msvcprtd.lib to LD_FLAGS, which sometimes seems to work, but just gave more errors so I just commented those:

# $(TARGET_TEST_C_DLL_DEBUG) \
# $(TARGET_TEST_CPP_DLL_DEBUG) \
# $(TARGET_TEST_STL_DLL_DEBUG) \
# $(TARGET_TEST_C_ST_DEBUG) \
# $(TARGET_TEST_CPP_ST_DEBUG) \
# $(TARGET_TEST_STL_ST_DEBUG) \

And one hour after I unziped I got those nice .exe and .lib files. :D

Anyway, the library seems to work OK on a quick test I made, so it seems we just need to poke Mathew a little to update the makefile after he finishes his book.

I'm using Visual Studio 2005 so I don't know if you're going to experience all of this problems.

NOTE TO MATHEW: Please add somewhere in the documentation that STLSOFT_INCLUDE should be set WITHOUT quotes even if the folder has spaces.

Thank you Mathew, Recls it's really great... once built. ;)
February 17, 2006
I'll answer and fix all these things as soon as the book's off for review (I will finish last major chapter tomorrow, and then two small intros chaps, and preface, and then done; see progress at http://extendedstl.com/.), so expect some resolution (and version 1.7.3) next week.

However, for now, I'm just wondering. Would anyone here be interested in joining the project if/when it goes on to SourceForge? Then you can share the blame for makefile stuff-ups. ;-)

Cheers

Matthew


February 18, 2006
Matthew wrote:

> However, for now, I'm just wondering. Would anyone here be interested in
> joining the project if/when it goes on to SourceForge? Then you can share
> the blame for makefile stuff-ups. ;-)

Yes, I might help from time to time, but can only help sending patches. Not much free time right now. At least I can test building with VS2005 and GCC.
February 20, 2006
> However, for now, I'm just wondering. Would anyone here be interested in
> joining the project if/when it goes on to SourceForge? Then you can share
> the blame for makefile stuff-ups. ;-)
> 

I can test th VC5, VC6 and probably the Borland 5.5
configurations.

February 20, 2006
Thanks for taking the time respond.

> One of the reasons why my other libs - cstring, b64, openrj, recls, and so on - are less well-known/popular than they might be if judged on code alone is that all the other stuff - installers, readmes, docs, etc. - are pretty much a dark art to me. It sure would be good to find a guide-to-open-source-lib-distribution somewhere. ;-)
>

I found this book, while searching for something not related:
This does not cover everything, but this is a start.

http://www.oreilly.com/catalog/producingoss/index.html

You might also study other projects. There is Lua which
is simple and is a good example. ( By the way, you could have
Lua mapping for Recls ).

Another example, is The NEURON Project. I built it,
last night. The setup is more complicated, but is very
well explained. I just folloed the recipy, and everything
built fine, the first try.

Here is the address:
http://www.neuron.yale.edu/neuron/install/install.html


The packaging of Recls is not bad. In fact, i figured out
by myself, all what you just said to me. The directory
structure is simple. But there is a lot of small details
that make the build complicated or gives the product
and unfinished feeling.

For example, the doc looks very good at first look,
but, where you expect to find an explanation on the C
mapping of Recls, you get some explanation on OpenRJ !

I guest, this due to a cut-and-paste operation...

I can take note of what i find and send it to you.
And i may help with the VC5, VC6 and Borland Configuration.


> I'd love it if someone volunteered to help me. But I understand that everyone else is likely to be as busy as me. ;-/
>
> Let me know if the advice I've given for building is not sufficient.
>

June 18, 2006
Carlos, Julio

If you do have a go with the new recls distro, please be aware that I ran out of time before I could get everything sorted to my tastes. However, on the up side, I've now got an automated makefile template generator, which I've been using for all recent libraries, so (i) I expect that what's in the makefiles is in the distros, and (ii) updating the makefile templates is a very simple and quick operation. So, if there are any probs, I should be able to respond rapidly.

(FYI: the tool chain now goes   <config-file>  =>tmplgen=> <makefile-template>  =>tmpl2make=>  N per-compiler/per-operating-system <makefile>s. Adding another test/sample/example program involves adjusting the <config-file> and simply running my tmplgen and tmpl2make scripts. <g>)

Cheers

Matthew