Google'i grupid ei toeta enam uusi Useneti postitusi ega tellimusi. Ajalooline sisu jääb vaadatavaks.
Dismiss

Tcl windows make problems

4 vaatamist
Liigu esimese lugemata sõnumi juurde

Klaas-Jan Stol

lugemata,
12. jaan 2007, 04:36:3912.01.07
kuni perl6-i...@perl.org
hello,
yesterday I had a look at why tcl does not build on windows. Although I
haven't been able to fix it, I'd like to share the issues I found, so
you don't have to look for it yourself.

there were several problems with the makefile

line 123:
ops: src\binary.o , should be binary$(O)
this is fixed by particle.

line 126:
@cd $(OPSDIR) && $(OPSBUILD) linklibs tcl ..\binary$(O)

makes that the system will look for binary.obj_ops_switch.obj
changing it into ..\ops\tcl will fix that problem

Furthermore, the next problem is that the ops file won't link correctly
because binary.obj is not linked. To solve the problem, I added
binary.obj to the tools/build/dynoplibs.pl script, but of course that is
not a good solution. I haven't been able to solve it. Maybe it's an idea
to just put the source from binary.c into the ops file itself, if that's
possible.

If that's corrected, you'll find 1 more problem: if binary.obj is
linked, it can't resolve the symbol _PMCNULL. As a quick hack, I
#define'd PMCNULL as NULL. After these fixes, it worked.

Hope this helps you further.
regards,
klaas-jan

Matt Diephouse

lugemata,
13. jaan 2007, 14:54:3013.01.07
kuni Klaas-Jan Stol,perl6-i...@perl.org
Klaas-Jan Stol <parro...@gmail.com> wrote:
>
> hello,
> yesterday I had a look at why tcl does not build on windows. Although I
> haven't been able to fix it, I'd like to share the issues I found, so
> you don't have to look for it yourself.
>
> there were several problems with the makefile
>
> line 123:
> ops: src\binary.o , should be binary$(O)
> this is fixed by particle.
>
> line 126:
> @cd $(OPSDIR) && $(OPSBUILD) linklibs tcl ..\binary$(O)
>
> makes that the system will look for binary.obj_ops_switch.obj
> changing it into ..\ops\tcl will fix that problem
>
> Furthermore, the next problem is that the ops file won't link correctly
> because binary.obj is not linked. To solve the problem, I added
> binary.obj to the tools/build/dynoplibs.pl script, but of course that is
> not a good solution. I haven't been able to solve it. Maybe it's an idea
> to just put the source from binary.c into the ops file itself, if that's
> possible.


Ah, I see what happened here. I had to change things around in the first
place to be able to link in another object file with my dynamic opcodes. I
ended up changing dynoplibs.pl to link arguments differently if they were
object files. But my fix looked for .o files, so it didn't work on Win32. I
just committed a fix that should make it work.

If that's corrected, you'll find 1 more problem: if binary.obj is
> linked, it can't resolve the symbol _PMCNULL. As a quick hack, I
> #define'd PMCNULL as NULL. After these fixes, it worked.


Okay, I just changed the occurrences of PMCNULL to NULL. Things should work
now.

Hope this helps you further.
> regards,
> klaas-jan
>

It was very helpful, thanks!

--
Matt Diephouse
http://matt.diephouse.com

jerry gay

lugemata,
13. jaan 2007, 16:25:2813.01.07
kuni ma...@diephouse.com,Klaas-Jan Stol,perl6-i...@perl.org
On 1/13/07, Matt Diephouse <mdd...@gmail.com> wrote:
> Ah, I see what happened here. I had to change things around in the first
> place to be able to link in another object file with my dynamic opcodes. I
> ended up changing dynoplibs.pl to link arguments differently if they were
> object files. But my fix looked for .o files, so it didn't work on Win32. I
> just committed a fix that should make it work.
>
> Klaas-Jan Stol <parro...@gmail.com> wrote:
> > If that's corrected, you'll find 1 more problem: if binary.obj is
> > linked, it can't resolve the symbol _PMCNULL. As a quick hack, I
> > #define'd PMCNULL as NULL. After these fixes, it worked.
>
>
> Okay, I just changed the occurrences of PMCNULL to NULL. Things should work
> now.
>
indeed, as of r16596 tcl seems to build on windows.
~jerry
0 uut sõnumit