Problem with SWFOTE 2.1 compile: swr.exe not generated

Posted by GradiumX on Wed 09 Apr 2008 02:15 PM — 4 posts, 16,158 views.

#0
Hello everyone. Its nice to meet you! Unfortunately I've been working very hard to no avail to compile my first ever SWR mud.

I plan to use this solely to build complex level projects and then be able to build offline for other SWR Muds that are looking for projects.

That aside...

My problem I guess is getting the swr.exe to actually appear AND remain there!

What's very strange is that I receive no errors in the compile, and the swr.exe appears momentarily before disappearing again!

Here is my makefile source:

CC = gcc
PROF =
NOCRYPT =

#Uncomment the line below if you are getting undefined references to dlsym, dlopen, and dlclose.
#Comment it out if you get errors about ldl not being found.
NEED_DL = -ldl

#Uncomment if using CYGWIN to compile with
CYGWIN_FLAG = -DCYGWIN

#Some systems need this for dynamic linking to work.
EXPORT_SYMBOLS = -export-dynamic

C_FLAGS = -g2 -Wall $(EXPORT_SYMBOLS) $(CYGWIN_FLAG) $(PROF) $(NOCRYPT) $(DBUGFLG) $(EXPORT_SYMBOLS)
L_FLAGS = $(PROF) $(EXPORT_SYMBOLS) $(CYGWIN_FLAG) $(NEED_DL) -lz -g2

#Comment out to disable cargo
USECARGO = 1

ifdef USECARGO
C_FLAGS := $(C_FLAGS) -DUSECARGO
endif


C_FILES = 11.c act_comm.c act_info.c act_move.c act_obj.c act_wiz.c boards.c \
bounty.c build.c changes.c clans.c color.c comm.c comments.c \
const.c copyover.c db.c editor.c fight.c finfo.c force.c \
fskills.c functions.c handler.c hashstr.c hunter.c interp.c keb.c \
magic.c makeobjs.c marriage.c md5.c mccp.c misc.c mud_comm.c \
mud_prog.c newarena.c pfiles.c planets.c player.c renumber.c reset.c \
save.c ships.c shops.c skills.c slay.c slicers.c slotm.c \
space.c special.c swskills.c tables.c tech.c track.c update.c


O_FILES := $(patsubst %.c,o/%.o,$(C_FILES))

H_FILES = $(wildcard *.h)

ifdef CYGWIN_FLAG
SWR = swr.exe
else
SWR = swr
endif

SWR_OLD = ../bin/swr_old.exe
COPYFILE = ../bin/cygwin/copyfile

all:
$(MAKE) -s swr

# pull in dependency info for *existing* .o files
-include dependencies.d

swr: $(O_FILES)
rm -f $(SWR)
ifdef CYGWIN_FLAG
echo "Generating dependency file ...";
$(CC) -MM $(C_FLAGS) $(C_FILES) > dependencies.d
perl -pi -e 's.^([a-z]).o/$$1.g' dependencies.d
dlltool --export-all --output-def swr.def $(O_FILES)
dlltool --dllname $(SWR) --output-exp swr.exp --def swr.def
$(CC) -o $(SWR) $(O_FILES) swr.exp $(L_FLAGS)
else
$(CC) -o $(SWR) $(O_FILES) $(L_FLAGS)
endif
echo " ";
echo "Done compiling mud.";
chmod g+w $(SWR)
chmod a+x $(SWR)
chmod g+w $(O_FILES)
ifdef CYGWIN_FLAG
./$(COPYFILE)
endif
mv $(SWR) ../bin

clean:
ifdef CYGWIN_FLAG
rm -f o/*.o ../bin/other/swr.def ../bin/cygwin/swr.exp
chmod g+w $(COPYFILE)
chmod a+x $(COPYFILE)
./$(COPYFILE)
# $(MAKE) all
else
rm -f o/*.o $(SWR_OLD) ../bin/$(SWR) ../bin/${SWR}.exe ../bin/win/swr.def ../bin/cygwin/swr.exp
# $(MAKE) all
endif


purge:
ifdef CYGWIN_FLAG
rm -f o/*.o ../bin/cygwin/swr.def ../bin/cygwin/swr.exp dependencies.d
else
rm -f o/*.o $(SWR_OLD) $(SWR) ../bin/cygwin/swr.def ../bin/cygwin/swr.exp
endif


o/%.o: %.c
# echo " Compiling $@....";
echo " $@";
$(CC) -c $(C_FLAGS) $< -o $@

.c.o: mud.h
$(CC) -c $(C_FLAGS) $<


-- End Makefile -- (This line is not in the source haha)

Thank you for your help! I sincerely hope I can get this working so I can begin building worlds again :)

-Gradium

GradiumX@yahoo.com
USA #1
It looks like it moves swr.exe to the bin/ directory.
#2
David thank you so much for your prompt reply!!

I feel as if I've shed just one more layer off my newbish self :)

Much obliged ^_^
USA #3
No problem. :) I think it's actually kind of unusual for a program to actually move the file into the bin directory; normally you compile into the src directory and then an install command will copy the files into the appropriate final location. I would also have been surprised to see the file go away... But when in doubt, look at the makefile! It looks like gibberish at first but it's not so bad, really... ;)