add missing GPL information in guicast program files
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / Makefile
1 export TOPDIR ?= $(CURDIR)/..
2 include $(TOPDIR)/global_config
3
4 OVERLAYS := \
5         $(OBJDIR)/overlay_direct_rgb161616.o \
6         $(OBJDIR)/overlay_direct_rgb888.o \
7         $(OBJDIR)/overlay_direct_rgba16161616.o \
8         $(OBJDIR)/overlay_direct_rgba8888.o \
9         $(OBJDIR)/overlay_direct_rgba_float.o \
10         $(OBJDIR)/overlay_direct_rgb_float.o \
11         $(OBJDIR)/overlay_direct_yuv161616.o \
12         $(OBJDIR)/overlay_direct_yuv888.o \
13         $(OBJDIR)/overlay_direct_yuva16161616.o \
14         $(OBJDIR)/overlay_direct_yuva8888.o \
15         $(OBJDIR)/overlay_nearest_rgb161616.o \
16         $(OBJDIR)/overlay_nearest_rgb888.o \
17         $(OBJDIR)/overlay_nearest_rgba16161616.o \
18         $(OBJDIR)/overlay_nearest_rgba8888.o \
19         $(OBJDIR)/overlay_nearest_rgba_float.o \
20         $(OBJDIR)/overlay_nearest_rgb_float.o \
21         $(OBJDIR)/overlay_nearest_yuv161616.o \
22         $(OBJDIR)/overlay_nearest_yuv888.o \
23         $(OBJDIR)/overlay_nearest_yuva16161616.o \
24         $(OBJDIR)/overlay_nearest_yuva8888.o \
25         $(OBJDIR)/overlay_sample_rgb161616.o \
26         $(OBJDIR)/overlay_sample_rgb888.o \
27         $(OBJDIR)/overlay_sample_rgba16161616.o \
28         $(OBJDIR)/overlay_sample_rgba8888.o \
29         $(OBJDIR)/overlay_sample_rgba_float.o \
30         $(OBJDIR)/overlay_sample_rgb_float.o \
31         $(OBJDIR)/overlay_sample_yuv161616.o \
32         $(OBJDIR)/overlay_sample_yuv888.o \
33         $(OBJDIR)/overlay_sample_yuva16161616.o \
34         $(OBJDIR)/overlay_sample_yuva8888.o \
35
36 OBJS := $(OVERLAYS) \
37         $(OBJDIR)/aattachmentpoint.o \
38         $(OBJDIR)/aautomation.o \
39         $(OBJDIR)/aboutprefs.o \
40         $(OBJDIR)/adeviceprefs.o \
41         $(OBJDIR)/aedit.o \
42         $(OBJDIR)/aedits.o \
43         $(OBJDIR)/affine.o \
44         $(OBJDIR)/amodule.o \
45         $(OBJDIR)/androidcontrol.o \
46         $(OBJDIR)/apatchgui.o \
47         $(OBJDIR)/apluginarray.o \
48         $(OBJDIR)/aplugin.o \
49         $(OBJDIR)/apluginset.o \
50         $(OBJDIR)/appearanceprefs.o \
51         $(OBJDIR)/arender.o \
52         $(OBJDIR)/assetedit.o \
53         $(OBJDIR)/asset.o \
54         $(OBJDIR)/assetpopup.o \
55         $(OBJDIR)/assetremove.o \
56         $(OBJDIR)/assets.o \
57         $(OBJDIR)/atrack.o \
58         $(OBJDIR)/attachmentpoint.o \
59         $(OBJDIR)/audioalsa.o \
60         $(OBJDIR)/audiodevice.o \
61         $(OBJDIR)/audiodvb.o \
62         $(OBJDIR)/audioesound.o \
63         $(OBJDIR)/audioidevice.o \
64         $(OBJDIR)/audioodevice.o \
65         $(OBJDIR)/audiooss.o \
66         $(OBJDIR)/audiopulse.o \
67         $(OBJDIR)/audiov4l2mpeg.o \
68         $(OBJDIR)/autoconf.o \
69         $(OBJDIR)/automation.o \
70         $(OBJDIR)/auto.o \
71         $(OBJDIR)/autos.o \
72         $(OBJDIR)/awindowgui.o \
73         $(OBJDIR)/awindow.o \
74         $(OBJDIR)/batch.o \
75         $(OBJDIR)/batchrender.o \
76         $(OBJDIR)/bdcreate.o \
77         $(OBJDIR)/binfolder.o \
78         $(OBJDIR)/bitspopup.o \
79         $(OBJDIR)/boxblur.o \
80         $(OBJDIR)/brender.o \
81         $(OBJDIR)/browsebutton.o \
82         $(OBJDIR)/byteorderpopup.o \
83         $(OBJDIR)/cachebase.o \
84         $(OBJDIR)/cache.o \
85         $(OBJDIR)/canvas.o \
86         $(OBJDIR)/canvastools.o \
87         $(OBJDIR)/channeldb.o \
88         $(OBJDIR)/channeledit.o \
89         $(OBJDIR)/channelinfo.o \
90         $(OBJDIR)/channel.o \
91         $(OBJDIR)/channelpicker.o \
92         $(OBJDIR)/chantables.o \
93         $(OBJDIR)/clipedit.o \
94         $(OBJDIR)/clipedls.o \
95         $(OBJDIR)/clippopup.o \
96         $(OBJDIR)/colorpicker.o \
97         $(OBJDIR)/commonrender.o \
98         $(OBJDIR)/compressortools.o \
99         $(OBJDIR)/confirmquit.o \
100         $(OBJDIR)/confirmsave.o \
101         $(OBJDIR)/convert.o \
102         $(OBJDIR)/cpanel.o \
103         $(OBJDIR)/cplayback.o \
104         $(OBJDIR)/ctimebar.o \
105         $(OBJDIR)/ctracking.o \
106         $(OBJDIR)/cursor.o \
107         $(OBJDIR)/cwindowgui.o \
108         $(OBJDIR)/cwindow.o \
109         $(OBJDIR)/cwindowtool.o \
110         $(OBJDIR)/dcoffset.o \
111         $(OBJDIR)/deleteallindexes.o \
112         $(OBJDIR)/devicedvbinput.o \
113         $(OBJDIR)/devicev4l2base.o \
114         $(OBJDIR)/devicev4l2input.o \
115         $(OBJDIR)/dragcheckbox.o \
116         $(OBJDIR)/drivesync.o \
117         $(OBJDIR)/dvdcreate.o \
118         $(OBJDIR)/edithandles.o \
119         $(OBJDIR)/editlength.o \
120         $(OBJDIR)/edit.o \
121         $(OBJDIR)/editpanel.o \
122         $(OBJDIR)/editpopup.o \
123         $(OBJDIR)/edits.o \
124         $(OBJDIR)/edl.o \
125         $(OBJDIR)/edlsession.o \
126         $(OBJDIR)/effectlist.o \
127         $(OBJDIR)/eqcanvas.o \
128         $(OBJDIR)/exportedl.o \
129         $(OBJDIR)/fadeengine.o \
130         $(OBJDIR)/ffmpeg.o \
131         $(OBJDIR)/filebaseaudio.o \
132         $(OBJDIR)/filebase.o \
133         $(OBJDIR)/filebaseulaw.o \
134         $(OBJDIR)/filecr2.o \
135         $(OBJDIR)/filedv.o \
136         $(OBJDIR)/filedpx.o \
137         $(OBJDIR)/fileexr.o \
138         $(OBJDIR)/fileffmpeg.o \
139         $(OBJDIR)/fileflac.o \
140         $(OBJDIR)/fileformat.o \
141         $(OBJDIR)/filegif.o \
142         $(OBJDIR)/filejpeg.o \
143         $(OBJDIR)/filelist.o \
144         $(OBJDIR)/file.o \
145         $(OBJDIR)/fileogg.o \
146         $(OBJDIR)/filepng.o \
147         $(OBJDIR)/fileppm.o \
148         $(OBJDIR)/fileref.o \
149         $(OBJDIR)/filescene.o \
150         $(OBJDIR)/filesndfile.o \
151         $(OBJDIR)/filetga.o \
152         $(OBJDIR)/filethread.o \
153         $(OBJDIR)/filetiff.o \
154         $(OBJDIR)/filevorbis.o \
155         $(OBJDIR)/filexml.o \
156         $(OBJDIR)/floatauto.o \
157         $(OBJDIR)/floatautos.o \
158         $(OBJDIR)/folderlistmenu.o \
159         $(OBJDIR)/forkbase.o \
160         $(OBJDIR)/formatcheck.o \
161         $(OBJDIR)/formatpopup.o \
162         $(OBJDIR)/formatpresets.o \
163         $(OBJDIR)/formattools.o \
164         $(OBJDIR)/fourier.o \
165         $(OBJDIR)/framecache.o \
166         $(OBJDIR)/garbage.o \
167         $(OBJDIR)/gwindowgui.o \
168         $(OBJDIR)/gwindow.o \
169         $(OBJDIR)/indexable.o \
170         $(OBJDIR)/indexfile.o \
171         $(OBJDIR)/indexstate.o \
172         $(OBJDIR)/indexthread.o \
173         $(OBJDIR)/intauto.o \
174         $(OBJDIR)/intautos.o \
175         $(OBJDIR)/interfaceprefs.o \
176         $(OBJDIR)/interlacemodes.o \
177         $(OBJDIR)/keyframegui.o \
178         $(OBJDIR)/keyframehandles.o \
179         $(OBJDIR)/keyframe.o \
180         $(OBJDIR)/keyframepopup.o \
181         $(OBJDIR)/keyframes.o \
182         $(OBJDIR)/labeledit.o \
183         $(OBJDIR)/labelpopup.o \
184         $(OBJDIR)/labelnavigate.o \
185         $(OBJDIR)/labels.o \
186         $(OBJDIR)/levelwindowgui.o \
187         $(OBJDIR)/levelwindow.o \
188         $(OBJDIR)/libdv.o \
189         $(OBJDIR)/libmjpeg.o \
190         $(OBJDIR)/loadbalance.o \
191         $(OBJDIR)/loadfile.o \
192         $(OBJDIR)/loadmode.o \
193         $(OBJDIR)/localsession.o \
194         $(OBJDIR)/mainclock.o \
195         $(OBJDIR)/maincursor.o \
196         $(OBJDIR)/mainerror.o \
197         $(OBJDIR)/mainindexes.o \
198         $(OBJDIR)/mainmenu.o \
199         $(OBJDIR)/main.o \
200         $(OBJDIR)/mainprogress.o \
201         $(OBJDIR)/mainsession.o \
202         $(OBJDIR)/mainundo.o \
203         $(OBJDIR)/manualgoto.o \
204         $(OBJDIR)/maskauto.o \
205         $(OBJDIR)/maskautos.o \
206         $(OBJDIR)/maskengine.o \
207         $(OBJDIR)/mbuttons.o \
208         $(OBJDIR)/menuaeffects.o \
209         $(OBJDIR)/menuattacheffect.o \
210         $(OBJDIR)/menuattachtransition.o \
211         $(OBJDIR)/menueditlength.o \
212         $(OBJDIR)/menueffects.o \
213         $(OBJDIR)/menutransitionlength.o \
214         $(OBJDIR)/menuveffects.o \
215         $(OBJDIR)/meterhistory.o \
216         $(OBJDIR)/meterpanel.o \
217         $(OBJDIR)/mixersalign.o \
218         $(OBJDIR)/module.o \
219         $(OBJDIR)/mtimebar.o \
220         $(OBJDIR)/mwindowedit.o \
221         $(OBJDIR)/mwindowgui.o \
222         $(OBJDIR)/mwindowmove.o \
223         $(OBJDIR)/mwindow.o \
224         $(OBJDIR)/new.o \
225         $(OBJDIR)/overlayframe.o \
226         $(OBJDIR)/overlaydirect.o \
227         $(OBJDIR)/overlaynearest.o \
228         $(OBJDIR)/overlaysample.o \
229         $(OBJDIR)/packagedispatcher.o \
230         $(OBJDIR)/packagerenderer.o \
231         $(OBJDIR)/packagingengine.o \
232         $(OBJDIR)/panauto.o \
233         $(OBJDIR)/panautos.o \
234         $(OBJDIR)/panedividers.o \
235         $(OBJDIR)/patchbay.o \
236         $(OBJDIR)/patchgui.o \
237         $(OBJDIR)/performanceprefs.o \
238         $(OBJDIR)/picture.o \
239         $(OBJDIR)/playabletracks.o \
240         $(OBJDIR)/playback3d.o \
241         $(OBJDIR)/playbackconfig.o \
242         $(OBJDIR)/playbackengine.o \
243         $(OBJDIR)/playbackprefs.o \
244         $(OBJDIR)/playtransport.o \
245         $(OBJDIR)/pluginaclientlad.o \
246         $(OBJDIR)/pluginaclient.o \
247         $(OBJDIR)/pluginarray.o \
248         $(OBJDIR)/pluginclient.o \
249         $(OBJDIR)/plugindialog.o \
250         $(OBJDIR)/pluginfclient.o \
251         $(OBJDIR)/pluginlv2.o \
252         $(OBJDIR)/pluginlv2config.o \
253         $(OBJDIR)/pluginlv2client.o \
254         $(OBJDIR)/pluginlv2gui.o \
255         $(OBJDIR)/plugin.o \
256         $(OBJDIR)/pluginpopup.o \
257         $(OBJDIR)/pluginserver.o \
258         $(OBJDIR)/pluginset.o \
259         $(OBJDIR)/plugintclient.o \
260         $(OBJDIR)/plugintoggles.o \
261         $(OBJDIR)/pluginvclient.o \
262         $(OBJDIR)/preferences.o \
263         $(OBJDIR)/preferencesthread.o \
264         $(OBJDIR)/presets.o \
265         $(OBJDIR)/probeprefs.o \
266         $(OBJDIR)/proxy.o \
267         $(OBJDIR)/proxypopup.o \
268         $(OBJDIR)/question.o \
269         $(OBJDIR)/quit.o \
270         $(OBJDIR)/recconfirmdelete.o \
271         $(OBJDIR)/recordableatracks.o \
272         $(OBJDIR)/recordablevtracks.o \
273         $(OBJDIR)/recordaudio.o \
274         $(OBJDIR)/recordbatches.o \
275         $(OBJDIR)/recordconfig.o \
276         $(OBJDIR)/recordgui.o \
277         $(OBJDIR)/recordlabel.o \
278         $(OBJDIR)/recordmonitor.o \
279         $(OBJDIR)/record.o \
280         $(OBJDIR)/recordprefs.o \
281         $(OBJDIR)/recordscopes.o \
282         $(OBJDIR)/recordthread.o \
283         $(OBJDIR)/recordtransport.o \
284         $(OBJDIR)/recordvideo.o \
285         $(OBJDIR)/remotecontrol.o \
286         $(OBJDIR)/removefile.o \
287         $(OBJDIR)/renderengine.o \
288         $(OBJDIR)/renderfarmclient.o \
289         $(OBJDIR)/renderfarm.o \
290         $(OBJDIR)/render.o \
291         $(OBJDIR)/renderprofiles.o \
292         $(OBJDIR)/resample.o \
293         $(OBJDIR)/rescale.o \
294         $(OBJDIR)/resizetrackthread.o \
295         $(OBJDIR)/resourcepixmap.o \
296         $(OBJDIR)/resourcethread.o \
297         $(OBJDIR)/samplescroll.o \
298         $(OBJDIR)/samples.o \
299         $(OBJDIR)/savefile.o \
300         $(OBJDIR)/scenegraph.o \
301         $(OBJDIR)/scopewindow.o \
302         $(OBJDIR)/setformat.o \
303         $(OBJDIR)/sha1.o \
304         $(OBJDIR)/sharedlocation.o \
305         $(OBJDIR)/shbtnprefs.o \
306         $(OBJDIR)/shmemory.o \
307         $(OBJDIR)/shuttle.o \
308         $(OBJDIR)/sighandler.o \
309         $(OBJDIR)/signalstatus.o \
310         $(OBJDIR)/splashgui.o \
311         $(OBJDIR)/statusbar.o \
312         $(OBJDIR)/strack.o \
313         $(OBJDIR)/swindow.o \
314         $(OBJDIR)/theme.o \
315         $(OBJDIR)/threadexec.o \
316         $(OBJDIR)/threadloader.o \
317         $(OBJDIR)/timebar.o \
318         $(OBJDIR)/timeentry.o \
319         $(OBJDIR)/timelinepane.o \
320         $(OBJDIR)/tipwindow.o \
321         $(OBJDIR)/trackcanvas.o \
322         $(OBJDIR)/tracking.o \
323         $(OBJDIR)/track.o \
324         $(OBJDIR)/trackpopup.o \
325         $(OBJDIR)/trackscroll.o \
326         $(OBJDIR)/tracksedit.o \
327         $(OBJDIR)/tracks.o \
328         $(OBJDIR)/transitionhandles.o \
329         $(OBJDIR)/transition.o \
330         $(OBJDIR)/transitionpopup.o \
331         $(OBJDIR)/transportque.o \
332         $(OBJDIR)/tunerserver.o \
333         $(OBJDIR)/undostack.o \
334         $(OBJDIR)/vattachmentpoint.o \
335         $(OBJDIR)/vautomation.o \
336         $(OBJDIR)/vdevicebase.o \
337         $(OBJDIR)/vdevicedvb.o \
338         $(OBJDIR)/vdeviceprefs.o \
339         $(OBJDIR)/vdevicev4l2jpeg.o \
340         $(OBJDIR)/vdevicev4l2mpeg.o \
341         $(OBJDIR)/vdevicev4l2.o \
342         $(OBJDIR)/vdevicex11.o \
343         $(OBJDIR)/vedit.o \
344         $(OBJDIR)/vedits.o \
345         $(OBJDIR)/videodevice.o \
346         $(OBJDIR)/viewmenu.o \
347         $(OBJDIR)/virtualaconsole.o \
348         $(OBJDIR)/virtualanode.o \
349         $(OBJDIR)/virtualconsole.o \
350         $(OBJDIR)/virtualnode.o \
351         $(OBJDIR)/virtualvconsole.o \
352         $(OBJDIR)/virtualvnode.o \
353         $(OBJDIR)/vmodule.o \
354         $(OBJDIR)/vpatchgui.o \
355         $(OBJDIR)/vplayback.o \
356         $(OBJDIR)/vpluginarray.o \
357         $(OBJDIR)/vplugin.o \
358         $(OBJDIR)/vpluginset.o \
359         $(OBJDIR)/vrender.o \
360         $(OBJDIR)/vtimebar.o \
361         $(OBJDIR)/vtracking.o \
362         $(OBJDIR)/vtrack.o \
363         $(OBJDIR)/vwindowgui.o \
364         $(OBJDIR)/vwindow.o \
365         $(OBJDIR)/wavecache.o \
366         $(OBJDIR)/wintv.o \
367         $(OBJDIR)/wwindow.o \
368         $(OBJDIR)/x10tv.o \
369         $(OBJDIR)/zoombar.o \
370         $(OBJDIR)/zoompanel.o \
371         $(OBJDIR)/zwindow.o \
372         $(OBJDIR)/zwindowgui.o \
373
374 ifneq ($(WANT_FIREWIRE),no)
375 OBJS += \
376         $(OBJDIR)/audio1394.o \
377         $(OBJDIR)/avc1394control.o \
378         $(OBJDIR)/avc1394transport.o \
379         $(OBJDIR)/vdevice1394.o \
380         $(OBJDIR)/device1394input.o \
381         $(OBJDIR)/device1394output.o \
382         $(OBJDIR)/iec61883input.o \
383         $(OBJDIR)/iec61883output.o \
384
385 endif
386 ifneq ($(WANT_LIBZMPEG),no)
387 OBJS += \
388         $(OBJDIR)/audiompeg.o \
389         $(OBJDIR)/devicempeginput.o \
390         $(OBJDIR)/filempeg.o \
391         $(OBJDIR)/vdevicempeg.o \
392
393 endif
394 ifneq ($(WANT_COMMERCIAL),no)
395 OBJS += \
396         $(OBJDIR)/commercials.o \
397         $(OBJDIR)/dbwindow.o \
398         $(OBJDIR)/filedb.o \
399         $(OBJDIR)/mediadb.o \
400
401 endif
402 ifneq ($(WANT_CIN_3RDPARTY),no)
403 OBJS += \
404         $(OBJDIR)/fileac3.o \
405
406 endif
407
408 #       $(OBJDIR)/dvbtune.o \
409 #       $(OBJDIR)/renderfarmfsclient.o \
410 #       $(OBJDIR)/renderfarmfsserver.o \
411
412 GCC ?= gcc
413 DCRAW := $(OBJDIR)/dcraw.o
414 THEME_DATA := $(OBJDIR)/theme_data.o
415
416 OUTPUT = $(BINDIR)/$(WANT_CIN)
417 OUTPUT_G = $(OBJDIR)/$(WANT_CIN).debuginfo
418
419 LIBRARIES := \
420         $(GUICAST)/$(OBJDIR)/libguicast.a \
421
422 ifneq ($(WANT_LIBZMPEG),no)
423 LIBRARIES += \
424         $(MPEG2ENC)/$(OBJDIR)/hveg2enc.a \
425         $(LIBZMPEG3)/$(OBJDIR)/libzmpeg3.a \
426
427 endif
428 ifneq ($(WANT_COMMERCIAL),no)
429 LIBRARIES += \
430         $(TDB)/$(OBJDIR)/db.a \
431
432 endif
433
434 LIBS := $(LIBRARIES)
435
436 ifeq ($(WANT_CIN_3RDPARTY),no)
437 LIBS += -lavfilter -lavformat -lavcodec -lavutil
438 LIBS += -lswresample -lswscale
439 PLATFORM = $(shell uname -s)
440 ifneq (, $(filter $(PLATFORM), FreeBSD NetBSD))
441 LIBS += -lintl -liconv
442 LIBS += -lexecinfo
443 endif
444 LIBS += `pkg-config --libs OpenEXR 2>/dev/null`
445 LIBS += `pkg-config --libs flac 2>/dev/null`
446 LIBS += `pkg-config --libs libjpeg 2>/dev/null`
447 LIBS += `pkg-config --libs uuid 2>/dev/null`
448 LIBS += `pkg-config --libs theora 2>/dev/null`
449 LIBS += `pkg-config --libs vorbis 2>/dev/null`
450 LIBS += `pkg-config --libs sndfile 2>/dev/null`
451 LIBS += `pkg-config --libs x11 2>/dev/null`
452 ifeq ($(WANT_DV),yes)
453 LIBS += `pkg-config --libs libiec61883 2>/dev/null`
454 LIBS += `pkg-config --libs libdv 2>/dev/null`
455 LIBS += `pkg-config --libs libavc1394  2>/dev/null`
456 endif
457 ifeq ($(WANT_LIBZMPEG),yes)
458 LIBS += -la52 -ltwolame -lmp3lame
459 endif
460 LIBS += -lgif -ltheoraenc -ltheoradec -lvorbisfile -lvorbisenc -ltiff
461 ifeq ($(shell uname -o), Android)
462 LIBS += -landroid-shmem -liconv ../libbthread-master/jpt.a
463 endif
464 LIBS += $(shared_libs)
465 LIBS += $(system_libs)
466 else
467 LIBS += $(libraries)
468 endif
469
470 ifneq ($(WANT_COMMERCIAL),no)
471 CUTADS = $(OBJDIR)/cutads
472 CUTOBJ = $(OBJDIR)/cutads.o
473 CUTOBJS = $(CUTOBJ) \
474         $(OBJDIR)/mediadb.o \
475         $(OBJDIR)/filexml.o
476 CUTLIBS = \
477         $(LIBZMPEG3)/$(OBJDIR)/libzmpeg3.a -lX11 \
478         $(TDB)/$(OBJDIR)/db.a
479 endif
480
481 BDWRITE = $(OBJDIR)/bdwrite
482 BDWOBJS = $(OBJDIR)/bdwrite.o
483
484 ifneq ($(WANT_LV2),no)
485 LV2UI = $(OBJDIR)/lv2ui
486 LV2OBJS = \
487         $(OBJDIR)/lv2ui.o \
488         $(OBJDIR)/pluginlv2.o \
489         $(OBJDIR)/pluginlv2ui.o \
490         $(OBJDIR)/pluginlv2config.o \
491         $(OBJDIR)/forkbase.o
492 LIBS += `pkg-config --libs lilv-0`
493 endif
494
495 CFLAGS := \
496         -I/usr/local/include \
497         -I$(GUICAST) \
498         -I$(LIBZMPEG3) \
499         $(static_incs) \
500         $(CFLAGS)
501
502 # Speed up linking with this linking sequence
503 ifeq ($(OBJDIR), alpha)
504
505 LDFLAGS1 = \
506         --demangle=compaq -export-dynamic -L./ \
507         -L$(GUICAST) -L/usr/X11R6/lib \
508         -L`expr /usr/lib/compaq/cxx-*/alpha-linux/`lib -L/usr/local/lib \
509         -L`expr /usr/lib/gcc-lib/alpha-redhat-linux/*` \
510         -rpath `expr /usr/lib/compaq/cxx-*/alpha-linux/`bin/ -m elf64alpha \
511         -L`expr /usr/lib/compaq/cxx-*/alpha-linux/`bin/ -dynamic-linker \
512         /lib/ld-linux.so.2 `expr /usr/lib/compaq/cxx-*/alpha-linux/`bin/crt1.o \
513         `expr /usr/lib/compaq/cxx-*/alpha-linux/`bin/crti.o \
514         `expr /usr/lib/compaq/cxx-*/alpha-linux/`bin/crtbegin.o \
515         `expr /usr/lib/compaq/cxx-*/alpha-linux/`bin/_main.o
516
517 LDFLAGS2 = -lcpml -lcxxstdma_rh60 -lcxxma_rh60 -lc -lots \
518         `expr /usr/lib/compaq/cxx-*/alpha-linux/`bin/crtend.o \
519         `expr /usr/lib/compaq/cxx-*/alpha-linux/`bin/crtn.o --no-demangle \
520         --warn-once $(LDFLAGS)
521 LINKER = ld -o $(OUTPUT)
522 CFLAGS += -DUSE_ALPHA
523
524 else
525
526 LDFLAGS1 = -Wl,-export-dynamic -g
527 LDFLAGS2 = $(LDFLAGS)
528 LINKER = $(CXX) -o $(OUTPUT)
529
530 endif
531
532 $(shell mkdir -p $(OBJDIR))
533 $(shell echo $(CFLAGS) > $(OBJDIR)/c_flags)
534 $(shell echo $(LDFLAGS1) $(OBJS) $(THEME_DATA) $(DCRAW) $(LIBS) $(LDFLAGS2) > $(OBJDIR)/objs)
535
536 all:    $(OUTPUT) $(CUTADS) $(BDWRITE) $(LV2UI)
537
538 # Static linking is not possible because the plugins depend on symbols
539 # in the main executable.
540 # Also VFS only overrides the C library when dynamic linking is used.
541 $(OUTPUT): $(OBJS) $(THEME_DATA) $(DCRAW) $(LIBRARIES)
542         $(LINKER) `cat $(OBJDIR)/objs`
543         $(if $(findstring -g,$(CFLAGS)),objcopy --only-keep-debug $(OUTPUT) $(OUTPUT_G))
544         $(if $(findstring -ggdb,$(CFLAGS)),,strip $(OUTPUT))
545         ln -f -s ../bin/$(WANT_CIN) ci
546
547 ifneq ($(WANT_COMMERCIAL),no)
548 $(CUTADS):      $(CUTOBJS) $(CUTLIBS) $(LIBRARIES)
549         @echo $(CXX) -o $@ $(CUTOBJS)
550         @$(CXX) $(CFLAGS) -pthread -o $@ $(CUTOBJS) $(CUTLIBS) $(LIBS)
551         $(if $(findstring -g,$(CFLAGS)),objcopy --only-keep-debug $(CUTADS) $(CUTADS).debuginfo)
552         $(if $(findstring -ggdb,$(CFLAGS)),,strip $(CUTADS))
553
554 install-cutads:
555         cp -av $(OBJDIR)/cutads $(BINDIR)/.
556
557 install:        install-cutads
558 endif
559
560 $(BDWRITE):     $(BDWOBJS) $(LIBRARIES)
561         @echo $(CXX) -o $@ $(BDWOBJS)
562         @$(CXX) $(CFLAGS) -pthread -o $@ $(BDWOBJS) $(LIBS)
563         $(if $(findstring -g,$(CFLAGS)),objcopy --only-keep-debug $(BDWRITE) $(BDWRITE).debuginfo)
564         $(if $(findstring -ggdb,$(CFLAGS)),,strip $(BDWRITE))
565
566 install-bdwrite:
567         cp -av $(OBJDIR)/bdwrite $(BINDIR)/.
568 install:        install-bdwrite
569
570 ydiff:  ydiff.C $(LIBRARIES)
571         @echo $(CXX) -o $@ ydiff.C
572         @$(CXX) $(CFLAGS) ydiff.C -o $@ $(LIBS)
573
574 shdmp:  shdmp.C
575         @$(CXX) $(CFLAGS) shdmp.C -o $@
576 shudmp: shudmp.C
577         @$(CXX) $(CFLAGS) shudmp.C -o $@ -lusb-1.0
578
579 clean:
580         rm -rf $(OBJDIR)
581         rm -f shuttle_keys.h
582
583 tags:
584         ctags -R -h default --langmap=c:+.inc . ../guicast/ ../libzmpeg3 ../plugins ../thirdparty/ffmpeg-*
585
586 $(OBJDIR)/fileexr.o:    BFLAGS:= -Wno-deprecated -std=c++11
587 $(OBJDIR)/filedpx.o:    BFLAGS:= -Wno-deprecated -std=c++11
588 $(OBJDIR)/sha1.o:       BFLAGS:= -O3
589 $(OVERLAYS):            BFLAGS:= -Ofast -g0
590
591 $(OBJDIR)/%.o:          %.C
592         $(CXX) `cat $(OBJDIR)/c_flags` $(BFLAGS) -DMSGQUAL=$* -c $< -o $@
593
594 #lv2
595 ifneq ($(WANT_LV2),no)
596 GTK2_INCS := `pkg-config --cflags gtk+-2.0` -Wno-deprecated-declarations
597 GTK2_LIBS := `pkg-config --libs gtk+-2.0`
598 LV2_LIBS  := `pkg-config --libs lilv-0` `pkg-config --libs suil-0`
599
600 $(OBJDIR)/pluginlv2ui.o:        pluginlv2ui.C
601 $(OBJDIR)/lv2ui.o:      lv2ui.C
602 $(OBJDIR)/pluginlv2ui.o $(OBJDIR)/lv2ui.o:
603         $(CXX) `cat $(OBJDIR)/c_flags` $(GTK2_INCS) -DMSGQUAL=$* -c $< -o $@
604
605 $(OBJDIR)/lv2ui: $(LV2OBJS)
606         @echo $(CXX) \`cat $(OBJDIR)/c_flags\` $^ -o $@
607         @$(CXX) `cat $(OBJDIR)/c_flags` $^ -o $@ $(LIBS) $(LV2_LIBS) $(GTK2_LIBS)
608         $(if $(findstring -g,$(CFLAGS)),objcopy --only-keep-debug $(LV2UI) $(LV2UI).debuginfo)
609         $(if $(findstring -ggdb,$(CFLAGS)),,strip $(LV2UI))
610
611 .PHONY: lv2ui
612 lv2ui:  $(LV2UI)
613
614 install-lv2ui:
615         cp -av $(LV2UI) $(BINDIR)/.
616
617 install:        install-lv2ui
618 endif
619
620 ifneq ($(WANT_SHUTTLE),no)
621 X11_INCS := /usr/include/
622 X11_INCS1 := $(shell pkg-config --cflags-only-I x11 | sed "s/-I//")
623
624 ifneq ($(X11_INCS1),)
625 X11_INCS := $(X11_INCS1)
626 endif
627
628 $(OBJDIR)/shuttle.o:    shuttle.C shuttle_keys.h
629 shuttle_keys.h: $(X11_INCS)/X11/keysymdef.h
630         sed -n $(X11_INCS)/X11/keysymdef.h > shuttle_keys.h -f shuttle.sed
631 endif
632
633 $(OBJDIR)/pluginlv2gui.o:       pluginlv2gui.C
634         $(CXX) `cat $(OBJDIR)/c_flags` $(GTK2_INCS) -DMSGQUAL=$* -c $< -o $@
635
636 #dcraw
637 $(DCRAW): dcraw.C
638         $(CXX) `cat $(OBJDIR)/c_flags` $(if $(findstring -ggdb,$(CFLAGS)),,-O4) -DNODEPS -DLOCALTIME \
639                 -Wno-misleading-indentation -Wno-sign-compare -Wno-narrowing dcraw.C -c -o $*.o
640
641 $(THEME_DATA):
642         cd $(OBJDIR) && \
643         $(GUICAST)/$(OBJDIR)/bootstrap theme_data.o $(TOPDIR)/picon/cinfinity/*.png
644
645 val-%:
646         @echo $($(subst val-,,$@))
647