aboutsummaryrefslogtreecommitdiff
path: root/src/Makefile
blob: a2ebfa3d94e7c0a7e4d9b2de77965adc95fea8cc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
# Makefile
# (c) 2006 IOhannes m zmölnig

# path to pd
## change this according to your setup!
PDROOT?=../../../../pd
#PDROOT=/home/zmoelnig/src/pd/

# here we find the sources of pd (and evtl. the pd.lib)
PDSRCDIR?=$(PDROOT)/src
PDLIBDIR?=$(PDROOT)/bin

# this is the filename-extension
# people have to specify it at the cmdline: eg "make pd_linux"
EXTENSION=$(MAKECMDGOALS)

# if no filename-extension is supplied by the user
# try to guess one, based on what "uname" tells us
UNAME_SYSTEM := $(shell uname -s)
UNAME_ARCH := $(shell uname -m)
ifeq ($(UNAME_SYSTEM),Linux)
  DEFAULTEXTENSION= pd_linux
  ifeq ($(UNAME_ARCH),x86_64)
    DEFAULTEXTENSION= l_ia64
  else ifeq ($(UNAME_ARCH),i686)
    DEFAULTEXTENSION= l_i386
  endif
else ifeq ($(UNAME_SYSTEM),Darwin)
    DEFAULTEXTENSION= pd_darwin
    ifeq ($(UNAME_ARCH),i386)
     DEFAULTEXTENSION= d_i386
    else ifeq ($(UNAME_ARCH),PowerPC)
     DEFAULTEXTENSION= d_ppc
    endif
else ifeq (MINGW,$(findstring MINGW,$(UNAME_SYSTEM)))
      DEFAULTEXTENSION= pd_nt
else ifeq ($(UNAME_SYSTEM),IRIX)
  UNAME_IRIXVERSION := $(shell uname -R)
  ifeq (6.,$(findstring 6.,$(UNAME_IRIXVERSION)))
    DEFAULTEXTENSION= pd_irix6
  else
    DEFAULTEXTENSION= pd_irix5
  endif
else
  DEFAULTEXTENSION=help
endif

# if no extension is given, call "make" again with a guessed extension
auto:
	make $(DEFAULTEXTENSION)

# just a stupid fallback
help: 
	@echo "choose one command:  make pd_linux, make l_i386, make l_ia64 (linux), make pd_darwin, make d_fat, make d_ppc (osX), make pd_irix5 (IRIX5), make pd_irix6 (IRIX6), make dll (MSVC), make pd_nt (MinWG)"

# delete old build files
clean:
	-rm -f *.dll *.w_i386 *.pd_linux *.l_ia64 *.l_i386  *.pd_darwin *.d_fat *.d_ppc *.d_i386 *.pd_irix5 *.pd_irix6
	-rm -f *.o *.obj *~

# we want to compile all C-files we find in the current directory
SOURCES=$(sort $(filter %.c, $(wildcard *.c)))
# each C-files maps will become an external with the given filename-extension
TARGETS=$(SOURCES:.c=.$(EXTENSION))


# ----------------------- Linux -----------------------

l_ia64 l_i386 pd_linux: $(TARGETS)

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

LINUXLDFLAGS =  -shared  -lc -lm

LINUXINCLUDE =  -I$(PDSRCDIR)

STRIP?=strip

%.l_ia64 %.l_i386 %.pd_linux: %.c
	$(CC) $(LINUXLDFLAGS) $(LINUXCFLAGS) $(LINUXINCLUDE) -o $@ $<
#	$(STRIP) --strip-unneeded $@



# ----------------------- Mac OSX -----------------------

pd_darwin: $(TARGETS)

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

DARWININCLUDE = -I$(PDSRCDIR)

DARWINLDFLAGS = -bundle -undefined suppress -flat_namespace

%.pd_darwin: %.c
	$(CC) $(DARWINCFLAGS) $(DARWININCLUDE) $(DARWINLDFLAGS) -o $*.pd_darwin $*.c


# ----------------------- IRIX 5.x -----------------------
pd_irix5: $(TARGETS)

SGICFLAGS5 = -o32 -DPD -DMISSING_LOADER_T -DSGI -O2

SGIINCLUDE =  -I$(PDSRCDIR)

SGILDFLAGS =  -elf -shared -rdata_shared

%.pd_irix5: %.c
	$(CC) $(SGICFLAGS5) $(SGIINCLUDE) -o $*.o -c $*.c
	$(LD) $(SGILDFLAGS) -o $*.pd_irix5 $*.o
	rm $*.o


# ----------------------- IRIX 6.x -----------------------
pd_irix6: $(TARGETS)

SGICFLAGS6 = -DPD  -DMISSING_LOADER_T -DSGI -n32 \
	-OPT:roundoff=3 -OPT:IEEE_arithmetic=3 -OPT:cray_ivdep=true \
	-Ofast=ip32

%.pd_irix6: %.c
	$(CC) $(SGICFLAGS6) $(SGIINCLUDE) -o $*.o -c $*.c
	$(LD) $(SGILDFLAGS) -o $*.pd_irix6 $*.o
	rm $*.o


# ----------------------- NT -----------------------
dll: $(TARGETS)

PDNTCFLAGS = /W3 /WX /DPD /DNT /D__WIN32__ /DMSW /DMISSING_LOADER_T /nologo

VC="C:\Programme\Microsoft Visual Studio\Vc98"

PDNTINCLUDE = /I. /I$(PDROOT)\tcl\include /I$(PDSRCDIR)\src /I$(VC)\include

PDNTLDIR = $(VC)\lib

PDNTLIB = $(PDNTLDIR)\libc.lib \
	$(PDNTLDIR)\oldnames.lib \
	$(PDNTLDIR)\kernel32.lib \
	$(PDLIBDIR)\pd.lib 

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


pd_nt: $(TARGETS)

MINGWCFLAGS = -DPD -DMISSING_LOADER_T -O2 -funroll-loops -fomit-frame-pointer \
    -Wall -W -Wshadow -Wstrict-prototypes \
    -Wno-unused -Wno-parentheses -Wno-switch -mms-bitfields

MINGWLDFLAGS =  --export-dynamic -shared -lm -lkernel32 -lcoldname -lcrtdll -lpd -L$(PDLIBDIR)

MINGWINCLUDE =  -I$(PDSRCDIR)

%.pd_nt: %.c
	$(CC) $(MINGWLDFLAGS) $(MINGWCFLAGS) $(MINGWINCLUDE) -o $*.dll $*.c