[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:

NAME=yourexternal~
CSYM=yourexternal_tilde

to compile a signal external or to:

NAME=yourexternal
CSYM=yourexternal

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
'_setup').

Olaf

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 --------------
NAME=patcher~
CSYM=patcher_tilde

current: pd_nt pd_linux pd_darwin

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

pd_nt: $(NAME).dll

.SUFFIXES: .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

PDNTLDIR = $(VC)\Lib
PDNTLIB = $(PDNTLDIR)\libc.lib \
	$(PDNTLDIR)\oldnames.lib \
	$(PDNTLDIR)\kernel32.lib \
	$(PDNTLDIR)\user32.lib \
	$(PDNTLDIR)\uuid.lib \
	c:\pd\bin\pd.lib

.c.dll:
	cl $(PDNTCFLAGS) $(PDNTINCLUDE) /c $*.c
	link /dll /export:$(CSYM)_setup $*.obj $(PDNTLIB)

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

pd_irix5: $(NAME).pd_irix5

.SUFFIXES: .pd_irix5

SGICFLAGS5 = -o32 -DPD -DUNIX -DIRIX -O2

SGIINCLUDE =  -I../../src

.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

.SUFFIXES: .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.pd_irix6:
	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

DARWINCFLAGS = -DPD -DUNIX -O2 -DMACOSX \
    -Wall -W -Wshadow -Wstrict-prototypes \
    -Wno-unused -Wno-parentheses -Wno-switch

DARWININCLUDE =  -I../../src 

.c.pd_darwin:
	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 

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

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

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

clean:
	rm -f *.o *.pd_* so_locations


More information about the Pd-dev mailing list