# COPYRIGHT
#
# This file is part of Mustajuuri.
#
# Author: Tommi Ilmonen, 1999-2001.
#
# Mustajuuri is licensed under GNU Lesser General Public License
# (LGPL). The LGPL text can be founs in file "LGPL" that is
# distributed with this source package. The Mustajuuri way to
# interpret LGPL can be found in file "MUSTAJUURI_LICENSE" that is
# distributed with the mustajuuri source code.  
#

ifeq ($(strip $(LIBRARY)),)

else
DLIBRARY      = lib$(LIBRARY).so
LIBDLIBRARY   = $(LIB)/$(DLIBRARY)
SLIBRARY      = lib$(LIBRARY).a
LLIBRARY      =-l$(LIBRARY)
endif


#
# Rules
#

$(BINDIR):
		mkdir $(BINDIR)
		@$(EXECPERMISSIONS) $(PLATFORM)

$(LIBDIR):
		mkdir $(LIBDIR)
		@$(EXECPERMISSIONS) $(PLATFORM)

$(PLUGINDIR):
		mkdir $(PLUGINDIR)
		@$(EXECPERMISSIONS) $(PLATFORM)

$(PLATFORM):
		mkdir $(PLATFORM)
		@$(EXECPERMISSIONS) $(PLATFORM)

sbin: $(PLATFORM)/smain

dbin: $(PLATFORM)/dmain

kbin: $(PLATFORM)/kmain

$(PLATFORM)/dmain: $(BINDIR) $(PLATFORM) $(DLIBS) $(LIBDLIBRARY) $(PLATFORM)/$(MAINOBJ)
		@echo "Linking $(PLATFORM)/dmain ..."
		$(LD) -o $(PLATFORM)/dmain $(PLATFORM)/$(MAINOBJ) $(DLIBS) $(LDFLAGS) $(LLIBRARY) $(LIBS)
		@$(EXECPERMISSIONS) $(PLATFORM)/dmain

$(PLATFORM)/smain: $(BINDIR) $(PLATFORM) $(addprefix $(PLATFORM)/,$(OBJS)) $(PLATFORM)/$(MAINOBJ)
		@echo "Linking $(PLATFORM)/smain..."
		$(CXX) -o $(PLATFORM)/smain $(addprefix $(PLATFORM)/,$(OBJS)) \
		$(PLATFORM)/$(MAINOBJ) $(LDFLAGS) $(SLIBS) $(LIBS)
		@$(EXECPERMISSIONS) $(PLATFORM)/smain


dlib: $(PLATFORM) $(PLATFORM)/$(DLIBRARY)
		@$(EXECPERMISSIONS) $(PLATFORM)/$(DLIBRARY)

slib: $(PLATFORM) $(PLATFORM)/$(SLIBRARY)

libs: slib dlib

plugin: $(PLUGINDIR) dlib
		cd $(FLUID_ROOT)/plugins/$(PLATFORM)/; ln -s -f $(PWD)/$(PLATFORM)/$(DLIBRARY) .

# Note that the old archive is always removed before a new one is
# created. This prevents the nasty 'unresolvable symbols' syndrome
# that will result when objects are removed from the library but not
# from the archive. This can happen because 'ar' normally updates the
# archive by replacing changed objects and inserting new ones, but it
# does not voluntarily remove anything.

$(PLATFORM)/lib$(LIBRARY).a: $(LIBDIR)  $(addprefix $(PLATFORM)/,$(OBJS))
		@echo "Creating $(PLATFORM)/$(SLIBRARY) ..."
		@-rm -f $(PLATFORM)/$(SLIBRARY)
		cd $(PLATFORM); $(AR) $(ARFLAGS) $(SLIBRARY) $(OBJS)
		@$(NORMALPERMISSIONS) $(PLATFORM)/$(SLIBRARY)
		cd $(LIB)/; ln -s -f $(PWD)/$(PLATFORM)/$(SLIBRARY) .

#		@$(RANLIB) $(PLATFORM)/$(SLIBRARY)

depend:		$(DEPENDS)

TARGET_QM_FILES := $(addprefix $(FLUID_ROOT)/etc/,$(QMFILES))

tr translate: $(QMFILES)
		cp -f $(QMFILES) $(FLUID_ROOT)/etc/
		@$(NORMALPERMISSIONS) $(QMFILES)

doff dependoff:;	$(TOUCHFUTURE) 

don dependon:;	rm $(DEPENDS)

clean:;		@echo "Removing object files and core ..."
		@-rm -f $(PLATFORM)/*.o

cleaner:	clean
		@echo "Removing emacs backup files ..."
		@-rm -f *~
		@-rm -f #*#
		@-rm -f */*~
		@-rm -f */#*#

cleanest:	cleaner
		@echo "Removing executables and libraries ..."
		@-rm -f $(PLATFORM)/dmain
		@-rm -f $(PLATFORM)/smain
		@-rm -f $(PLATFORM)/$(DLIBRARY)
		@-rm -f $(PLATFORM)/$(SLIBRARY)

dirs:;		-mkdir $(PLATFORM)

linkdirs:;      @-ln -s -f $(OLDSYSTEM) $(NEWSYSTEM)


# Note the use of the '$^' automatic variable in the $(DEPENDS) rule.
# '$^' lists all rule dependencies after VPATH expansion.

$(DEPENDS):	$(PLATFORM) $(HDRS) $(SRCS) $(MAINSRC)
		@echo "Creating $(DEPENDS) ..."
		rm -f $(DEPENDS)
		$(CXX) -c -M $(STDLANG) $(CFLAGS) $(TFLAGS) $(CXXFLAGS) $(SRCS) $(MAINSRC) | awk '/^[^:]*:/ { print "$(PLATFORM)/"$$0 } /^[^:]*$$/' > $(DEPENDS)
		@$(NORMALPERMISSIONS) $(DEPENDS)


dep: $(DEPENDS)
		$(TOUCHFUTURE)

# $(SRCS) $(MAINSRC); $(CXX) -c -M $(CFLAGS) $(TFLAGS) -I$(PLATFORM) $^ | awk '/^[^:]*:/ { print "$(PLATFORM)/"$$0 } /^[^:]*$$/' > $(DEPENDS)

%.C : $(PLATFORM)/RCS/%.C,v
		cd $(PLATFORM); $(CO) $(COFLAGS) $(@F)

%.h : $(PLATFORM)/RCS/%.h,v
		cd $(PLATFORM); $(CO) $(COFLAGS) $(@F)

%.C : RCS/%.C,v
		$(CO) $(COFLAGS) $@

%.h : RCS/%.h,v
		$(CO) $(COFLAGS) $@

$(PLATFORM)/%.o : %.C
		$(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $< -o $@
		@$(NORMALPERMISSIONS) $@

$(PLATFORM)/%.o : %.cc
		$(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $< -o $@
		@$(NORMALPERMISSIONS) $@

$(PLATFORM)/%.o : %.cpp
		$(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $< -o $@
		@$(NORMALPERMISSIONS) $@

$(PLATFORM)/%.o : %.c
		$(CC) -c $(CFLAGS) $< -o $@
		@$(NORMALPERMISSIONS) $@

# For the msg2qm in Qt.
%.qm: %.po
		$(MSG2QM) $< $@
		@$(NORMALPERMISSIONS) $@

# For the moc in Qt.
%_moc.C: %.h
		$(MOC) $< -o $@
		@$(NORMALPERMISSIONS) $@

# For the moc in Qt.
%_moc.cc: %.h
		$(MOC) $< -o $@
		@$(NORMALPERMISSIONS) $@

# For the moc in Qt.
%_moc.cc: %.hh
		$(MOC) $< -o $@
		@$(NORMALPERMISSIONS) $@

# For the moc in Qt.
moc_%.cpp: %.h
		$(MOC) $< -o $@
		@$(NORMALPERMISSIONS) $@

# For the moc in Qt.
%_moc.cpp: %.hpp
		$(MOC) $< -o $@
		@$(NORMALPERMISSIONS) $@

# For Swig
%_wrap.c: %.i
		$(SWIG) $<
# For Swig
%_wrap.C: %.i
		$(SWIG) -c++ -shadow -o $@ $<


#
# Dependencies
#

ifeq ($(SYSTEMTYPE),Linux)

#Linux:

$(PLATFORM)/lib$(LIBRARY).so: $(LIBDIR) $(addprefix $(PLATFORM)/,$(OBJS))
		@echo "Creating $(PLATFORM)/$(DLIBRARY) ..."
		-rm -f $(PLATFORM)/$(DLIBRARY) $(PLATFORM)/so_locations
		cd $(PLATFORM); $(LD) $(LDFLAGS) -shared $(OBJS)  $(DLIBS) $(LIBS) -o $(DLIBRARY)
		@$(EXECPERMISSIONS) $(PLATFORM)/$(DLIBRARY)
		cd $(LIB)/; ln -s -f $(PWD)/$(PLATFORM)/$(DLIBRARY) .

else

# IRIX with MipsPro CC

$(PLATFORM)/lib$(LIBRARY).so: $(LIBDIR) $(PLATFORM)/$(SLIBRARY)
		@echo "Creating $(PLATFORM)/$(DLIBRARY) ..."
		-rm -f $(PLATFORM)/$(DLIBRARY) $(PLATFORM)/so_locations
		cd $(PLATFORM); $(LD) $(LDFLAGS) -shared $(OBJS) $(DLIBS) $(LIBS)  -o $(DLIBRARY); 
		@$(EXECPERMISSIONS) $(PLATFORM)/$(DLIBRARY)
		@$(EXECPERMISSIONS) $(PLATFORM)/ii_files
		@$(NORMALPERMISSIONS) $(PLATFORM)/ii_files/*
		@$(NORMALPERMISSIONS) $(PLATFORM)/so_locations
		cd $(LIB)/; ln -s -f $(PWD)/$(PLATFORM)/$(DLIBRARY) .

endif

include $(DEPENDS)
