Operating System - HP-UX
1752545 Members
4831 Online
108788 Solutions
New Discussion

Re: nothing to make? gmake on Integrity fails to make perl

 
Steve Post
Trusted Contributor

nothing to make? gmake in itanium fails to make perl

At the bottom text of trying to make perl-5.8.8 from source on hpux11.31, itanium rx2800-i2.  This was right after the Configure command.  I am using gcc and gmake both from the software and porting archive.

 

If you compile perl5 on a different machine or from a different object
directory, copy the Policy.sh file from this object directory to the
new one before you run Configure -- this will help you with most of
the policy defaults.

# gmake
gmake: *** No rule to make target `<command-line>', needed by `miniperlmain.o'.  Stop.

 

My question is simple:  when this message pops up.  What is really going on?

 

 

3 REPLIES 3
Dennis Handly
Acclaimed Contributor

Re: nothing to make? gmake on Integrity fails to make perl

>gmake: *** No rule to make target '<command-line>', needed by 'miniperlmain.o'.  Stop.

>What is really going on?

 

I'm not sure why "<command-line>" is a dependency of that object?  I would have thought it would be the other way.

 

Are you sure you aren't suppose to have something on that gmake line?

 

Steve Post
Trusted Contributor

Re: nothing to make? gmake on Integrity fails to make perl

I think I found my problem.

In the new perl makefile are a lot lines like

av${OBJ_EXT}: <command-line>

 

run${OBJ_EXT}:<command-line>

 

When gmake goes to run, it sees the thing on the left of the colon needs to be updated.  So it refers to the thing on the right of the colon.  And "<command-line>"?   Gmake does not know what it is. 

 

This link shows the error, and reason for it. 

http://www.nntp.perl.org/group/perl.perl5.porters/2008/02/msg133864.html

 

Let me interpret what the person said...

My GUESS is that the Configure command to make the makefile is runs some stuff where the unix commands are slightly different between hpux11.3 and hpux.11.2.   As a result, the errant command probably spits out something like "command-line    usage  blah blah blah", essentially telling the perl script how to use the ls command or the bdf command or some such thing.  Or maybe the perl Configure script tried to run some unix command that does not even exist  (or not found in the path) for hpux11.3. 

 

Let me make my GUESS a bit clearer.   Something that makes the "makefile" got messed up and put down "<command-line>" instead of valid information. 

 

IF I blindly remove all lines in the makefile with <command-line> in it?  gmake suddenly starts working. 

hold on....I'm waiting for it die.

Ah!   It died because CLOCK_REALTIME was not declared.   At least the error does not sound insane.   I'll get go back to square one and try again. 

 

Even though my compile of perl failed, I think my specific problem is solved. 

 

 

 

 

 

Steve Post
Trusted Contributor

Re: nothing to make? gmake on Integrity fails to make perl

I contacted HP Business Alliance when their FAQ for GCC for Itanium dumped me to a form to send an email to them. 

Here is the answer I got.   This is specific to gcc-4.6.0 on Itanium HPUX11.3

 

> HiRes.c:1361:17: error:  'CLOCK_REALTIME' undeclared (first use in

> this

> function)

 

I am not able to reproduce this error with 4.6.0 in IA. I see that CLOCK_REALTIME is defined as enum in time.h. The below attached sample program compiler/executes fine with 4.6.0/4.6.2 IA gcc compiler.

 

#include <stdio.h>

#include <unistd.h>

#include <time.h>

 

int main() {

  struct timespec clock_resolution;

  int stat;

  stat = clock_getres(CLOCK_REALTIME, &clock_resolution);

  printf("Clock resolution is %d seconds, %ld nanoseconds\n",

          clock_resolution.tv_sec, clock_resolution.tv_nsec);

  return 0;

}

 

The definition of CLOCK_REALTIME:

.../lib/gcc/ia64-hp-hpux11.23/4.6.0/include-fixed/sys/time.h:

 

typedef enum __clockid_t {

 CLOCK_INVALID = 0,

 CLOCK_REALTIME = 1,

 CLOCK_VIRTUAL = 2,

 CLOCK_PROFILE = 4,

 RTTIMER0 = 8,

 RTTIMER1 = 16

} clockid_t;

 

 

So I start rewriting the perl files from scratch to change this CLOCK_REALTIME to an enum?  I believe that giant mountain of an issue might not as big as it appears to be.   I'll start climbing.

 

If I remove HiRes from the makefile it compiles ok.  but that seem means I removed part of perl.