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            db.c       editor.c       fight.c      finfo.c      force.c     fskills.c \
    functions.c       handler.c      hashstr.c      hunter.c         id.c     interp.c       magic.c \
     makeobjs.c      marriage.c          md5.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
    COPYFILE = ../bin/cygwin/copyfile
else
   SWR = swr
endif

SWR_OLD = ../bin/swr_old.exe

all:
	$(MAKE) -s swr

swr  : $(O_FILES)
	rm -f $(SWR)

ifdef CYGWIN_FLAG
	dlltool --export-all --output-def ../bin/cygwin/swr.def $(O_FILES)
	dlltool --dllname $(SWR) --output-exp ../bin/cygwin/swr.exp --def ../bin/cygwin/swr.def
	$(CC) -o $(SWR) $(O_FILES) ../bin/cygwin/swr.exp $(L_FLAGS)
else
	$(CC) -o $(SWR) $(O_FILES) $(L_FLAGS) -lm -lcrypt
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
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) $<

