# 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   = $(MUSTAJUURI_LIB_TARGET)/$(DLIBRARY)
SLIBRARY      = lib$(LIBRARY).a
LLIBRARY      =-l$(LIBRARY)
endif

#
# Rules
#

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

$(BINDIR): 
		mkdir $(BINDIR)$
		$(EXECPERMISSIONS) $(BINDIR)

OBJ_FILES     := $(addprefix $(PLATFORM)/,$(OBJS))
# DEPEND_FILES  := $(OBJ_FILES:.o=.dep)


#ifeq ($(strip $(MAINOBJ)),)
#else
#  TMPFOO := $(addprefix $(PLATFORM)/,$(MAINOBJ))
#  DEPEND_FILES  += $(TMPFOO:.o=.dep)
#endif

sbin: $(BINDIR) $(PLATFORM)/smain

dbin: $(BINDIR) dlib $(PLATFORM)/dmain

kbin: $(PLATFORM)/kmain

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

$(PLATFORM)/smain: $(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

$(PLATFORM)/kmain: $(PLATFORM) $(PLATFORM)/$(MAINOBJ)
		@echo "Making $(PLATFORM)/kmain ..."
		$(CXX)  $(LDFLAGS) -o $(PLATFORM)/kmain \
		$(PLATFORM)/$(MAINOBJ)  $(SLIBS) $(LIBS) $(MEM)
		$(EXECPERMISSIONS) $(PLATFORM)/kmain

$(MUSTAJUURI_LIB_TARGET): 
		mkdir $(MUSTAJUURI_LIB_TARGET)
		$(EXECPERMISSIONS) $(MUSTAJUURI_LIB_TARGET)

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

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

libs: slib dlib

plugin: dlib
		cd $(PLUGIN_TARGET_DIR); \
		rm -f $(DLIBRARY) ; \
		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: $(addprefix $(PLATFORM)/,$(OBJS))
		@echo "Creating $(PLATFORM)/$(SLIBRARY) ..."
		-rm -f $(PLATFORM)/$(SLIBRARY)
		cd $(PLATFORM); $(AR) $(ARFLAGS) $(SLIBRARY) $(OBJS)
		$(NORMALPERMISSIONS) $(PLATFORM)/$(SLIBRARY)
		$(RANLIB) $(PLATFORM)/$(SLIBRARY)
		cd $(MUSTAJUURI_LIB_TARGET)/; rm -f $(SLIBRARY); \
		ln -s -f $(PWD)/$(PLATFORM)/$(SLIBRARY) .

depend:		$(DEPENDS)

# depend:		$(DEPEND_FILES)

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

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

doff dependoff:;	$(TOUCHFUTURE) 

don dependon:;	rm $(DEPENDS)

#doff dependoff: $(DEPEND_FILES)
#		$(TOUCHFUTURE) 

#don dependon:;	rm $(DEPEND_FILES)

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

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)

cleanlibs:;      @echo "Removing library files ..."
		find $(PLATFORM) \( -name '*.a' -o -name '*.so' \) -exec rm -f {} \; ;

dirs:;		-mkdir $(PLATFORM)

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

# Prints current configuration parameters
configprint:;
		@echo "PLATFORM     = $(PLATFORM)"
		@echo "QTDIR        = $(QTDIR)"
		@echo "CC           = $(CC)"
		@echo "CXX          = $(CXX)"
		@echo "DEBUGFLAGS   = $(DEBUGFLAGS)"
		@echo "RELEASEFLAGS = $(RELEASEFLAGS)"
		@echo "CFLAGS       = $(CFLAGS)"
		@echo "CXXFLAGS     = $(CXXFLAGS)"
		@echo "INCLUDES     = $(INCLUDES)"
		@echo "LDFLAGS      = $(LDFLAGS)"

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

# isbindir: 	$(PLATFORM)

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


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

#dep:
#		$(MAKE) don
#		$(MAKE) doff

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

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

$(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) $@

#$(PLATFORM)/%.dep : %.C
#		$(CXX) -c -M $(CFLAGS) $(TFLAGS) -I$(PLATFORM) $< | awk '/^[^:]*:/ { print "$(PLATFORM)/"$$0 } /^[^:]*$$/' > $@
#		$(NORMALPERMISSIONS) $@

#$(PLATFORM)/%.dep : %.cc
#		$(CXX) -c -M $(CFLAGS) $(TFLAGS) -I$(PLATFORM) $< | awk '/^[^:]*:/ { print "$(PLATFORM)/"$$0 } /^[^:]*$$/' > $@
#		$(NORMALPERMISSIONS) $@

#$(PLATFORM)/%.dep : %.cpp
#		$(CXX) -c -M $(CFLAGS) $(TFLAGS) -I$(PLATFORM) $< | awk '/^[^:]*:/ { print "$(PLATFORM)/"$$0 } /^[^:]*$$/' > $@
#		$(NORMALPERMISSIONS) $@

#$(PLATFORM)/%.dep : %.c
#		$(CC) -c -M $(CFLAGS) $(TFLAGS) -I$(PLATFORM) $< | awk '/^[^:]*:/ { print "$(PLATFORM)/"$$0 } /^[^:]*$$/' > $@
#		$(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: %.hpp
		$(MOC) $< -o $@
		$(NORMALPERMISSIONS) $@

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


# For Swig-Python
%_swigpy.C: %.i
		$(SWIG) $(SWIGFLAGS) -c++ -python -shadow -o $@ $<
		$(NORMALPERMISSIONS) $@

%_swigpy.cpp: %.i
		$(SWIG) $(SWIGFLAGS) -c++ -python -shadow -o $@ $<
		$(NORMALPERMISSIONS) $@


#
# Dependencies
#

include $(MUSTAJUURI_PATH)/src/$(PLATFORM)/Makelibs

# $(DEPEND_FILES): $(PLATFORM)

# include $(DEPEND_FILES)

include $(DEPENDS)