[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference smurf::buildhelp

Title:USG buildhelp questions/answers
Moderator:SMURF::FILTER
Created:Mon Apr 26 1993
Last Modified:Mon Jan 20 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:2763
Total number of notes:5802

663.0. "what does bad MAKEDIR mean, can you build within a Makefile" by SMURF::FILTER (Automatic Posting Software - mail to flume::puck) Thu Mar 24 1994 11:25

Date Of Receipt: 	24-MAR-1994 10:26:37.07
From: 	ALPHA::dc "Dan Christians USG  24-Mar-1994 1025"
To: 	odehelp@DEC:.zko.alpha
CC: 	dc@DEC:.zko.alpha (Dan Christians USG)
Subj: 	what does bad MAKEDIR mean, can you build within a Makefile

hi,

first, thanks to Jim McGinness for helping with me 
with my last problem.  i am now able to build a library
and export the header files which goes along with it
using DATAFILES.


i am now writing the Makefile for the programs which will use
this library and would like to have a dependency such that the
library will get built if it doesn't exist.

here is the relavent part of the makefile:


$(PROGRAMS):    libthreadRace.a

libthreadRace.a:
        build -here /sqa/threadRace


what i would like is for the Makefile to check that the
library exists, if it doesn't then have it
call build to build it.

this is what i get:

% build
relative path: ./sqa/exer/kern.
cd ../../../../obj/alpha/sqa/exer/kern
build -here /sqa/threadRace
cd ... ./sqa/threadRace.
Directory /u1/sb/src/sqa/threadRace not found - create  [yes]  /u1/sb/src/sqa/threadRace: created directory
Make: ../../src/sqa/threadRace: bad MAKEDIR.  Stop.
*** Exit 1

i don't understand the error message regarding MAKEDIR.

any help would be appreciated.

thanks much!

dan christians




T.RTitleUserPersonal
Name
DateLines
663.1bad MAKEDIRSMURF::FILTERAutomatic Posting Software - mail to flume::puckThu Mar 24 1994 11:3035
Date Of Receipt: 	24-MAR-1994 11:08:25.29
From: 	FLUME::jmcg "Jim McGinness"
To: 	flume::dc
CC: 	flume::buildhelp, flume::odehelp
Subj: 	bad MAKEDIR

I've never tried to use "build" inside a Makefile.  It feels to me like
a hierarchy violation.

Given that you want to do it, I'd try to make it look as much like
the command I would use if I were doing this in my own sandbox.

libthreadRace.a:
        (cd ${MAKETOP}/sqa/threadRace;build)
	# above build will ensure library exists
	ln -s ....../libthreadRace.a libthreadRace.a

In other words, tell it to go to the source directory, build, then
link the result back here.  You need to fill in the relative path
between your current (obj) directory and the obj directory in which
libthreadRace.a was built.  The recursive build won't actually do
much if the library has already been built.

It doesn't make sense to me to have libthreadRace.a in the PROGRAMS
directive.  Surely that's better done in the sqa/threadRace directory.
In this directory, you could just use ....../libthreadRace.a (relative
path in the obj tree) wherever you currently have libthreadRace.a
and get the dependencies correct.

Warning: I think I may have given you a way to do what you said
you wanted to do, but there's enough information in the context to
to question why you're wanting to do this.

	-- jmcg