# flext - C++ layer for Max/MSP and pd (pure data) externals # Copyright (c) 2001-2004 Thomas Grill (xovo@gmx.net) # # Makefile for gcc @ mingw # # usage: # to build run "make -f makefile.pd-mingw" # # --------------------------------------------- CONFIG=config-pd-mingw.txt MAKEFILE=makefile.pd-mingw include $(CONFIG) # compiler+linker stuff INCLUDES=$(PDPATH)/src FLAGS=-DFLEXT_SYS=2 $(UFLAGS) CFLAGS=-O2 CFLAGS_D=-DFLEXT_DEBUG -g CFLAGS_T=-DFLEXT_THREADS CFLAGS_S=-DFLEXT_SHARED -DFLEXT_EXPORTS PDLIBS=$(PDPATH)/bin/pd.dll $(PDPATH)/bin/pthreadVC.dll INSTDIR=$(PDPATH)/flext # ---------------------------------------------- # the rest can stay untouched # ---------------------------------------------- NAME=flext SRCDIR=source # all the source files from the package include make-files.txt ifdef SNDOBJ INCLUDES+=$(SNDOBJ) SRCS+=$(SRCS_SNDOBJ) HDRS+=$(HDRS_SNDOBJ) endif ifdef STK INCLUDES+=$(STK) SRCS+=$(SRCS_STK) HDRS+=$(HDRS_STK) endif TARGET=$(TARGDIR)/$(NAME)-pdwin.lib TARGET_D=$(TARGDIR)/$(NAME)_d-pdwin.lib TARGET_T=$(TARGDIR)/$(NAME)_t-pdwin.lib TARGET_TD=$(TARGDIR)/$(NAME)_td-pdwin.lib TARGET_S=$(TARGDIR)/$(NAME).dll TARGET_SD=$(TARGDIR)/$(NAME)_d.dll TARGETS=$(TARGET) $(TARGET_D) # $(TARGET_T) $(TARGET_TD) $(TARGET_S) $(TARGET_SD) all: $(TARGDIR) $(TARGETS) $(TARGDIR): -mkdir $(TARGDIR) $(SRCS): $(HDRS) $(IHDRS) $(MAKEFILE) $(CONFIG) # echo touch $@ # minGW has no touch $(TARGDIR)/%.ro : $(SRCDIR)/%.cpp $(CXX) -c $(CFLAGS) $(FLAGS) $(patsubst %,-I%,$(INCLUDES) $(SRCDIR)) $< -o $@ $(TARGDIR)/%.do : $(SRCDIR)/%.cpp $(CXX) -c $(CFLAGS_D) $(FLAGS) $(patsubst %,-I%,$(INCLUDES) $(SRCDIR)) $< -o $@ $(TARGDIR)/%.tro : $(SRCDIR)/%.cpp $(CXX) -c $(CFLAGS) $(CFLAGS_T) $(FLAGS) $(patsubst %,-I%,$(INCLUDES) $(SRCDIR)) $< -o $@ $(TARGDIR)/%.tdo : $(SRCDIR)/%.cpp $(CXX) -c $(CFLAGS_D) $(CFLAGS_T) $(FLAGS) $(patsubst %,-I%,$(INCLUDES) $(SRCDIR)) $< -o $@ $(TARGDIR)/%.sro : $(SRCDIR)/%.cpp $(CXX) -c $(CFLAGS) $(CFLAGS_S) $(FLAGS) $(patsubst %,-I%,$(INCLUDES) $(SRCDIR)) $< -o $@ $(TARGDIR)/%.sdo : $(SRCDIR)/%.cpp $(CXX) -c $(CFLAGS_D) $(CFLAGS_S) $(FLAGS) $(patsubst %,-I%,$(INCLUDES) $(SRCDIR)) $< -o $@ $(TARGET) : $(patsubst %.cpp,$(TARGDIR)/%.ro,$(SRCS)) $(AR) rc $@ $^ chmod 644 $@ $(TARGET_D) : $(patsubst %.cpp,$(TARGDIR)/%.do,$(SRCS)) $(AR) rc $@ $^ chmod 644 $@ $(TARGET_T) : $(patsubst %.cpp,$(TARGDIR)/%.tro,$(SRCS)) $(AR) rc $@ $^ chmod 644 $@ $(TARGET_TD) : $(patsubst %.cpp,$(TARGDIR)/%.tdo,$(SRCS)) $(AR) rc $@ $^ chmod 644 $@ $(TARGET_S) : $(patsubst %.cpp,$(TARGDIR)/%.sro,$(SRCS)) $(CXX) -shared $(patsubst %,-L%,$(LIBPATH)) -o $@ $^ $(PDLIBS) strip --strip-unneeded $@ chmod 755 $@ $(TARGET_SD) : $(patsubst %.cpp,$(TARGDIR)/%.sdo,$(SRCS)) $(CXX) -g -shared $(patsubst %,-L%,$(LIBPATH)) -o $@ $^ $(PDLIBS) chmod 755 $@ .PHONY: clean install clean: rm -f $(TARGDIR)/*.o $(TARGETS) ifdef INSTDIR $(INSTDIR): -mkdir $(INSTDIR) install:: $(INSTDIR) endif install:: $(TARGETS) $(patsubst %,$(SRCDIR)/%,$(HDRS)) cp $^ $(INSTDIR)