From owner-freebsd-hackers Wed Nov 11 11:04:01 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id LAA20793 for freebsd-hackers-outgoing; Wed, 11 Nov 1998 11:04:01 -0800 (PST) (envelope-from owner-freebsd-hackers@FreeBSD.ORG) Received: from camel14.mindspring.com (camel14.mindspring.com [207.69.200.64]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id LAA20758 for ; Wed, 11 Nov 1998 11:03:52 -0800 (PST) (envelope-from zenithar@mindspring.com) Received: from mindspring.com (user-38ldkk9.dialup.mindspring.com [209.86.210.137]) by camel14.mindspring.com (8.8.5/8.8.5) with ESMTP id OAA05164 for ; Wed, 11 Nov 1998 14:01:15 -0500 (EST) Message-ID: <3649DFED.FCD85FCB@mindspring.com> Date: Wed, 11 Nov 1998 13:05:17 -0600 From: Stephen Zepp Organization: Ack!Mud Home Page http://ackmud.nuc.net/ X-Mailer: Mozilla 4.5 [en] (Win95; I) X-Accept-Language: en MIME-Version: 1.0 To: freebsd-hackers@FreeBSD.ORG Subject: Gmake --using seperate directories for .c, .h, and .o files Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG I've been trying for several days to write a simple Makefile that can handle having the .c and .h files in seperate directories, and place the .o files in a third directory. The executable is fine in the src dir. Paths: /dsmud /src : contains .c, Makefile, and executable /inc : contains .h /obj : repository for .o files. gmake is run from /dsmud/src. I've poured over the online version of the .info of gmake, and as far as I can tell we are doing what is correct, but we always get the error: gmake: *** No rule to make target `act_comm.o', needed by `darkshade'. Stop. It's my understanding that the vpath allows gmake to check the directories as set in INCDIR, SRCDIR and OBJDIR, but this doesn't seem to be happening. We've tried several dozen different forms for the rules, including removing all rules ( except darkshade and clean ) completely to force the implicits rules to take place, but nothing seems to work. We've also tried all the various variables, including $< $> and $* with no effect. System is a Pentium 90 running FreeBSD 2.2.7-STABLE Makefile is below. Anyone have any suggestions? :) TIA Stephen Zepp CC = gcc PROF = NOCRYPT = # # Source directories # SRCDIR=/usr/home2/dsmain/dsmud/src INCDIR=/usr/home2/dsmain/dsmud/inc # # Target directories # OBJDIR=/usr/home2/dsmain/dsmud/obj .CURDIR=. # Debugging flags possible: DEBUG_MEM DEBUG_MEM_CORRUPT DEBUG_MEM_DUP_FREE # DEBUG_MEM is most basic, just checks magic numbers when freeing # DEBUG_MEM_CORRUPT checks every free block to see if magic numbers ok, every # call to alloc_mem # Also makes calls to void check_free_mem(void) check for # corrupted free memory blocks. # DEBUG_MEM_DUP_FREE checks to see if freed blocks are overlapping every call # to mem_alloc. # # -DDEBUG_MEM -DDEBUG_MEM_CORRUPT -DDEBUG_MEM_DUP_FREE #-DDEBUG_MEM -DDEBUG_MEM_CORRUPT CFLAGS = -O -g3 -Wall -DACK_43 $(PROF) $(NOCRYPT) -I. -I$(SRCDIR) -I$(OBJDIR) -I$(INCDIR) #CFLAGS = -g3 -Wall ($PROF) $(NOCRYPT) L_FLAGS = -O -g $(PROF) #L_FLAGS = $(PROF) #VPATH=$(SRCDIR)/:$(INCDIR)/:$(OBJDIR)/ vpath %.c $(SRCDIR) vpath %.h $(INCDIR) vpath %.o $(OBJDIR) OBJS_darkshade = \ act_comm.o \ act_info.o \ act_move.o \ act_obj.o \ act_wiz.o \ comm.o \ const.o \ db.o \ fight.o \ handler.o \ interp.o \ magic.o \ magic2.o \ magic3.o \ magic4.o \ spell_dam.o \ mob_commands.o \ mob_prog.o \ save.o \ special.o \ update.o \ board.o \ areasave.o \ buildtab.o \ build.o \ write.o \ act_clan.o \ buildare.o \ hunt.o \ hash.o \ areachk.o \ clutch.o \ obj_fun.o \ macros.o \ trigger.o \ quest.o \ lists.o \ social-edit.o \ imc.o \ imc-mercbase.o \ imc-interp.o \ imc-version.o \ imc-mail.o \ imc-util.o \ imc-config.o \ imc-events.o \ ice.o \ icec.o \ icec-mercbase.o \ vampyre.o \ werewolf.o \ mount.o \ pdelete.o \ wizutil.o \ money.o \ ssm.o \ scheck.o \ rulers.o \ spendqp.o \ enchant.o \ sysdata.o \ strfuns.o \ mapper.o \ email.o \ overland.o \ file_io.o \ system.o \ vr_handler.o \ guilds.o \ interact.o \ craftspec.o darkshade: $(OBJS_darkshade) rm -f darkshade $(CC) $(L_FLAGS) -o darkshade $(OBJS_darkshade) -lm -lscrypt %.o: %.c $(CC) -c $(CFLAGS) $^ -o $@ # %.c: # $(CC) -c $(CFLAGS) $^ -o $@ clean: rm -f $(OBJS_darkshade) darkshade ../area/darkshade.core make To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message