Hi,
Firstly, i thank Dave K. for helping me.
I don't understand all functionnalities of VPATH, but i think that i don't
used it.
You can find below a minimal test case that demonstrates the problem.
I wish to make it clear that directories name with letter '_' seem maybe to
be the source of problem !
You can find sources files below.
Thanks,
        Seb.


Directory tree is :
Test_pb_path
      |
      +-- ver_100
             |
             +---- c : files root.c and foo.c
             |
             +---- s : file init.S
             |
             +---- compiler : file makefile
                      |
                      +---- obj

root.c :
  extern int foo(void);
  int root(void);
  /* root function */
  int root(void)
  {
        int i=0, j;
        while(1) {
                i++;
                j = foo();
        }
  }

foo.c :
   /* foo function */
  int foo(void) {
        return(55);
  }

init.S :
   .text
   .globl       _start
   _start:
   /* Call C function */
   bl      root
   .end

makefile :

#       Compiler selection
PROC                    =       powerpc
TYPE                    =       eabi
GCC_VER                 =       3.3.2
COMPILER_DIR    =       /opt/crosstool/$(PROC)-$(TYPE)/gcc-$(GCC_VER)
PATH_TMP                :=      $(PATH)
PATH                    =       $(COMPILER_DIR)/bin:/usr/bin:.:$(PATH_TMP)
CC                              =       $(PROC)-$(TYPE)-gcc
LD                              =       $(PROC)-$(TYPE)-ld
SHELL                   =       /bin/sh


#       Files list
SRC_APP_S       = ../s/init.S
SRC_APP_C       = ../c/root.c ../c/foo.c

#       Listing of all source files
SRC_DEP         = $(SRC_APP_S:.S=.d) $(SRC_APP_C:.c=.d)
SRC_OBJ         = $(foreach file,$(SRC_DEP), obj/$(notdir $(file:.d=.o)) )



#       Linker command name
LDFLAGS     = -g --cref -lgcc -Lobj



# Check if dependencies are correct
EXTERNAL_FILES_D = $(strip $(sort $(wildcard obj/*.d)))
INTERNAL_FILES_D = $(strip $(sort $(SRC_OBJ:.o=.d)))
ifeq ($(EXTERNAL_FILES_D), $(INTERNAL_FILES_D))

all: test_pb_path.elf

test_pb_path.elf: $(SRC_OBJ)
        @echo 'Linking $@'
        @$(LD) -g -o obj/test.elf $(SRC_OBJ)

# includes all dependency files
include obj/*.d

else    # else => dependencies are not correct

recover_dep: clean_all $(SRC_DEP)

endif


clean_all cl:
        @-/bin/rm -f obj/*.*


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#       Create a file.d for each file.c which contains dependencies!
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%.d:%.c
        @echo 'Make dependencies of $<'
        @$(CC) -MM $(@:.d=.c) | sed -u s/'$(notdir $(@:.d=.o)):'/'obj\/$(notdir
$(@:.d=.o)):'/g > obj/$(notdir $@)
        @echo ' @echo Building $$@' >> obj/$(notdir $@)
        @echo ' @$$(CC) -c $$< $$(CFLAGS) -o $$@' >> obj/$(notdir $@)

%.d:%.S
        @echo 'Make dependencies of $<'
        @$(CC) -MM $(@:.d=.S) | sed -u s/'$(notdir $(@:.d=.o)):'/'obj\/$(notdir
$(@:.d=.o)):'/g > obj/$(notdir $@)
        @echo ' @echo Building $$@' >> obj/$(notdir $@)
        @echo ' @$$(CC) -c $$< $$(ASFLAGS) -o $$@' >> obj/$(notdir $@)

#DO NOT DELETE






> -----Original Message-----
> From: cygwin-owner On Behalf Of Sébastien Douheret
> Sent: 07 June 2004 17:37
> To: cygwin
> Subject: makefile syntax %.d:%.c misunderstood
>
>       Hi,
> i have a strongly problem with make under cygwin !
> Make don't understand this syntax %.d:%.c of my makefile.

  Then you've typed something wrong.  Cygwin make has no problem with that
format.  I use it all the time successfully.

> If sources files are on my local drive (eg. :
> "c:\dev\sources"), make is
> successful, but if my sources files are on network drive
> mounted as /f, an
> error occurs during compilation :
>       make: *** No rule to make target `../c/boardboot.d',
> needed by `make_dep'.
> Stop.
>
> Is it a problem of mount ?

  Most likely something's wrong in your makefile.  Are you using a hardcoded
VPATH that makes it work on your C drive but not any other?  Can you strip
down your makefile to a minimal test case that demonstrates the problem
using just a single .c file and %.d:%.c rule?


    cheers,
      DaveK


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

Reply via email to