CC=gcc EXT=$(shell uname -s | sed -e 's/^[lL]/pd_l/' | sed -e 's/^[dD]/pd_d/' | sed -e 's/MINGW.*/dll/') # This is Miller's default install location INSTALL_PREFIX=/usr/local/lib/pd # find all files to compile TARGETS=$(subst .tk,.tk2c,$(wildcard */*.tk)) $(subst .c,.$(EXT),$(wildcard */*.c)) current: $(TARGETS) @echo "Making $(TARGETS)" .SUFFIXES: .pd_linux .pd_darwin .pd_irix5 .pd_irix6 .dll .tk .tk2c # ----------------------- Common ------------------------ .tk.tk2c: bash ./tk2c.bash < $*.tk > $*.tk2c # ----------------------- MinGW ----------------------- pd_nt: $(TARGETS) MINGW_CFLAGS = -DPD -DUNIX -DICECAST -DWANT_WINSOCK2_H \ -O2 -funroll-loops -fomit-frame-pointer \ -Wall -W -Wno-shadow -Wstrict-prototypes -g \ -Wno-unused -Wno-parentheses -Wno-switch \ -mno-cygwin -c -DBUILD_DLL MINGW_CFLAGS = -DPD -DNT -DICECAST -funroll-loops \ -Wall -W -Wno-shadow -Wstrict-prototypes \ -Wno-unused -Wno-parentheses -Wno-switch MINGW_INCLUDE = -I../../src -I../../pd/src -IC:/msys/1.0/include MINGW_LDFLAGS = -shared -L../../pd/bin -LC:/msys/1.0/lib \ -lpd -logg -lvorbis -lpthreadGC2 .c.dll: $(CC) -mms-bitfields $(MINGW_CFLAGS) $(DEFINES) $(MINGW_INCLUDE) \ -o "$*.o" -c "$*.c" gcc $(MINGW_LDFLAGS) -o "$*.dll" "$*.o" strip --strip-unneeded "$*.dll" rm "$*.o" #.c.dll: CURRENT_DIR = `echo $* | cut -d '/' -f 1` # $(CC) $(MINGW_CFLAGS) $(MINGW_INCLUDE) -o $*.o -c $*.c # ld -export_dynamic -shared -o $*.dll $*.o -lc -lm $(MINGW_LFLAGS) # strip --strip-unneeded $*.dll # dllwrap --target=i386-mingw32 -mno-cygwin --output-lib=lib$*.a \ # --dllname=$*.dll --driver-name=gcc $*.o $(MINGW_LFLAGS) # -rm $*.o # ----------------------- Windows ----------------------- # PDNTCFLAGS = /W3 /WX /DNT /DPD /nologo # VC="C:\Program Files\Microsoft Visual Studio\Vc98" # PDNTINCLUDE = /I. /I\tcl\include /I\ftp\pd\src /I$(VC)\include # PDNTLDIR = $(VC)\lib # PDNTLIB = $(PDNTLDIR)\libc.lib \ # $(PDNTLDIR)\oldnames.lib \ # $(PDNTLDIR)\kernel32.lib \ # \ftp\pd\bin\pd.lib # .c.ont: # cl $(PDNTCFLAGS) $(PDNTINCLUDE) /c $*.c # .c.dll: # cl $(PDNTCFLAGS) $(PDNTINCLUDE) /c $*.c # need to find a way to replace $(CSYM) # link /dll /export:$(CSYM)_setup $*.obj $(PDNTLIB) #======= # $(CC) $(WINCFLAGS) $(WININCLUDE) -o $*.o -c $*.c # gcc -shared -o $*.dll $*.o ../../bin/pd.dll -lwsock32 -lmp3lame -lpthread # -rm $*.o #>>>>>>> 1.10 # ----------------------- IRIX 5.x ----------------------- pd_irix5: $(NAME).pd_irix5 SGICFLAGS5 = -o32 -DPD -DUNIX -DIRIX -O2 SGIINCLUDE = -I../../src .c.oi5: $(CC) $(SGICFLAGS5) $(SGIINCLUDE) -o $*.o -c $*.c .c.pd_irix5: $(CC) $(SGICFLAGS5) $(SGIINCLUDE) -o $*.o -c $*.c ld -elf -shared -rdata_shared -o $*.pd_irix5 $*.o rm $*.o # ----------------------- IRIX 6.x ----------------------- pd_irix6: $(NAME).pd_irix6 SGICFLAGS6 = -n32 -DPD -DUNIX -DIRIX -DN32 -woff 1080,1064,1185 \ -OPT:roundoff=3 -OPT:IEEE_arithmetic=3 -OPT:cray_ivdep=true \ -Ofast=ip32 .c.oi6: $(CC) $(SGICFLAGS6) $(SGIINCLUDE) -o $*.o -c $*.c .c.pd_irix6: $(CC) $(SGICFLAGS6) $(SGIINCLUDE) -o $*.o -c $*.c ld -n32 -IPA -shared -rdata_shared -o $*.pd_irix6 $*.o rm $*.o # ----------------------- LINUX i386 ----------------------- pd_linux: $(TARGETS) LINUXCFLAGS = -DPD -DUNIX -DICECAST -O2 -funroll-loops -fomit-frame-pointer \ -Wall -W -Wno-shadow -Wstrict-prototypes -g \ -Wno-unused -Wno-parentheses -Wno-switch LINUXINCLUDE = -I../../src -I../../pd/src .c.pd_linux: $(CC) $(LINUXCFLAGS) $(LINUXINCLUDE) -o $*.o -c $*.c ld -export_dynamic -shared -o $*.pd_linux $*.o -lc -lm strip --strip-unneeded $*.pd_linux -rm $*.o # ----------------------- Mac OSX ----------------------- pd_darwin: $(TARGETS) # I added these defines since Darwin doesn't have this signals. I do # not know whether the objects will work, but they will compile. # -DMSG_NOSIGNAL=0 -DSOL_TCP=0 # I got this from here: http://www.holwegner.com/forum/viewtopic.php?t=4 # DARWINCFLAGS = -DPD -DUNIX -DICECAST -DMSG_NOSIGNAL=0 -DSOL_TCP=0 \ -O2 -Wall -W -Wshadow -Wstrict-prototypes -Wno-unused -Wno-parentheses \ -Wno-switch ## if you point the linker to the pd binary, then it can check the symbols, ## and therefore allow for a two-level namespace, and that makes Darwin happy ## but this doesn't work for some of the files yet. #DARWINLINKFLAGS = -bundle -bundle_loader ../../pd/bin/pd DARWINLINKFLAGS = -bundle -undefined suppress -flat_namespace DARWININCLUDE = -I../../src -I../../pd/src -I/sw/include .c.pd_darwin: $(CC) $(DARWINCFLAGS) $(DARWININCLUDE) -o $*.o -c $*.c $(CC) $(DARWINLINKFLAGS) -o $*.pd_darwin $*.o chmod a-x "$*.pd_darwin" -rm $*.o # added by Hans-Christoph Steiner # to generate MacOS X packages PACKAGE_PREFIX = pd-unauthorized PACKAGE_VERSION = $(shell date +20%y.%m.%d) PACKAGE_NAME = $(PACKAGE_PREFIX)-$(PACKAGE_VERSION) darwin_pkg_license: # generate HTML version of License echo "" > License.html sed -e 's/^$$/\/g' COPYING >> License.html echo "" >> License.html darwin_pkg_clean: -sudo rm -Rf installroot/ $(PACKAGE_PREFIX)*.pkg/ -rm -f $(PACKAGE_PREFIX)-*.info 1 License.html # install into MSP's default: /usr/local/lib darwin_pkg: pd_darwin darwin_pkg_clean darwin_pkg_license # set up installroot dir test -d installroot/pd/doc/5.reference || mkdir -p installroot/pd/doc/5.reference install -m644 --group=staff */*.pd installroot/pd/doc/5.reference install -m644 --group=staff */*.txt installroot/pd/doc/5.reference install -m644 --group=staff */*.pls installroot/pd/doc/5.reference cp -Rf blinkenlights/blm installroot/pd/doc/5.reference test -d installroot/pd/extra || mkdir -p installroot/pd/extra install -m644 --group=staff */*.pd_darwin installroot/pd/extra cp -f pd-unauthorized.info $(PACKAGE_NAME).info # delete cruft -find installroot -name .DS_Store -delete -rm -f 1 # set proper permissions sudo chown -R root:staff installroot package installroot $(PACKAGE_NAME).info -d . -ignoreDSStore # install pkg docs install -m 644 License.html $(PACKAGE_NAME).pkg/Contents/Resources sudo chown -R root:staff $(PACKAGE_NAME).pkg/Contents/Resources # ---------------------------------------------------------- install: cp */*.pd $(INSTALL_PREFIX)/doc/5.reference clean: # delete emacs backup files -rm -f */*.?~ */*.~?.?.~ # delete compile products -rm -f *.o *.pd_* *.dll *.tk2c core so_locations ChangeLog -rm -f */*.?~ */*.o */*.pd_* */*.dll */*.tk2c */.*.swp */core so_locations # delete autoconf/automake product -rm -Rf */autom4te.cache