Re: semi-colon in makefiles?

2001-02-08 Thread Paul D. Smith

%% Martin Naskovski [EMAIL PROTECTED] writes:

  mn Now, the same script on unix (solaris 2.6) where classpath
  mn jars/classes are delimited with a colon (:) rather than a
  mn semicolon as in Win2k/dos/winwhatever, it runs a-ok, with as many
  mn classpath jars as you want it to.  On Win2k, here, I get this dumb
  mn error, and I'm at a loss - am I not DENOTING the lame ';'
  mn (semicolon) properly or does make break when it sees it, that is,
  mn it thinks its something else, like end of a dependency or some
  mn such rule?

No.  That's what I tried to say in my last message: make doesn't
interpret command lines at all, it simply hands them to the shell to be
executed.  The _only_ thing make does with commands is expand make
variables.

You are using Windows, so your life is complicated.  I know very little
about Windows.  Make on Windows can be configured to use a number of
different methods for shells, and depending on which one yours uses,
it might behave differently.

If you have a UNIX shell on your Windows box, for example, make might be
using that; in that case, the shell will treat the ";" as a command
separator, as always, and that might cause the problems you're seeing
here.  Or, make might be using command.com, or something else.

Anyway, the problem is with the shell that make is invoking to run that
command, not with make itself.

-- 
---
 Paul D. Smith [EMAIL PROTECTED]  Find some GNU make tips at:
 http://www.gnu.org  http://www.paulandlesley.org/gmake/
 "Please remain calm...I may be mad, but I am a professional." --Mad Scientist

___
Bug-make mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/bug-make



Re: semi-colon in makefiles?

2001-02-07 Thread Martin Naskovski

Hi Paul, I am sorry, perhaps I was a little vague in my description - I'll 
fill you in on some more detail but thanks a bunch for replying, I still 
beleive it is a make error, unless I'm totally clueless but look at this first:

[contents of the dir]
C:\src\DEVELO~1\adserver\CUSTOM~1dir
  Volume in drive C has no label.
  Volume Serial Number is 5CBA-6369

  Directory of C:\src\DEVELO~1\adserver\CUSTOM~1

02/07/2001  03:08p  DIR  .
02/07/2001  03:08p  DIR  ..
02/06/2001  06:51p  10,846 AdCampaignAds.java
02/06/2001  06:51p   8,347 AdCampaigns.java
02/06/2001  06:51p   7,583 AdClients.java
02/06/2001  06:51p  10,619 AdDist.java
02/06/2001  06:51p  41,806 adstats.java
02/06/2001  10:06p   6,334 adstatszone.properties
02/06/2001  06:51p   7,096 AdUsers.java
02/07/2001  03:08p 605 makefile
8 File(s) 93,236 bytes
2 Dir(s)   2,456,240,128 bytes free

C:\src\DEVELO~1\adserver\CUSTOM~1

[contents of makefile]
C:\src\DEVELO~1\adserver\CUSTOM~1type makefile
JSUFFIXES = .class .java

.SUFFIXES: $(JSUFFIXES) $(SUFFIXES)

.DONE:@echo ALLCLASSES is $(ALLCLASSES)

.FAILED:@echo ALLCLASSES is $(ALLCLASSES)

#   Java language section.

JAVAC = javac

CLASSPATH = c:\apps\JSDK2.0\lib\jsdk.jar;c:\apps\javalibs\md5.jar

JFLAGS=-classpath $(CLASSPATH) -deprecation -g

COMPILE.java=$(JAVAC) $(JFLAGS)

.java.class:
 $(COMPILE.java) $

ALLSOURCES=AdUsers.java\
AdCampaigns.java\
AdCampaignAds.java\
AdDist.java\
AdClients.java\
adstats.java


ALLCLASSES=$(ALLSOURCES:%java=%class)

all: $(ALLCLASSES)
 @echo making all \'$(ALLCLASSES)\'

C:\src\DEVELO~1\adserver\CUSTOM~1

[make results]
C:\src\DEVELO~1\adserver\CUSTOM~1make
javac -classpath c:\apps\JSDK2.0\lib\jsdk.jar;c:\apps\javalibs\md5.jar 
-deprecat
ion -g AdUsers.java
Usage: javac options source files

where options includes:
   -g Generate all debugging info
   -g:noneGenerate no debugging info
   -g:{lines,vars,source} Generate only some debugging info
   -O Optimize; may hinder debugging or enlarge class files
   -nowarnGenerate no warnings
   -verbose   Output messages about what the compiler is doing
   -deprecation   Output source locations where deprecated APIs are 
used
   -classpath path  Specify where to find user class files
   -sourcepath path Specify where to find input source files
   -bootclasspath path  Override location of bootstrap class files
   -extdirs dirsOverride location of installed extensions
   -d directory Specify where to place generated class files
   -encoding encoding   Specify character encoding used by source files
   -target release  Generate class files for specific VM version
make.exe: *** [AdUsers.class] Error 2

C:\src\DEVELO~1\adserver\CUSTOM~1

Now, the same script on unix (solaris 2.6) where classpath jars/classes are 
delimited with a colon (:) rather than a semicolon as in 
Win2k/dos/winwhatever, it runs a-ok, with as many classpath jars as you 
want it to.  On Win2k, here, I get this dumb error, and I'm at a loss - am 
I not DENOTING the lame ';' (semicolon) properly or does make break when it 
sees it, that is, it thinks its something else, like end of a dependency or 
some such rule?

When I run the IDENTICAL command by hand on the command prompt as you see 
above (it's broken up because of the window size 80x25, otherwise the javac 
line is one line when I run it from command prompt) it COMPILES a-ok, which 
I forgot to mention in my previous email.

So, you dont think this is some bug? What am I missing? I was so frustrated 
yesterday you have no idea... :/.  Please help.

Thanks again, and I hope I was more clear this time.

Martin


At 12:34 AM 2/7/2001 -0500, Paul D. Smith wrote:
%% Martin Naskovski [EMAIL PROTECTED] writes:

   mn CLASSPATH = c:\apps\JSDK2.0\lib\jsdk.jar;c:\apps\javalibs\MD5.jar

   mn JFLAGS=-classpath $(CLASSPATH) -deprecation -g

   mn COMPILE.java=$(JAVAC) $(JFLAGS)

   mn .java.class:
   mn   @echo - $(HOSTNAME) javac $ ---
   mn   $(COMPILE.java) $

   mn When I run make, it fails to interpret the semi-colong that
   mn separates MD5.jar and jsdk.jar as a literal, and it thinks it's
   mn some dependency or some other command and it fails to compile my
   mn .java file properly. How do I get 'make' to treat the semi-colon
   mn as a literal and not as some implicit rule? I looked all over the
   mn documentation, and maybe I missed it- or maybe this is a bug.

You didn't provide any information on the error you got, but I'll bet
it's not a make error.

Make doesn't treat semicolons as special in any way in the places you've
used it above (the value of a variable or in the command script).

Make simply sends the text of the command you tell it to run to the
shell it's 

Re: semi-colon in makefiles?

2001-02-06 Thread Paul D. Smith

%% Martin Naskovski [EMAIL PROTECTED] writes:

  mn CLASSPATH = c:\apps\JSDK2.0\lib\jsdk.jar;c:\apps\javalibs\MD5.jar

  mn JFLAGS=-classpath $(CLASSPATH) -deprecation -g

  mn COMPILE.java=$(JAVAC) $(JFLAGS)

  mn .java.class:
  mn   @echo - $(HOSTNAME) javac $ ---
  mn   $(COMPILE.java) $

  mn When I run make, it fails to interpret the semi-colong that
  mn separates MD5.jar and jsdk.jar as a literal, and it thinks it's
  mn some dependency or some other command and it fails to compile my
  mn .java file properly. How do I get 'make' to treat the semi-colon
  mn as a literal and not as some implicit rule? I looked all over the
  mn documentation, and maybe I missed it- or maybe this is a bug.

You didn't provide any information on the error you got, but I'll bet
it's not a make error.

Make doesn't treat semicolons as special in any way in the places you've
used it above (the value of a variable or in the command script).

Make simply sends the text of the command you tell it to run to the
shell it's using, and waits to see what the result is.  It doesn't
interpret or process the command in any way, except to expand make
variable references.

-- 
---
 Paul D. Smith [EMAIL PROTECTED]  Find some GNU make tips at:
 http://www.gnu.org  http://www.paulandlesley.org/gmake/
 "Please remain calm...I may be mad, but I am a professional." --Mad Scientist

___
Bug-make mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/bug-make