#
# File:		Makefile
# Author:	
# Created:	
# Updated:	
# Copyright: LGPL.
#            Traveller is a registered trademark of Far Future Enterprises.	
#
# "$RCSfile: Makefile,v $ $Revision: 1.26 $ $Author: man $ $Date: 2003/11/02 01:19:48 $"

# ====== reference to where things are
TRAVDIR = ../..

# All common UNIX compiler flags and options will be in
# this central file.
include $(TRAVDIR)/src/lib/make.env

# ====== general defines
# --------- static libs
OBJECTS1 = $(OBJDIR)/basestar.o \
		$(OBJDIR)/planet.o \
		$(OBJDIR)/t_hex.o \
		$(OBJDIR)/t_dice.o \
		$(OBJDIR)/t_word.o \
		$(OBJDIR)/d_sect.o \
		$(OBJDIR)/color.o \
		$(OBJDIR)/basesect.o \
		$(OBJDIR)/hex_fmt.o \
		$(OBJDIR)/uwp.o \
		$(OBJDIR)/d_star.o \
		$(OBJDIR)/t_code.o \
		$(OBJDIR)/codetbl.o \
		$(OBJDIR)/llist.o \
		$(OBJDIR)/syst.o \
		$(OBJDIR)/str_util.o \
		$(OBJDIR)/3d.o \
		$(OBJDIR)/parse.o \
		$(OBJDIR)/tech_gen.o \
		$(OBJDIR)/stargen.o \
		$(OBJDIR)/uwpgen.o \
		$(OBJDIR)/hardtimes.o \
		$(OBJDIR)/universe.o

OBJECTS3 = $(OBJDIR)/t_dlg.o \
		$(OBJDIR)/t_frame.o \
		$(OBJDIR)/uwp_dlg.o \
		$(OBJDIR)/t_bm.o \
		$(OBJDIR)/t_help.o \
		$(OBJDIR)/code_dlg.o \
		$(OBJDIR)/sectdisp.o \
		$(OBJDIR)/systdisp.o \
		$(OBJDIR)/srch_dlg.o \
		$(OBJDIR)/sg_build.o \
		$(OBJDIR)/mtu_file.o \
		$(OBJDIR)/t_menu.o \
		$(OBJDIR)/clr_dlg.o

# --------- shared libs
SHARED_OBJECTS1 = $(SHARED_OBJDIR)/basestar.o \
		$(SHARED_OBJDIR)/planet.o \
		$(SHARED_OBJDIR)/t_hex.o \
		$(SHARED_OBJDIR)/t_dice.o \
		$(SHARED_OBJDIR)/t_word.o \
		$(SHARED_OBJDIR)/d_sect.o \
		$(SHARED_OBJDIR)/color.o \
		$(SHARED_OBJDIR)/basesect.o \
		$(SHARED_OBJDIR)/hex_fmt.o \
		$(SHARED_OBJDIR)/uwp.o \
		$(SHARED_OBJDIR)/d_star.o \
		$(SHARED_OBJDIR)/t_code.o \
		$(SHARED_OBJDIR)/codetbl.o \
		$(SHARED_OBJDIR)/llist.o \
		$(SHARED_OBJDIR)/syst.o \
		$(SHARED_OBJDIR)/str_util.o \
		$(SHARED_OBJDIR)/3d.o \
		$(SHARED_OBJDIR)/parse.o \
		$(SHARED_OBJDIR)/tech_gen.o \
		$(SHARED_OBJDIR)/stargen.o \
		$(SHARED_OBJDIR)/uwpgen.o \
		$(SHARED_OBJDIR)/hardtimes.o \
		$(SHARED_OBJDIR)/universe.o

SHARED_OBJECTS3 = $(SHARED_OBJDIR)/t_dlg.o \
		$(SHARED_OBJDIR)/t_frame.o \
		$(SHARED_OBJDIR)/uwp_dlg.o \
		$(SHARED_OBJDIR)/t_bm.o \
		$(SHARED_OBJDIR)/t_help.o \
		$(SHARED_OBJDIR)/code_dlg.o \
		$(SHARED_OBJDIR)/sectdisp.o \
		$(SHARED_OBJDIR)/systdisp.o \
		$(SHARED_OBJDIR)/srch_dlg.o \
		$(SHARED_OBJDIR)/sg_build.o \
		$(SHARED_OBJDIR)/mtu_file.o \
		$(SHARED_OBJDIR)/t_menu.o \
		$(SHARED_OBJDIR)/clr_dlg.o

# ========= dependencies
# --------- general
# NOTE:  even though this makefile doesn't need the bin directory,
#        it will be the first makefile called.  So, this is the one 
#		 sure place to make sure the bin directory is created.
all:    $(OBJDIR) $(TRAVLIBDEST) $(TRAVBINDEST) $(LIB1) $(LIB3)

shared:    $(SHARED_OBJDIR) $(TRAVLIBDEST) $(TRAVBINDEST) $(SHARED_LIB1) $(SHARED_LIB3)

# --------- static libs
$(OBJDIR)/basestar.o: basestar.cpp $(TRAVINCDIR)/basestar.h
	$(CC) -c -o $@ basestar.cpp $(CPPFLAGS)

$(OBJDIR)/planet.o: planet.cpp $(TRAVINCDIR)/planet.h
	$(CC) -c -o $@ planet.cpp $(CPPFLAGS)

$(OBJDIR)/uwp.o: uwp.cpp $(TRAVINCDIR)/uwp.h
	$(CC) -c -o $@ uwp.cpp $(CPPFLAGS)

$(OBJDIR)/codetbl.o: codetbl.cpp $(TRAVINCDIR)/codetbl.h
	$(CC) -c -o $@ codetbl.cpp $(CPPFLAGS)

$(OBJDIR)/llist.o: llist.cpp $(TRAVINCDIR)/llist.h
	$(CC) -c -o $@ llist.cpp $(CPPFLAGS)

$(OBJDIR)/d_star.o: d_star.cpp $(TRAVINCDIR)/d_star.h
	$(CC) -c -o $@ d_star.cpp $(CPPFLAGS)

$(OBJDIR)/syst.o: syst.cpp $(TRAVINCDIR)/syst.h
	$(CC) -c -o $@ syst.cpp $(CPPFLAGS)

$(OBJDIR)/t_code.o: t_code.cpp $(TRAVINCDIR)/t_code.h
	$(CC) -c -o $@ t_code.cpp $(CPPFLAGS)

$(OBJDIR)/t_dice.o: t_dice.cpp $(TRAVINCDIR)/t_dice.h
	$(CC) -c -o $@ t_dice.cpp $(CPPFLAGS)

$(OBJDIR)/t_word.o: t_word.cpp $(TRAVINCDIR)/t_word.h
	$(CC) -c -o $@ t_word.cpp $(CPPFLAGS)

$(OBJDIR)/basesect.o: basesect.cpp $(TRAVINCDIR)/basesect.h
	$(CC) -c -o $@ basesect.cpp $(CPPFLAGS)

$(OBJDIR)/hex_fmt.o: hex_fmt.cpp $(TRAVINCDIR)/hex_fmt.h
	$(CC) -c -o $@ hex_fmt.cpp $(CPPFLAGS)

$(OBJDIR)/d_sect.o: d_sect.cpp $(TRAVINCDIR)/d_sect.h
	$(CC) -c -o $@ d_sect.cpp $(CPPFLAGS)

$(OBJDIR)/color.o: color.cpp $(TRAVINCDIR)/color.h
	$(CC) -c -o $@ color.cpp $(CPPFLAGS)

$(OBJDIR)/t_hex.o: t_hex.cpp $(TRAVINCDIR)/t_hex.h
	$(CC) -c -o $@ t_hex.cpp $(CPPFLAGS)

$(OBJDIR)/str_util.o: str_util.c $(TRAVINCDIR)/str_util.h
	$(CCC) -c -o $@ str_util.c $(CFLAGS)

$(OBJDIR)/t_dlg.o: t_dlg.cpp $(TRAVINCDIR)/t_dlg.h
	$(CC) -c -o $@ t_dlg.cpp $(CPPFLAGS) $(GUI_INC)

$(OBJDIR)/t_frame.o: t_frame.cpp $(TRAVINCDIR)/t_frame.h
	$(CC) -c -o $@ t_frame.cpp $(CPPFLAGS) $(GUI_INC)

$(OBJDIR)/uwp_dlg.o: uwp_dlg.cpp $(TRAVINCDIR)/uwp_dlg.h
	$(CC) -c -o $@ uwp_dlg.cpp $(CPPFLAGS) $(GUI_INC)

$(OBJDIR)/3d.o: 3d.cpp $(TRAVINCDIR)/3d.h
	$(CC) -c -o $@ 3d.cpp $(CPPFLAGS)

$(OBJDIR)/parse.o: parse.cpp $(TRAVINCDIR)/parse.h
	$(CC) -c -o $@ parse.cpp $(CPPFLAGS)

$(OBJDIR)/tech_gen.o: tech_gen.cpp $(TRAVINCDIR)/tech_gen.h
	$(CC) -c -o $@ tech_gen.cpp $(CPPFLAGS)

$(OBJDIR)/stargen.o: stargen.cpp $(TRAVINCDIR)/stargen.h
	$(CC) -c -o $@ stargen.cpp $(CPPFLAGS)

$(OBJDIR)/uwpgen.o: uwpgen.cpp $(TRAVINCDIR)/uwpgen.h
	$(CC) -c -o $@ uwpgen.cpp $(CPPFLAGS)

$(OBJDIR)/ewp.o: ewp.cpp $(TRAVINCDIR)/ewp.h
	$(CC) -c -o $@ ewp.cpp $(CPPFLAGS)

$(OBJDIR)/hardtimes.o: hardtimes.cpp $(TRAVINCDIR)/hardtimes.h
	$(CC) -c -o $@ hardtimes.cpp $(CPPFLAGS)

$(OBJDIR)/universe.o: universe.cpp $(TRAVINCDIR)/universe.h
	$(CC) -c -o $@ universe.cpp $(CPPFLAGS)

$(OBJDIR)/t_bm.o: t_bm.cpp $(TRAVINCDIR)/t_bm.h
	$(CC) -c -o $@ t_bm.cpp $(CPPFLAGS) $(GUI_INC)

$(OBJDIR)/t_help.o: t_help.cpp $(TRAVINCDIR)/t_help.h
	$(CC) -c -o $@ t_help.cpp $(CPPFLAGS) $(GUI_INC)

$(OBJDIR)/code_dlg.o: code_dlg.cpp $(TRAVINCDIR)/code_dlg.h
	$(CC) -c -o $@ code_dlg.cpp $(CPPFLAGS) $(GUI_INC)

$(OBJDIR)/srch_dlg.o: srch_dlg.cpp $(TRAVINCDIR)/srch_dlg.h
	$(CC) -c -o $@ srch_dlg.cpp $(CPPFLAGS) $(GUI_INC)

$(OBJDIR)/sg_build.o: sg_build.cpp $(TRAVINCDIR)/sg_build.h
	$(CC) -c -o $@ sg_build.cpp $(CPPFLAGS) $(GUI_INC)

$(OBJDIR)/sectdisp.o: sectdisp.cpp $(TRAVINCDIR)/sectdisp.h
	$(CC) -c -o $@ sectdisp.cpp $(CPPFLAGS) $(GUI_INC)

$(OBJDIR)/systdisp.o: systdisp.cpp $(TRAVINCDIR)/systdisp.h
	$(CC) -c -o $@ systdisp.cpp $(CPPFLAGS) $(GUI_INC)

$(OBJDIR)/mtu_file.o: mtu_file.cpp $(TRAVINCDIR)/mtu_file.h
	$(CC) -c -o $@ mtu_file.cpp $(CPPFLAGS) $(GUI_INC)

$(OBJDIR)/t_menu.o: t_menu.cpp $(TRAVINCDIR)/t_menu.h
	$(CC) -c -o $@ t_menu.cpp $(CPPFLAGS) $(GUI_INC)

$(OBJDIR)/clr_dlg.o: clr_dlg.cpp $(TRAVINCDIR)/clr_dlg.h
	$(CC) -c -o $@ clr_dlg.cpp $(CPPFLAGS) $(GUI_INC)


$(LIB1): $(OBJECTS1)
	ar $(AROPTIONS) $@ $(OBJECTS1)
	$(RANLIB) $@

$(LIB3): $(OBJECTS3)
	ar $(AROPTIONS) $@ $(OBJECTS3)
	$(RANLIB) $@


$(OBJDIR):
	mkdir $(OBJDIR)

$(TRAVBINDEST):
	mkdir $(TRAVBINDEST)

$(TRAVLIBDEST):
	mkdir $(TRAVLIBDEST)

# --------- shared libs
$(SHARED_OBJDIR)/basestar.o: basestar.cpp $(TRAVINCDIR)/basestar.h
	$(CC) -c -o $@ basestar.cpp $(CPPFLAGS_SH)

$(SHARED_OBJDIR)/planet.o: planet.cpp $(TRAVINCDIR)/planet.h
	$(CC) -c -o $@ planet.cpp $(CPPFLAGS_SH)

$(SHARED_OBJDIR)/uwp.o: uwp.cpp $(TRAVINCDIR)/uwp.h
	$(CC) -c -o $@ uwp.cpp $(CPPFLAGS_SH)

$(SHARED_OBJDIR)/codetbl.o: codetbl.cpp $(TRAVINCDIR)/codetbl.h
	$(CC) -c -o $@ codetbl.cpp $(CPPFLAGS_SH)

$(SHARED_OBJDIR)/d_star.o: d_star.cpp $(TRAVINCDIR)/d_star.h
	$(CC) -c -o $@ d_star.cpp $(CPPFLAGS_SH)

$(SHARED_OBJDIR)/syst.o: syst.cpp $(TRAVINCDIR)/syst.h
	$(CC) -c -o $@ syst.cpp $(CPPFLAGS_SH)

$(SHARED_OBJDIR)/t_code.o: t_code.cpp $(TRAVINCDIR)/t_code.h
	$(CC) -c -o $@ t_code.cpp $(CPPFLAGS_SH)

$(SHARED_OBJDIR)/t_dice.o: t_dice.cpp $(TRAVINCDIR)/t_dice.h
	$(CC) -c -o $@ t_dice.cpp $(CPPFLAGS_SH)

$(SHARED_OBJDIR)/t_word.o: t_word.cpp $(TRAVINCDIR)/t_word.h
	$(CC) -c -o $@ t_word.cpp $(CPPFLAGS_SH)

$(SHARED_OBJDIR)/llist.o: llist.cpp $(TRAVINCDIR)/llist.h
	$(CC) -c -o $@ llist.cpp $(CPPFLAGS_SH)

$(SHARED_OBJDIR)/basesect.o: basesect.cpp $(TRAVINCDIR)/basesect.h
	$(CC) -c -o $@ basesect.cpp $(CPPFLAGS_SH)

$(SHARED_OBJDIR)/hex_fmt.o: hex_fmt.cpp $(TRAVINCDIR)/hex_fmt.h
	$(CC) -c -o $@ hex_fmt.cpp $(CPPFLAGS_SH)

$(SHARED_OBJDIR)/color.o: color.cpp $(TRAVINCDIR)/color.h
	$(CC) -c -o $@ color.cpp $(CPPFLAGS_SH)

$(SHARED_OBJDIR)/d_sect.o: d_sect.cpp $(TRAVINCDIR)/d_sect.h
	$(CC) -c -o $@ d_sect.cpp $(CPPFLAGS_SH)

$(SHARED_OBJDIR)/t_hex.o: t_hex.cpp $(TRAVINCDIR)/t_hex.h
	$(CC) -c -o $@ t_hex.cpp $(CPPFLAGS_SH)

$(SHARED_OBJDIR)/str_util.o: str_util.c $(TRAVINCDIR)/str_util.h
	$(CCC) -c -o $@ str_util.c $(CFLAGS_SH)

$(SHARED_OBJDIR)/t_dlg.o: t_dlg.cpp $(TRAVINCDIR)/t_dlg.h
	$(CC) -c -o $@ t_dlg.cpp $(CPPFLAGS_SH) $(GUI_INC)

$(SHARED_OBJDIR)/t_frame.o: t_frame.cpp $(TRAVINCDIR)/t_frame.h
	$(CC) -c -o $@ t_frame.cpp $(CPPFLAGS_SH) $(GUI_INC)

$(SHARED_OBJDIR)/uwp_dlg.o: uwp_dlg.cpp $(TRAVINCDIR)/uwp_dlg.h
	$(CC) -c -o $@ uwp_dlg.cpp $(CPPFLAGS_SH) $(GUI_INC)

$(SHARED_OBJDIR)/3d.o: 3d.cpp $(TRAVINCDIR)/3d.h
	$(CC) -c -o $@ 3d.cpp $(CPPFLAGS_SH)

$(SHARED_OBJDIR)/parse.o: parse.cpp $(TRAVINCDIR)/parse.h
	$(CC) -c -o $@ parse.cpp $(CPPFLAGS_SH)

$(SHARED_OBJDIR)/tech_gen.o: tech_gen.cpp $(TRAVINCDIR)/tech_gen.h
	$(CC) -c -o $@ tech_gen.cpp $(CPPFLAGS_SH)

$(SHARED_OBJDIR)/stargen.o: stargen.cpp $(TRAVINCDIR)/stargen.h
	$(CC) -c -o $@ stargen.cpp $(CPPFLAGS_SH)

$(SHARED_OBJDIR)/uwpgen.o: uwpgen.cpp $(TRAVINCDIR)/uwpgen.h
	$(CC) -c -o $@ uwpgen.cpp $(CPPFLAGS_SH)

$(SHARED_OBJDIR)/ewp.o: ewp.cpp $(TRAVINCDIR)/ewp.h
	$(CC) -c -o $@ ewp.cpp $(CPPFLAGS_SH)

$(SHARED_OBJDIR)/hardtimes.o: hardtimes.cpp $(TRAVINCDIR)/hardtimes.h
	$(CC) -c -o $@ hardtimes.cpp $(CPPFLAGS_SH)

$(SHARED_OBJDIR)/universe.o: universe.cpp $(TRAVINCDIR)/universe.h
	$(CC) -c -o $@ universe.cpp $(CPPFLAGS_SH)

$(SHARED_OBJDIR)/t_bm.o: t_bm.cpp $(TRAVINCDIR)/t_bm.h
	$(CC) -c -o $@ t_bm.cpp $(CPPFLAGS_SH) $(GUI_INC)

$(SHARED_OBJDIR)/t_help.o: t_help.cpp $(TRAVINCDIR)/t_help.h
	$(CC) -c -o $@ t_help.cpp $(CPPFLAGS_SH) $(GUI_INC)

$(SHARED_OBJDIR)/clr_dlg.o: clr_dlg.cpp $(TRAVINCDIR)/clr_dlg.h
	$(CC) -c -o $@ clr_dlg.cpp $(CPPFLAGS_SH) $(GUI_INC)

$(SHARED_OBJDIR)/code_dlg.o: code_dlg.cpp $(TRAVINCDIR)/code_dlg.h
	$(CC) -c -o $@ code_dlg.cpp $(CPPFLAGS_SH) $(GUI_INC)

$(SHARED_OBJDIR)/srch_dlg.o: srch_dlg.cpp $(TRAVINCDIR)/srch_dlg.h
	$(CC) -c -o $@ srch_dlg.cpp $(CPPFLAGS_SH) $(GUI_INC)

$(SHARED_OBJDIR)/sg_build.o: sg_build.cpp $(TRAVINCDIR)/sg_build.h
	$(CC) -c -o $@ sg_build.cpp $(CPPFLAGS_SH) $(GUI_INC)

$(SHARED_OBJDIR)/sectdisp.o: sectdisp.cpp $(TRAVINCDIR)/sectdisp.h
	$(CC) -c -o $@ sectdisp.cpp $(CPPFLAGS_SH) $(GUI_INC)

$(SHARED_OBJDIR)/mtu_file.o: mtu_file.cpp $(TRAVINCDIR)/mtu_file.h
	$(CC) -c -o $@ mtu_file.cpp $(CPPFLAGS_SH) $(GUI_INC)

$(SHARED_OBJDIR)/t_menu.o: t_menu.cpp $(TRAVINCDIR)/t_menu.h
	$(CC) -c -o $@ t_menu.cpp $(CPPFLAGS_SH) $(GUI_INC)

$(SHARED_OBJDIR)/systdisp.o: systdisp.cpp $(TRAVINCDIR)/systdisp.h
	$(CC) -c -o $@ systdisp.cpp $(CPPFLAGS_SH) $(GUI_INC)

$(SHARED_OBJDIR):
	mkdir $(SHARED_OBJDIR)


${SHARED_LIB1}: ${SHARED_OBJECTS1}
	gcc -shared -Wl,-soname,lib${LIB_NAME1}.so.${MAJOR_SHARED} -o ${SHARED_LIB1} ${SHARED_OBJECTS1}
	chmod a+x ${SHARED_LIB1}
	rm -f ${SHARED_DIR}/lib${LIB_NAME1}.so.${MAJOR_SHARED}
	(cd ${SHARED_DIR}; ln -s lib${LIB_NAME1}.so.${MAJOR_SHARED}.${MINOR_SHARED} lib${LIB_NAME1}.so.${MAJOR_SHARED})
	rm -f ${SHARED_DIR}/lib${LIB_NAME1}.so
	(cd ${SHARED_DIR}; ln -s lib${LIB_NAME1}.so.${MAJOR_SHARED}.${MINOR_SHARED} lib${LIB_NAME1}.so)


${SHARED_LIB3}: ${SHARED_OBJECTS3}
	gcc -shared -Wl,-soname,lib${LIB_NAME3}.so.${MAJOR_SHARED} -o ${SHARED_LIB3} ${SHARED_OBJECTS3}
	chmod a+x ${SHARED_LIB3}
	rm -f ${SHARED_DIR}/lib${LIB_NAME3}.so.${MAJOR_SHARED}
	(cd ${SHARED_DIR}; ln -s lib${LIB_NAME3}.so.${MAJOR_SHARED}.${MINOR_SHARED} lib${LIB_NAME3}.so.${MAJOR_SHARED})
	rm -f ${SHARED_DIR}/lib${LIB_NAME3}.so
	(cd ${SHARED_DIR}; ln -s lib${LIB_NAME3}.so.${MAJOR_SHARED}.${MINOR_SHARED} lib${LIB_NAME3}.so)

# --------- general
clean:
	rm -f $(OBJECTS1) $(OBJECTS3) ${SHARED_OBJECTS1} ${SHARED_OBJECTS3} core ${TRAVLIBDEST}/*.a *.so *~

clobber:
	rm -f $(OBJECTS1) $(OBJECTS3) ${SHARED_OBJECTS1} ${SHARED_OBJECTS3} core ${TRAVLIBDEST}/lib* *~

