Matt Watson | 5 Feb 2001 21:22
Picon
Favicon

Re: Jam can't handle libraries on AIX?

Has AIX 4.3 changed the size of off_t, or the header hierarchy? We noticed
that the lack of a prototype for lseek() was causing archives to be read
incorrectly. I believe that this change was sent back upstream...

matt.

Stephen.Riehm | 7 Feb 2001 15:08
Picon

updating from jam 2.1.1 to 2.3

Hi Jammers,

we've been using a slightly modified version of jam for a few years
now, and upgrading to jam 2.3 isn't going all that well, as our
modifications are of course missing in the new version. Our
modifications were minimal, but I'ld like to know if the same
functionality is now available in the current version.

We had the following extras:

     A project path ($PRJPATH) was used to refer to multiple
     development trees. (ie: <build_tree>:<private_tree>:<reference_tree>)
     A routine was used to split a variable on any character
     (similar to perl's split() function), this was used to split
     PRJPATH into a list of paths (ie: a list of TOP directories).
     (I believe such splitting is now standard for environment
     variables whose name ends in PATH)

     A second routine was added to jam to determine the directory
     name relative to one of the TOP directories in $(PRJPATH).
     Since jam could be started in a directory without a Jamfile
     (i.e.: the Jamfile is only in the <reference_tree>) - the
     Jambase set up a SEARCH for $(RELDIR)/Jamfile (SubDir thus
     couldn't be used, because the Jamfile hasn't been found yet).

The effect was that a central source directory exists (the
<reference_tree>), in which the "official" code is placed. The
developers then work in a private directory (<private_tree>), again
only with source code. Finally, the developer has a third directory
(<build_tree>) where the build takes place. A complete "clean
(Continue reading)

Leon Glozman | 8 Feb 2001 14:02

Link of many objects in WATCOM

I work in NT WATCOM environment. For linkage I use wlink command. I have
many objects to link, but the wlink command can't link with many objects.
For this situation, I may write the object names into file and the wlink
will read the names from this file, as the following:

wlink  <at> [file_name]

How can I do it in Jamrules file.

Dave Lewis | 8 Feb 2001 17:29
Favicon

Re: Link of many objects in WATCOM

  > From: Leon Glozman <leonid_g <at> schema.com>
  > Date: Thu, 8 Feb 2001 15:02:13 +0200 
  > MIME-Version: 1.0
  > X-Mailer: Internet Mail Service (5.5.2650.21)
  > Content-Type: text/plain;
  > 	charset="windows-1255"
  > Sender: jamming-admin <at> perforce.com
  > Errors-To: jamming-admin <at> perforce.com
  > X-BeenThere: jamming <at> perforce.com
  > X-Mailman-Version: 2.0beta2
  > Precedence: bulk
  > List-Id: Discuss the build tool Jam/MR with other users <jamming.perforce.com>
  > 
  > I work in NT WATCOM environment. For linkage I use wlink command. I have
  > many objects to link, but the wlink command can't link with many objects.
  > For this situation, I may write the object names into file and the wlink
  > will read the names from this file, as the following:
  > 
  > wlink  <at> [file_name]
  > 
  > How can I do it in Jamrules file.
  > _______________________________________________
  > jamming mailing list  -  jamming <at> perforce.com
  > http://maillist.perforce.com/mailman/listinfo/jamming
  > 

We do it like this:

	# vLink is identical to Link in Jambase, explicitly uses $(<[1]) as
	# the output file.  This allows us to pass down extra targets that
(Continue reading)

Mark Lakata | 9 Feb 2001 23:08

jam as cad glue

I'm trying to use jam as CAD glue for chip design. That means, I don't use
any of the built in rules in Jambase, but I've got my own set of rules and
actions.  

One thing that is sorely missing is access to the shell, like the GNU
makefile $(shell cmd) feature.  What I would like is something like this:

  files = `cat filelist`  

or

  files = [ shell cat filelist ]

Is this feature there already? Has anyone hacked it in?

Mark Lakata
MIPS Technologies      
1225 Charleston Road   
Mountain View, CA 94043
phone 650-567-5170
fax   650-567-5002
email lakata <at> mips.com

Received: from squeaker.phone.com ([206.35.148.55])
	by frankenrouter.perforce.com (8.9.3/8.9.1) with ESMTP id PAA65254
	for <jamming <at> perforce.com>; Fri, 9 Feb 2001 15:44:56 -0800 (PST)
Received: by squeaker.phone.com (Postfix, from userid 1000)
	id 2BE951ACDC; Fri,  9 Feb 2001 15:37:50 -0800 (PST)
To: Mark Lakata <lakata <at> mips.com>
Cc: jamming <at> perforce.com
(Continue reading)

Mark Lakata | 13 Feb 2001 20:32

'system' built-in rule

I hacked together a built-in rule called 'system' which is like the
backtick operator in csh/perl, and the $(shell ...) command in GNU make.
The system command you run must output one list item per output line, each
line terminated with a newline character. The command is run under the
Bourne shell (/bin/sh).

This compiles on Solaris 2.6, perhaps on other unix machines too.

syntax:

 variable = [ system "cmd arg arg ..." ] ;

example:

 listOfFiles = [ system "find . -name '*.c' -mdate +1" ]
 ECHO $(listOfFiles)

Comments?

The purists will argue that this is a bad idea, since the output of the
system command is not reproducible, and therefore builds are time
dependent. Well, my answer is that I am not building an executable, I'm
gluing together 3rd party tools in a design verification flow.

-Mark

------------------------------------
# Make this addition to Jamfile

LINKLIBS	+= -lgen ;
(Continue reading)

Leon Glozman | 15 Feb 2001 09:29

Watcom project under NT in JAM environment

> I compile my project in WATCOM under NT. I have Jambase & Jamrules files
> under C:\project_dir.
> My project consist of 2 libraries (lib1.dll & lib2.dll) and some
> executable files, that are linked with the lib1 & lib2.
> All targets (libs & exies) is located under C:\project_dir\lib.NT\debug.
> The sources are located under C:\project_dir\src\subdir[1....n].The
> compilation objects will be located under source directories
> (C:\project_dir\src\subdir[1....n]), because I have sometimes two objects
> with same name. The compilation-linkage process is as the following:
> 
> 1) The objects are created with wp386 (watcom compiler).
> 
> 2) The library lib1 is linked with relevant objects as the following:
> 	wlink OPTION QUIET SYSTEM nt_dll OPTION STACK=64k DISABLE 1121
> LIBRARY clib3r  \\
> 	LIBRARY plib3r  LIBRARY nt  NAME C:\project_dir\lib.NT\debug\lib1
> FILE C:\project_dir\src1\src1_1.obj \\
> 	FILE C:\project_dir\src1\src1_2.obj ...... FILE
> C:\project_dir\srcn\srcn_1.obj .... FILE C:\project_dir\srcn_k.obj
> 
> 3) I create static library lb1.lib as the following
> 	wlib  -irn -inn -b -n -q C:\project_dir\lib.NT\debug\lib1.lib
> +C:\project_dir\lib.NT\debug\lib1.dll
> 
> 4) The library lib2 is linked as the following:
> 	wlink OPTION QUIET SYSTEM nt_dll OPTION STACK=64k DISABLE 1121
> LIBRARY clib3r  \\
> 	LIBRARY plib3r  LIBRARY nt  NAME C:\project_dir\lib.NT\debug\lib2
> FILE C:\project_dir\src.....\\
> 	LIBRARY lib1
(Continue reading)

Ducharme, Gregory | 15 Feb 2001 14:34

How do I do this in Jam?

hi:

I am stuck on what should be a trivial problem in Jam (it certainly is in
make): How do I create a simple rule to allow usage of an arbitrary code
generator and still maintain dependancies?
The usage would be similar to:

Library X : a.c b.c ;

Generator b.c : b.txt : "command generating b.c from b.txt" ;

Its easy to make this work if LOCATE_TARGET and LOCATE_SOURCE are left as
the defaults (i.e. cwd). However, as soon as they are changed the build
fails as follows:

jam 
	cannot make yadda!yadda!b.c
	Generator locate!target!b.c			(depends on files so
will run anyway)

	skipping locate!target!b.o due to missing yadda!yadda!b.c
	skipping locate!target!X due to missing locate!target!b.o

I've tried things like:
	SEARCH on b.c = $(LOCATE_SOURCE) ;
but to no avail.

Has anyone solved this problem, and is willing to publish a solution in this
newsgroup?

(Continue reading)

Grant_Glouser | 27 Feb 2001 21:13
Picon

Re: Multiple recompiles of common object.


I have encountered this many times.  It's a common thing to try in a Jamfile.
The reason it happens is that common.c is passed to the Cc rule twice, and each
invocation of the Cc rule adds the Cc actions block to the target "common.o".
     Main A : common.c ;
          Objects common.c ;
               Object common.o : common.c ;
                    Cc common.o : common.c ;  # compile common.c (add the Cc
actions block to the actions for common.o)
     Main B : common.c ;
          Objects common.c ;
               Object common.o : common.c ;
                    Cc common.o : common.c ;  # compile common.c (add the Cc
actions block to the actions for common.o)

This happens during the evaluation of the Jamfiles, not during the processing of
the dependency graph.  The target named "common.o" always has two Cc actions
blocks attached to it.  So even if you just "jam A", common.o will be compiled
twice.

This behavior is useful in some circumstances, which is why I hestitate to agree
that it's a bug.  I think you want a library here, or else compile all the files
by hand, something like this:
     Objects a.c b.c common.c ;
     MainFromObjects A : a.o common.o ;
     MainFromObjects B : b.o common.o ;

You could even modify the Jambase such that Main allows objects in $(>), which
makes the final Jamfile slightly cleaner, IMHO.  We've done that to our
equivalent in-house rules, and it seems natural and obvious to me now to have a
(Continue reading)

David Turner | 28 Feb 2001 16:28

Jam with Windows 95/98

Hello,

  I've been a new jam user for a few weeks now, and it's
  really a fascinating tool. Thanks a lot to Christopher Seiwald
  and all other people involved in the development of Jam.

  I have managed to patch jam to run under Windows 95/98
  (mostly) correctly, but I don't know if my approach is the
  correct one. I'd appreciate input about this, and I'd be
  glad to contribute my changes to the main sources if
  you find it adequate..

  The current jam (2.3) binaries do not run correctly
  under Windows 95/98, and there are several reasons for
  this:

    - first of all, there is no shell named "cmd.exe" that
      comes with this version of Windows. Instead, we have
      the incredibly clumsy "command.com"

    - if you patch "execunix.c" to use "command.com /c" instead
      of "cmd.exe /c/q" when a Windows95/98 system is detected,
      the following problems appear:

        - the trailing newline ('\n') at the end of the
          "string" variable used to hold the command line
          is interpreted as an additional argument by command.com
          that is passed to the action being launched.

          Most programs (compilers/linkers) are unable to deal
(Continue reading)


Gmane