1RT=$(RW)rtk/
2WD=$(RW)widgets/robtk_
3PKG_CONFIG?=pkg-config
4STRIP?=strip
5LIBSTRIPFLAGS?=-s
6APPSTRIPFLAGS?=-s
7WINDRES=$(XWIN)-windres
8UNAME?=$(shell uname)
9
10JACKEXTRA=
11OSXJACKWRAP=
12PTHREADCFLAGS=
13
14ifeq ($(UNAME),Darwin)
15  OSXJACKWRAP=$(RW)jackwrap.mm
16  USEWEAKJACK=1
17  LIBSTRIPFLAGS=-u -r -arch all -s $(RW)lv2uisyms
18  APPSTRIPFLAGS=-u -r -arch all
19endif
20
21ifneq ($(XWIN),)
22  USEWEAKJACK=1
23  JACKCFLAGS+=-mwindows
24  ifeq ($(shell test -f img/x42.ico && echo yes), yes)
25    JACKEXTRA+=win_icon.rc.o
26  endif
27else
28  PTHREADCFLAGS=-pthread
29endif
30
31ifeq ($(USEWEAKJACK),1)
32  JACKCFLAGS+=-DUSE_WEAK_JACK
33  JACKEXTRA+=$(RW)weakjack/weak_libjack.c
34  ifeq ($(XWIN),)
35    JACKLIBS+=-ldl
36  endif
37else
38  JACKLIBS+=`$(PKG_CONFIG) $(PKG_UI_FLAGS) --libs jack`
39endif
40
41ifeq ($(shell $(PKG_CONFIG) --exists liblo && echo yes), yes)
42  JACKCFLAGS+=`$(PKG_CONFIG) $(PKG_UI_FLAGS) --cflags liblo` -DHAVE_LIBLO
43  JACKLIBS+=`$(PKG_CONFIG) $(PKG_UI_FLAGS) --libs liblo`
44endif
45
46
47UITOOLKIT=$(WD)checkbutton.h $(WD)dial.h $(WD)label.h $(WD)pushbutton.h\
48          $(WD)radiobutton.h $(WD)scale.h $(WD)separator.h $(WD)spinner.h \
49          $(WD)xyplot.h $(WD)selector.h $(WD)multibutton.h \
50          $(WD)image.h $(WD)drawingarea.h $(WD)checkimgbutton.h
51
52ROBGL= $(RW)robtk.mk $(UITOOLKIT) $(RW)ui_gl.c $(PUGL_SRC) \
53  $(RW)gl/common_cgl.h $(RW)gl/layout.h $(RW)gl/robwidget_gl.h $(RW)robtk.h \
54	$(RT)common.h $(RT)style.h \
55  $(RW)gl/xternalui.c $(RW)gl/xternalui.h
56
57ROBGTK = $(RW)robtk.mk $(UITOOLKIT) $(RW)ui_gtk.c \
58  $(RW)gtk2/common_cgtk.h $(RW)gtk2/robwidget_gtk.h $(RW)robtk.h \
59	$(RT)common.h $(RT)style.h
60
61%UI_gtk.so %UI_gtk.dylib:: $(ROBGTK)
62	@mkdir -p $(@D)
63	$(CXX) $(CPPFLAGS) $(CFLAGS) $(GTKUICFLAGS) $(PTHREADCFLAGS) \
64	  -DPLUGIN_SOURCE="\"gui/$(*F).c\"" \
65	  -o $@ $(RW)ui_gtk.c \
66	  $(value $(*F)_UISRC) \
67	  -shared $(LV2LDFLAGS) $(LDFLAGS) $(GTKUILIBS)
68	$(STRIP) ${LIBSTRIPFLAGS} $@
69
70%UI_gl.o:: $(ROBGL)
71	@mkdir -p $(@D)
72	$(CXX) -c $(CPPFLAGS) $(CFLAGS) $(GLUICFLAGS) $(PTHREADCFLAGS) \
73	  -DUINQHACK="$(shell date +%s$$$$)" \
74	  -DPLUGIN_SOURCE="\"gui/$(*F).c\"" \
75	  -DRTK_DESCRIPTOR="$(value gl_$(subst -,_,$(*F))_LV2DESC)" \
76	  -o $@ $(RW)ui_gl.c
77
78%pugl.o:: $(ROBGL)
79	@mkdir -p $(@D)
80	$(CXX) -c $(CPPFLAGS) $(CFLAGS) $(GLUICFLAGS) \
81	  -DUINQHACK="$(shell date +%s$$$$)" \
82	  -o $@ $(PUGL_SRC)
83
84%_glui.so %_glui.dylib %_glui.dll::
85	@mkdir -p $(@D)
86	$(CXX) $(CPPFLAGS) $(CFLAGS) $(GLUICFLAGS) $(PTHREADCFLAGS) \
87	  -o $@ gui/$(*F).c \
88	  $(GLGUIOBJ) \
89	  $(value $(*F)_UISRC) \
90	  -shared $(LV2LDFLAGS) $(LDFLAGS) $(GLUILIBS)
91	$(STRIP) ${LIBSTRIPFLAGS} $@
92
93
94%UI_gl.so %UI_gl.dylib %UI_gl.dll:: $(ROBGL)
95	@mkdir -p $(@D)
96	$(CXX) $(CPPFLAGS) $(CFLAGS) $(GLUICFLAGS) $(PTHREADCFLAGS) \
97	  -DUINQHACK="$(shell date +%s$$$$)" \
98	  -DPLUGIN_SOURCE="\"gui/$(*F).c\"" \
99	  -o $@ $(RW)ui_gl.c \
100	  $(PUGL_SRC) \
101	  $(value $(*F)_UISRC) \
102	  -shared $(LV2LDFLAGS) $(LDFLAGS) $(GLUILIBS)
103	$(STRIP) ${LIBSTRIPFLAGS} $@
104
105# ignore man-pages in rule below
106x42-%.1:
107	@/bin/true
108
109# windows icon
110.SUFFFIXES: .rc
111win_icon.rc.o: $(RW)win_icon.rc img/x42.ico
112	$(WINDRES) -o $@ $<
113
114x42-%.o:: $(ROBGL)
115	@mkdir -p $(@D)
116	$(CXX) $(CPPFLAGS) $(JACKCFLAGS) $(PTHREADCFLAGS) \
117	  -DXTERNAL_UI -DHAVE_IDLE_IFACE -DDEFAULT_NOT_ONTOP \
118	  -DRTK_DESCRIPTOR="$(value x42_$(subst -,_,$(*F))_JACKDESC)" \
119	  -DPLUGIN_SOURCE="\"$(value x42_$(subst -,_,$(*F))_JACKGUI)\"" \
120	  -o $@ \
121	  -c $(RW)ui_gl.c
122
123x42-%-collection x42-%-collection.exe:: $(ROBGL) $(RW)jackwrap.c $(OSXJACKWRAP) $(RW)weakjack/weak_libjack.def $(RW)weakjack/weak_libjack.h $(JACKEXTRA)
124	@mkdir -p $(@D)
125	$(CXX) $(CPPFLAGS) $(JACKCFLAGS) $(PTHREADCFLAGS) -DDEFAULT_NOT_ONTOP \
126	  -DXTERNAL_UI -DHAVE_IDLE_IFACE \
127	  -DJACK_DESCRIPT="\"$(value x42_$(subst -,_,$(*F))_collection_LV2HTTL)\"" \
128	  -DAPPNAME="\"$(*F)\"" \
129	  -o $@ \
130	  $(RW)jackwrap.c $(PUGL_SRC) $(OSXJACKWRAP) $(JACKEXTRA) \
131	  $(value x42_$(subst -,_,$(*F))_collection_JACKSRC) \
132	  $(LDFLAGS) $(JACKLIBS)
133	$(STRIP) ${APPSTRIPFLAGS} $@
134
135x42-% x42-%.exe:: $(ROBGL) $(RW)jackwrap.c $(OSXJACKWRAP) $(RW)weakjack/weak_libjack.def $(RW)weakjack/weak_libjack.h $(JACKEXTRA)
136	@mkdir -p $(@D)
137	$(CXX) $(CPPFLAGS) $(JACKCFLAGS) $(PTHREADCFLAGS) -DDEFAULT_NOT_ONTOP \
138	  -DXTERNAL_UI -DHAVE_IDLE_IFACE \
139	  -DRTK_DESCRIPTOR="$(value x42_$(subst -,_,$(*F))_JACKDESC)" \
140	  -DPLUGIN_SOURCE="\"$(value x42_$(subst -,_,$(*F))_JACKGUI)\"" \
141	  -DJACK_DESCRIPT="\"$(value x42_$(subst -,_,$(*F))_LV2HTTL)\"" \
142	  -DAPPNAME="\"$(*F)\"" \
143	  -o $@ \
144	  $(RW)jackwrap.c $(RW)ui_gl.c $(PUGL_SRC) $(OSXJACKWRAP) $(JACKEXTRA) \
145	  $(value x42_$(subst -,_,$(*F))_JACKSRC) \
146	  $(LDFLAGS) $(JACKLIBS)
147	$(STRIP) ${APPSTRIPFLAGS} $@
148