]> git.vomp.tv Git - vompclient.git/blob - src/CMakeLists.txt
Switch to cmake
[vompclient.git] / src / CMakeLists.txt
1 cmake_minimum_required(VERSION 3.13.4)
2
3 set (VOMP_OBJ_COMMON
4         util.cc control.cc thread.cc timers.cc i18n.cc udp4.cc udp6.cc vdpc.cc tcp.cc
5         message.cc messagequeue.cc wol.cc audio.cc video.cc
6         vdr.cc recman.cc recording.cc recinfo.cc channel.cc rectimer.cc event.cc
7         directory.cc mark.cc option.cc vfeed.cc afeed.cc
8         demuxer.cc demuxervdr.cc demuxerts.cc stream.cc osd.cc surface.cc
9         region.cc colour.cc boxstack.cc boxx.cc tbboxx.cc vrecording.cc
10         vinfo.cc vquestion.cc vrecordinglist.cc vrecordinglistclassic.cc
11         vrecordinglistadvanced.cc vepgsummary.cc vepglistadvanced.cc
12         vmute.cc vvolume.cc vtimerlist.cc vtimeredit.cc vrecordingmenu.cc
13         vchannellist.cc vwelcome.cc vvideorec.cc vepgsettimer.cc
14         vchannelselect.cc vserverselect.cc vconnect.cc vepg.cc vrecmove.cc
15         vradiorec.cc vaudioselector.cc vscreensaver.cc vopts.cc
16         wselectlist.cc wjpeg.cc wsymbol.cc wbutton.cc wtextbox.cc
17         woptionpane.cc woptionbox.cc wremoteconfig.cc wtabbar.cc led.cc
18         inputman.cc input.cc inputudp.cc inputlirc.cc vpicturebanner.cc
19         abstractoption.cc eventdispatcher.cc vdrrequestpacket.cc
20         vdrresponsepacket.cc vvideolivetv.cc sleeptimer.cc
21         wprogressbar.cc bitmap.cc dvbsubtitles.cc tfeed.cc vteletextview.cc
22         teletextdecodervbiebu.cc teletxt/txtfont.cc movieinfo.cc seriesinfo.cc
23         wmovieview.cc wseriesview.cc wtvmedia.cc wpictureview.cc
24         osdvector.cc surfacevector.cc buffer.cc config.cc log.cc
25         playervideorec.cc playervideolive.cc playerradiolive.cc playerradiorec.cc
26         imageloader.cc image.cc
27 )
28
29 set (VOMP_OBJ_RASPBERRY
30         main.cc threadp.cc osdopenvg.cc ledraspberry.cc videoomx.cc audioomx.cc imageomx.cc
31         wjpegsimple.cc inputlinux.cc inputcec.cc
32         omx/omx.cc omx/omximagedecode.cc omx/omxeglrender.cc imageomx2.cc
33 )
34
35 #
36 #OBJ_WINDOWS = winmain.o threadwin.o inputwin.o ledwin.o videowin.o                 \
37 #              audiowin.o windowsosd.o dsallocator.o dssourcefilter.o dssourcepin.o \
38 #              wwinvideofilter.o wwinvideoh264filter.o wwinaudiofilter.o            \
39 #              wwinmp3audiofilter.o wjpegsimple.o
40 #
41 #OBJ_WINLEGACY = osdwinpixel.o surfacewin.o                                         \
42 #                fonts/helvB24.o fonts/helvB18.o
43 #
44 #OBJ_WINCURRENT = osdwinvector.o
45 #
46
47 set (PNG_FILES
48         other/vdrhires.png
49         other/wallpaper720p.jpg
50         other/properties.png
51         other/radio.png
52         other/timers.png
53         other/tv.png
54         other/recordings.png
55         other/restart.png
56         other/hd1080i.png
57         other/hd720p.png
58         other/sd576i.png
59         other/txtoff.png
60         other/txton.png
61         other/dolbyoff.png
62         other/dolbyon.png
63         other/recording.png
64         other/recfolder.png
65         other/defposter.png
66 )
67
68 project(vomp)
69 add_executable(vomp ${VOMP_OBJ_COMMON} ${VOMP_OBJ_RASPBERRY} pngs.o)
70
71 set(CMAKE_BUILD_TYPE Debug)
72 target_compile_options(vomp PRIVATE -O0)
73
74 set_property(TARGET vomp PROPERTY CXX_STANDARD 14)
75
76 find_path(INC_VC bcm_host.h PATHS /opt/vc/include)
77 find_path(INC_FT2 ft2build.h PATHS /usr/include/freetype2)
78 find_path(INC_MAGICK Magick++.h PATHS /usr/include/ImageMagick-6)
79 find_path(INC_MAGICK2 magick/magick-baseconfig.h PATHS /usr/include/arm-linux-gnueabihf/ImageMagick-6)
80
81 target_include_directories(vomp SYSTEM PRIVATE ${INC_VC} ${INC_FT2} ${INC_MAGICK} ${INC_MAGICK2})
82
83 target_compile_options(vomp PRIVATE
84         -Werror=return-type
85         -Wall
86         -Wextra
87         -Wshadow
88         -Wmissing-declarations
89         -Winit-self
90         -Woverloaded-virtual
91         -Wold-style-cast
92         -Wconversion
93         -Wmissing-format-attribute
94         -Wdisabled-optimization
95         -Wmissing-noreturn
96 )
97
98 target_compile_options(vomp PRIVATE
99         -D_GNU_SOURCE -DIPV4 -DIPV6 -DVOMP_PLATFORM_RASPBERRY -DMAGICKCORE_HDRI_ENABLE=0
100         -DMAGICKCORE_QUANTUM_DEPTH=16 -DDEV)
101
102 target_link_libraries(vomp
103         pthread stdc++ rt brcmEGL brcmOpenVG openmaxil bcm_host avformat avcodec
104         fmt avutil swresample m dl fontconfig freetype Magick++-6.Q16
105         MagickWand-6.Q16 MagickCore-6.Q16 jsoncpp)
106
107 target_link_directories(vomp PRIVATE
108         ${CMAKE_SYSROOT}/opt/vc/lib
109         ${CMAKE_SYSROOT}/usr/lib/arm-linux-gnueabihf)
110
111 add_custom_command(
112         OUTPUT pngs.o
113         WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
114         COMMENT pngs.o
115         COMMAND ${CMAKE_LINKER} -r -b binary -o ../build/pngs.o ${PNG_FILES}
116 )