summaryrefslogtreecommitdiff
path: root/apps/plugins/pdbox/PDa/src/makefile
blob: 3f074c4a74a42ee156c2de10b137ad8da5394c8d (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
163
164
165
166
167
168
169
170
171
172
173
174
175
176
PREFIX = /usr/
EXT = pd_linux

# pd specific

VPATH = ../obj:./
OBJ_DIR = ../obj
BIN_DIR = ../bin

BROOT=/usr
X11LIB = $(BROOT)/X11R6/lib

DEFINES = -DPD -DUNIX

pd-gui_INCLUDES = -I$(BROOT)/include/tcl8.4 -I$(BROOT)/X11R6/include
pd-gui_LIBS = -ltk8.4 -ltcl8.4  -lX11 -ldl
pd-gui_LDFLAGS = -L$(X11LIB)
pd-gui_DEFINES = $(DEFINES)

pd_LIBS = -lm -lpthread -ldl
pd_LDFLAGS = -Wl,-export-dynamic
pd_DEFINES = $(DEFINES) -DINSTALL_PREFIX=\"$(PREFIX)\" \
             -DFIXEDPOINT -DUSEAPI_OSS -DDL_OPEN

extra_DEFINES = $(DEFINES) -DFIXEDPOINT
extra_INCLUDES = -I../src
extra_LDFLAGS = -shared

# IPOD toolchain  

ifeq ($(CC), arm-elf-gcc)
pd_LDFLAGS += -elf2flt
pd_LIBS = -lm -lpthread
pd_DEFINES = $(DEFINES) -DINSTALL_PREFIX=\"$(PREFIX)\" \
             -DFIXEDPOINT -DUSEAPI_OSS -D__linux__ -Dfork=getpid
extra_DEFINES += -D__linux__ -Dfork=getpid
endif

# BLACKFIN toolchain

ifeq ($(CC), bfin-uclinux-gcc)
pd_LIBS = -lm -lpthread
pd_DEFINES = $(DEFINES) -DINSTALL_PREFIX=\"$(PREFIX)\" \
             -DFIXEDPOINT -DUSEAPI_OSS -D__linux__ 
extra_DEFINES += -D__linux__
endif

# the sources

pd_SRC = g_canvas.c g_graph.c g_text.c g_rtext.c g_array.c g_template.c g_io.c \
    g_scalar.c g_traversal.c g_guiconnect.c g_readwrite.c g_editor.c \
    g_all_guis.c g_bang.c g_hdial.c g_hslider.c g_mycanvas.c g_numbox.c \
    g_toggle.c g_vdial.c g_vslider.c g_vumeter.c \
    m_pd.c m_class.c m_obj.c m_atom.c m_memory.c m_binbuf.c \
    m_conf.c m_glob.c m_sched.c \
    s_main.c s_inter.c s_file.c s_print.c \
    s_loader.c s_path.c s_entry.c s_audio.c s_midi.c \
    d_ugen.c d_arithmetic.c d_dac.c d_misc.c \
    d_fft.c d_mayer_fft.c d_fftroutine.c d_global.c \
    d_resample.c d_ctl.c d_soundfile.c \
    x_arithmetic.c x_connective.c x_interface.c x_midi.c x_misc.c \
    x_time.c x_acoustics.c x_net.c x_qlist.c x_gui.c \
    s_midi_oss.c s_audio_oss.c 

pd_SRC += d_imayer_fft.c m_fixed.c

pd_OBJ = $(pd_SRC:.c=.o) 

pd-gui_SRC =  t_main.c t_tkcmd.c
pd-gui_OBJ = $(pd-gui_SRC:.c=.o)

extra_SRC = $(shell ls ../intern/*.c) $(shell ls ../extra/*.c)
extra_OBJ = $(extra_SRC:.c=.o)
extra_EXT =  $(extra_SRC:.c=.pd_linux)

#
#  ------------------ targets ------------------------------------
#

all: $(BIN_DIR)/pd \
     $(BIN_DIR)/pd-gui \
     $(BIN_DIR)/pd-watchdog \
     $(BIN_DIR)/pdsend \
     $(BIN_DIR)/pdreceive \
     $(BIN_DIR)/pd.tk \
     extra

pd: $(BIN_DIR)/pd
pd-gui: $(BIN_DIR)/pd-gui
pd-watchdog: $(BIN_DIR)/pd-watchdog

static: 
	make pd_SRC="$(pd_SRC) $(extra_SRC)" DEFINES="-DPD -DUNIX -DSTATIC" \
	     pd pd-gui pd-watchdog $(BIN_DIR)/pdsend \
	     $(BIN_DIR)/pdreceive  $(BIN_DIR)/pd.tk

extra: $(extra_EXT)

ipod:
	make CC=arm-elf-gcc static

blackfin:
	make CC=bfin-uclinux-gcc static

$(pd_OBJ) : %.o : %.c
	$(CC) $(CFLAGS) $(pd_DEFINES) $(pd_INCLUDES) -c -o $(OBJ_DIR)/$@  $+ 

$(pd-gui_OBJ) : %.o : %.c
	$(CC) $(CFLAGS) $(pd-gui_DEFINES) $(pd-gui_INCLUDES) -c -o $(OBJ_DIR)/$@ $+

$(extra_OBJ) : %.o : %.c
	$(CC) $(CFLAGS) $(extra_DEFINES) $(extra_INCLUDES) -c -o $@ $*.c

$(extra_EXT) : %.$(EXT) : %.o
	$(CC) -o $@ $(extra_LDFLAGS)  $+

$(BIN_DIR)/pd-watchdog: s_watchdog.c
	$(CC) $(CFLAGS) $(DEFINES) -o $@ s_watchdog.c

$(BIN_DIR)/pdsend: u_pdsend.c
	$(CC) $(CFLAGS) $(DEFINES) -o $@ u_pdsend.c

$(BIN_DIR)/pdreceive: u_pdreceive.c
	$(CC) $(CFLAGS) $(DEFINES) -o $@ u_pdreceive.c

$(BIN_DIR)/pd: $(pd_OBJ) 
	cd ../obj;  $(CC) $(pd_LDFLAGS) -o $@ $(pd_OBJ) $(pd_LIBS)

$(BIN_DIR)/pd-gui: $(pd-gui_OBJ) 
	cd ../obj; $(CC) -o $@ $(pd-gui_OBJ) $(pd-gui_LDFLAGS) $(pd-gui_LIBS)

$(BIN_DIR)/pd.tk: u_main.tk
	echo set pd_nt 0 > $(BIN_DIR)/pd.tk
	grep -v "set pd_nt" < u_main.tk >> $@

INSTDIR = $(DESTDIR)/$(PREFIX)

install:  all
# Create the directory structure

	install -d $(INSTDIR)/lib/pd/bin
	install -d $(INSTDIR)/lib/pd/extra
	install -d $(INSTDIR)/lib/pd/intern
	install -d $(INSTDIR)/lib/pd/doc
	install -d $(INSTDIR)/bin
	install -d $(INSTDIR)/include

	install $(BIN_DIR)/pd-gui $(INSTDIR)/lib/pd/bin/
	install $(BIN_DIR)/pd-watchdog $(INSTDIR)/lib/pd/bin/
	install -m 644 $(BIN_DIR)/pd.tk $(INSTDIR)/lib/pd/bin/
	install -m 755 $(BIN_DIR)/pd $(INSTDIR)/bin/
	install -m 755 $(BIN_DIR)/pdsend $(INSTDIR)/bin/pdsend
	install -m 755 $(BIN_DIR)/pdreceive $(INSTDIR)/bin/pdreceive 
	cp -r ../doc/7.stuff $(INSTDIR)/lib/pd/doc
	cp -r ../doc/5.reference $(INSTDIR)/lib/pd/doc
	install -m 644 m_pd.h $(INSTDIR)/include/m_pd.h

# Install the externals if possible
	cp ../extra/*.pd_linux  $(INSTDIR)/lib/pd/extra
	cp ../intern/*.pd_linux $(INSTDIR)/lib/pd/intern

# Install the ICON and desktop file
	install -d $(INSTDIR)/share/pixmaps
	install -d $(INSTDIR)/share/applications
	cp ../ipkg/pd-icon.png $(INSTDIR)/share/pixmaps
	cp ../ipkg/pd.desktop $(INSTDIR)/share/applications/



clean: 
	-rm -f `find ../extra/ -name "*.pd_*"`
	-rm -f tags
	-rm -f ../obj/* $(BIN_DIR)/* ../extra/*.{o,$(EXT)} ../intern/*.{o,$(EXT)}
	-rm -f *~
	-rm -f $(BIN_DIR)/pdsend $(BIN_DIR)/pdreceive