[PD-dev] pd externals makefile help for newbie [win32]

Olaf Matthes olaf.matthes at gmx.de
Tue Sep 24 21:50:13 CEST 2002

Hi André,

just get a 'normal' makefile that is used to compile one single external (the
one from the Pd examples compiles three...). It doesn't matter wheter it's a
control or signal external.
Attached you'll find the makefile for patcher~ (win, OS X & Linux). To compile
your own external just change the first two lines to:


to compile a signal external or to:


to compile a control external. That's all you need to do. The first line is the
name of your external (used to build up the filename by appending '.c'), the
second line the name of the function that gets exportet (after appending


PS: you might also need to change the path to m_pd.h and to your VC++...

André Schmidt schrieb:

> hi devs,
> i hope i'm not buggin you too much (again:) with my newbish questions, but
> i want to get started with little trouble as possible. so, got MSVC++6 and
> i managed to compile the foos in .../6.externs/ with 'nmake' after i
> changed the right paths in the makefile. and yes, they really worked :).
> this was my first time i compiled c/c++ from the commandline (not including
> my 1 and only time i succesfully compiled pd on linux:) so this makefile
> thing is a quite mystery to me but i assume it has all the settings that an
> IDE would have in it's menus, or similar. ok, for starters i want to
> compile the "hello world" external from
> http://iem.kug.ac.at/pd/externals-HOWTO/node3.html but i dont know what i
> should write in the makefile. before i start to TAE with the makefile from
> the foo examples i thought maybe some1 could explain or give a good
> www-link about the makefile...
> thnx
> -andre
> (boldly going where i've newer been)
> _______________________________________________
> PD-dev mailing list
> PD-dev at iem.kug.ac.at
> http://iem.kug.ac.at/cgi-bin/mailman/listinfo/pd-dev
-------------- next part --------------

current: pd_nt pd_linux pd_darwin

# ----------------------- NT -----------------------

pd_nt: $(NAME).dll


PDNTCFLAGS = /W3 /WX /O2 /G6 /DNT /DPD /nologo

# where is VC++ ???
VC="C:\Programme\Microsoft Visual Studio\VC98"

# where is your m_pd.h ???
PDNTINCLUDE = /I. /Ic:\pd\tcl\include /Ic:\pd\src /I$(VC)\include /Iinclude

PDNTLIB = $(PDNTLDIR)\libc.lib \
	$(PDNTLDIR)\oldnames.lib \
	$(PDNTLDIR)\kernel32.lib \
	$(PDNTLDIR)\user32.lib \
	$(PDNTLDIR)\uuid.lib \

	link /dll /export:$(CSYM)_setup $*.obj $(PDNTLIB)

# ----------------------- IRIX 5.x -----------------------

pd_irix5: $(NAME).pd_irix5

.SUFFIXES: .pd_irix5


SGIINCLUDE =  -I../../src

	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

.SUFFIXES: .pd_irix6

SGICFLAGS6 = -n32 -DPD -DUNIX -DIRIX -DN32 -woff 1080,1064,1185 \
	-OPT:roundoff=3 -OPT:IEEE_arithmetic=3 -OPT:cray_ivdep=true \

	cc $(SGICFLAGS6) $(SGIINCLUDE) -o $*.o -c $*.c
	ld -n32 -IPA -shared -rdata_shared -o $*.pd_irix6 $*.o
	rm $*.o

# ----------------------- MAX OS X -----------------------

pd_darwin: $(NAME).pd_darwin

.SUFFIXES: .pd_darwin

    -Wall -W -Wshadow -Wstrict-prototypes \
    -Wno-unused -Wno-parentheses -Wno-switch

DARWININCLUDE =  -I../../src 

	cc $(DARWINCFLAGS) $(DARWININCLUDE) -o $*.o -c $*.c
	cc -bundle -undefined suppress -flat_namespace -o $*.pd_darwin $*.o
	rm -f $*.o ../$*.pd_darwin
	ln -s $*/$*.pd_darwin ..

# ----------------------- LINUX i386 -----------------------

pd_linux: $(NAME).pd_linux

.SUFFIXES: .pd_linux

LINUXCFLAGS = -DPD -DUNIX -O2 -funroll-loops -fomit-frame-pointer \
    -Wall -W -Wshadow -Wstrict-prototypes -Werror \
    -Wno-unused -Wno-parentheses -Wno-switch

# where is your m_pd.h ???
LINUXINCLUDE =  -I../../src 

	cc -O2 -Wall -DPD -fPIC $(LINUXCFLAGS) $(LINUXINCLUDE) -c $*.c 
	ld -export_dynamic  -shared -o $*.pd_linux $*.o -lc 
	strip --strip-unneeded $*.pd_linux 

# ----------------------------------------------------------

	cp help-*.pd ../../doc/5.reference

	rm -f *.o *.pd_* so_locations

More information about the Pd-dev mailing list