|
Hi, ��� I need some help in figuring out why my Makefile goes
into an infinite loop while generating dependencies. I am using SCO-unix and I
have run my Makefile on 3 different SCO machines. It runs fine on 2 of them
(i.e., the .d files are generated, they are properly included, object files are
created and executables are generated. Also, when a .h file is changed, it
finds out the proper dependencies and �rebuilds them), but, on the 3rd,
generating prerequisites goes into an infinite loop. I am unable to pin-point
the issue. But, I know that the sed command pattern (to generate .d files) may
be an issue (if I comment that line, it does not go into infinite loop). I am
not sure if it is a SCO installation (on that machine) issue or my Makefile
issue. I do not know where to begin looking. Can anyone help me out? Below is the Makefile I have written: SHELL���������� = /bin/sh BIN������������ = /usr/gnu/bin RM������������� = /bin/rm -f MYSQLBIN������� = /usr/local/mysql/bin MYSQLLIB������� = /usr/local/mysql/lib LXmX11PATH����� = /usr/X11R6.1/lib LXtPATH�������� = /usr/lib MYSQLINC������� = /usr/local/mysql/include OBJDIR��������� = obj EXECNAME������� = seiko MINIMAKEDIR���� = mini_makes # compiler CC������������� = $(BIN)/gcc # prefix -l for library name and -L for library path. LDFLAGS�������� = -lmysqlclient -lXm -lXt -lX11 -lsocket -lc
-lm -ldmalloc LOADLIBS������� = -L$(MYSQLLIB) # Compiler flags. All warnings disabled (-Wall). CFLAGS��������� = -g COMPILE�������� = $(CC) $(CFLAGS) INCLUDES������� = -I/usr/local/include SOURCE��������� = l_main.c seikocfg.c lgraphics.c
lgcomm_func.c lgcolor_func.c lcreat_config.c \ ������������� ����lgcomm_menu.c lgconn_diag.c lgtask_bar.c
lgdsw.c lgdsw_config.c lgdsw_conn.c \ ����������������� lgdswdir.c lgvsw.c lgvsw_config.c
lgvsw_conn.c lgvswdir.c lghkdhk.c lghkdhk_stat.c \ ����������������� lsdh_comm.c leucomm_proc.c laux_comm.c
lbeu_comm.c lpr_process.c lgsatrft.c seiko_gist.c \ ����������������� seiko_debug.c lguseradmin_main.c # This will replace every occurance of .c file to .o file # equivalent to OBJS = abc.o def.o OBJS����������� = $(SOURCE:.c=.o) # This will replace every occurance of .c file to .d file DEPS����������� = $(SOURCE:.c=.d) .SUFFIXES:���� # clear all existing suffixes .SUFFIXES: .o .c .c.o: ������� $(COMPILE) -c $< -o $@ # Pattern rule to generate a file of pre-requisites (i.e., a
mini-makefile) # called <source-file.d> from a C source-file call
source-file.c # I got the below pattern-rule from the GNU Make� online
manual. # http://www.gnu.org/software/make/manual/html_mono/make.html#SEC51 %.d: %.c ������� @echo "Generating prerequisites for $< .
Please wait." ������� @set -e; rm -f $@; \ ������� $(CC) -MM $(CFLAGS) $< > [EMAIL PROTECTED]; \ ������� sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < [EMAIL PROTECTED]
> $@; \ ������� rm -f [EMAIL PROTECTED] # target: source-file(s) #������ command(must be preceded by a tab) $(EXECNAME): $(OBJS) ������� @echo "\nMaking the executable
$(EXECNAME)\n" ������� $(COMPILE) $^ $(INCLUDES) $(LOADLIBS) $(LDFLAGS) -o
$@ ������� @echo "\n" ������� @date ������� @echo "\n" # I don't want Make to get confused if a file named
"all" # should happen to exist. So, I make "all" a phony
target, # i.e., a target that Make should always try to update. I do # that making "all" the dependency for the phony
target. .PHONY : all all: $(EXECNAME) # To avoid Make creating .d files and deleting all of them # when 'make clean' is called. # I am now including all the mini-makefiles I had generated # before and integrating into the master Makefile. ifneq ($(MAKECMDGOALS), clean) -include $(DEPS) endif # This is to make sure that 'clean' is a phony target and
will run # the commands irrespective of whether there is a file named
'clean'. .PHONY: clean clean: ������� @$(RM) *.o ������� @$(RM) *.d ������� @$(RM) $(EXECNAME) ������� @$(RM) core ������� @$(RM) *~ ������� @echo "\n\tYour LNMS is nice and clean
now!\n" ============================================================================== Thanks much, Sri 26587072 x340 Deccanet Designs - A Flextronics Company |
_______________________________________________ Help-make mailing list [email protected] http://lists.gnu.org/mailman/listinfo/help-make
