updating Makefile for new source code
25 Dec 2013 05:38 #41995
by rwistort
updating Makefile for new source code was created by rwistort
Hi:
I've been hacking some updates to the source code and, up to now, the original Makefile has worked for me as long as I was only modifying existing files.
I finally needed to take the plunge, though, and create brand new .c and .h files in their own directories and make is not cooperating.
I have a single new directory, emc2-dev/src/c3pr, containing c3pr.h, c3pr.c, and a Submakefile which looks like this:
I updated the SUBDIRS, HEADERS, and EXTRA_CFLAGS sections in src/Makefile and I'm running it as: "make --debug=v" to see what it's doing.
When I run make, I can see that:
- it does, indeed, invoke c3pr/Submakefile
- it generates src/depends/c3pr/c3pr.d, which looks reasonable
- it copies c3pr.h to emc2-dev/include
- it dies with 'no rule to make target...' as noted in the commented portion of the Submakefile above. Why do other Submakefiles not need to spell out the .c => .o rule?
Also, I do '#include "c3pr.h"' in emc/nml_intf/emc_nml.hh and when make gets that far, this partial listing shows how make gives up:
Considering target file `../tcl/emc.so'.
Considering target file `objects/emc/usr_intf/emcsh.o'.
Pruning file `emc/usr_intf/emcsh.cc'.
Pruning file `emc/usr_intf/emcsh.cc'.
Pruning file `/usr/include/tcl8.5/tcl.h'.
Pruning file `/usr/include/tcl8.5/tclDecls.h'.
Pruning file `/usr/include/tcl8.5/tclPlatDecls.h'.
Pruning file `/usr/include/tcl8.5/tk.h'.
Pruning file `/usr/include/tcl8.5/tkDecls.h'.
Pruning file `libnml/rcs/rcs.hh'.
Pruning file `libnml/nml/nml_type.hh'.
Pruning file `libnml/posemath/posemath.h'.
Pruning file `emc/nml_intf/emc.hh'.
Pruning file `config.h'.
Pruning file `emc/nml_intf/emcglb.h'.
Pruning file `emc/motion/emcmotcfg.h'.
Pruning file `emc/nml_intf/motion_types.h'.
Pruning file `emc/nml_intf/emc_nml.hh'.
Pruning file `emc/nml_intf/emc.hh'.
Pruning file `libnml/nml/cmd_msg.hh'.
Pruning file `libnml/nml/nml.hh'.
Pruning file `libnml/cms/cms_user.hh'.
Pruning file `libnml/nml/nml_type.hh'.
Pruning file `libnml/nml/nmlmsg.hh'.
Pruning file `libnml/nml/stat_msg.hh'.
Pruning file `emc/nml_intf/emcpos.h'.
Pruning file `emc/nml_intf/canon.hh'.
Pruning file `emc/nml_intf/emctool.h'.
Pruning file `emc/rs274ngc/rs274ngc.hh'.
Pruning file `emc/nml_intf/canon.hh'.
Pruning file `c3pr.h'.
Finished prerequisites of target file `objects/emc/usr_intf/emcsh.o'.
Giving up on target file `objects/emc/usr_intf/emcsh.o'.
I assume the problem is that the 'pruning c3pr' line ought to include a path to it, but I cannot figure out how to supply it without spelling it out in the #include line itself. Again, no other #include lines seem to need to do so.
Can anyone shed some light on this for me?
Thanks,
Reid
I've been hacking some updates to the source code and, up to now, the original Makefile has worked for me as long as I was only modifying existing files.
I finally needed to take the plunge, though, and create brand new .c and .h files in their own directories and make is not cooperating.
I have a single new directory, emc2-dev/src/c3pr, containing c3pr.h, c3pr.c, and a Submakefile which looks like this:
INCLUDES += c3pr
C3PRSRCS := c3pr/c3pr.c
USERSRCS += $(C3PRSRCS)
$(call TOOBJSDEPS, $(C3PRSRCS)) : EXTRAFLAGS=-fPIC
# I don't see why I need this stanza to resolve a "no rule to make target file 'c3pr/c3pr.o' error.
# None of the other Submakefiles seem to do this. Why is an implicit rule not used?
#c3pr/c3pr.o: c3pr/c3pr.c c3pr/c3pr.h
# $(ECHO) Compiling $<
# $(Q)$(CC) -c $(CFLAGS) $(EXTRAFLAGS) $< -o $@
TARGETS += ./c3pr/c3pr.o
../include/%.h: ./c3pr/%.h
cp $^ $@
I updated the SUBDIRS, HEADERS, and EXTRA_CFLAGS sections in src/Makefile and I'm running it as: "make --debug=v" to see what it's doing.
When I run make, I can see that:
- it does, indeed, invoke c3pr/Submakefile
- it generates src/depends/c3pr/c3pr.d, which looks reasonable
- it copies c3pr.h to emc2-dev/include
- it dies with 'no rule to make target...' as noted in the commented portion of the Submakefile above. Why do other Submakefiles not need to spell out the .c => .o rule?
Also, I do '#include "c3pr.h"' in emc/nml_intf/emc_nml.hh and when make gets that far, this partial listing shows how make gives up:
Considering target file `../tcl/emc.so'.
Considering target file `objects/emc/usr_intf/emcsh.o'.
Pruning file `emc/usr_intf/emcsh.cc'.
Pruning file `emc/usr_intf/emcsh.cc'.
Pruning file `/usr/include/tcl8.5/tcl.h'.
Pruning file `/usr/include/tcl8.5/tclDecls.h'.
Pruning file `/usr/include/tcl8.5/tclPlatDecls.h'.
Pruning file `/usr/include/tcl8.5/tk.h'.
Pruning file `/usr/include/tcl8.5/tkDecls.h'.
Pruning file `libnml/rcs/rcs.hh'.
Pruning file `libnml/nml/nml_type.hh'.
Pruning file `libnml/posemath/posemath.h'.
Pruning file `emc/nml_intf/emc.hh'.
Pruning file `config.h'.
Pruning file `emc/nml_intf/emcglb.h'.
Pruning file `emc/motion/emcmotcfg.h'.
Pruning file `emc/nml_intf/motion_types.h'.
Pruning file `emc/nml_intf/emc_nml.hh'.
Pruning file `emc/nml_intf/emc.hh'.
Pruning file `libnml/nml/cmd_msg.hh'.
Pruning file `libnml/nml/nml.hh'.
Pruning file `libnml/cms/cms_user.hh'.
Pruning file `libnml/nml/nml_type.hh'.
Pruning file `libnml/nml/nmlmsg.hh'.
Pruning file `libnml/nml/stat_msg.hh'.
Pruning file `emc/nml_intf/emcpos.h'.
Pruning file `emc/nml_intf/canon.hh'.
Pruning file `emc/nml_intf/emctool.h'.
Pruning file `emc/rs274ngc/rs274ngc.hh'.
Pruning file `emc/nml_intf/canon.hh'.
Pruning file `c3pr.h'.
Finished prerequisites of target file `objects/emc/usr_intf/emcsh.o'.
Giving up on target file `objects/emc/usr_intf/emcsh.o'.
I assume the problem is that the 'pruning c3pr' line ought to include a path to it, but I cannot figure out how to supply it without spelling it out in the #include line itself. Again, no other #include lines seem to need to do so.
Can anyone shed some light on this for me?
Thanks,
Reid
Please Log in or Create an account to join the conversation.
27 Dec 2013 01:40 #42035
by rwistort
Replied by rwistort on topic updating Makefile for new source code
I did:
make depclean
and I am back to tracking down 'real' problems.
Man, oh man, that Makefile is a piece of work!
Thanks,
Reid
make depclean
and I am back to tracking down 'real' problems.
Man, oh man, that Makefile is a piece of work!
Thanks,
Reid
Please Log in or Create an account to join the conversation.
28 Dec 2013 07:19 #42084
by andypugh
Replied by andypugh on topic updating Makefile for new source code
I don't think you will get much help with makefile stuff on the Forum, you would need to go to the developers mailing list for that.
Please Log in or Create an account to join the conversation.
Time to create page: 0.120 seconds