]> git.vomp.tv Git - vompclient.git/blob - GNUmakefile
Begin v0.6 refurb
[vompclient.git] / GNUmakefile
1 # Switches for this Makefile:
2
3 # VERBOSE - set to 1 to show all commands
4 # SKIPDEPS - Skip regeneration of dependencies file
5
6 include objects.mk
7
8 # valid platforms are raspberry and crossraspberry
9 vomp_platform=$(shell ./select-platform)
10 $(info selected $(vomp_platform))
11
12 # uncomment the line below if you want to build vomp application without a reboot option, automatically set for windows!
13 #vomp_options+= -DVOMP_HAS_EXIT
14
15 ifdef VERBOSE
16 Q =
17 else
18 Q = @
19 endif
20
21 ifeq ($(vomp_platform),raspberry)
22 $(info Raspberry Pi native compiler)
23 CC=clang-9
24 STRIP=strip
25 CXX=clang++-9
26 LD=clang++-9
27 vomp_options += -DIPV6
28 LDFLAGS = -fuse-ld=gold $(PICTURES)
29 LIBPATHS = -L/opt/vc/lib -L/usr/lib/arm-linux-gnueabihf
30 LIBS = -lpthread -lrt -lbrcmEGL -lbrcmOpenVG -lopenmaxil -lbcm_host -lavformat -lavcodec -lavutil -lavresample
31 LIBS += -ldl -lfontconfig -lfreetype -lMagick++-6.Q16
32 OBJECTS = $(OBJ_COMMON) $(OBJ_RASPBERRY)
33 CROSSLIBS =
34 INCLUDES = -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/usr/include/freetype2 -I/usr/include/ImageMagick -I/usr/include/ImageMagick-6 -I/usr/include/arm-linux-gnueabihf/ImageMagick-6
35 PLATFORM = -DVOMP_PLATFORM_RASPBERRY
36 CXXFLAGS_EXTRA =
37 endif
38
39 ifeq ($(vomp_platform),crossraspberry)
40 $(info Raspberry Pi cross compiler)
41 CC=arm-linux-gnueabi-gcc-4.7
42 STRIP=arm-linux-gnueabi-strip
43 CXX=arm-linux-gnueabi-g++-4.7
44 LD=arm-linux-gnueabi-g++-4.7
45 LDFLAGS = $(PICTURES) -Wl,--verbose -Xlinker --rpath-link=rpi-root/usr/lib/arm-linux-gnueabihf -Xlinker --rpath-link=rpi-root/lib/arm-linux-gnueabihf -Xlinker --rpath-link=rpi-root/opt/vc/lib
46 LIBPATHS = -Lrpi-root/opt/vc/lib -Lrpi-root/lib -Lrpi-root/usr/lib -Lrpi-root/lib/arm-linux-gnueabihf -Lrpi-root/usr/lib/arm-linux-gnueabihf -Lrpi-root/usr/local/lib
47 LIBS = -lpthread -lrt -lEGL -lOpenVG -lopenmaxil -lbcm_host -lavformat -lavcodec -lavutil -lavresample -ldl -lfontconfig
48 LIBS += -lfreetype -lMagick++-6.Q16
49 OBJECTS = $(OBJ_COMMON) $(OBJ_RASPBERRY)
50 CROSSLIBS =
51 INCLUDES = -Irpi-root/opt/vc/include -Irpi-root/opt/vc/include/interface/vcos/pthreads -Irpi-root/usr/include -Irpi-root/usr/include/freetype2 -Irpi-root/usr/include/ImageMagick-6  -Irpi-root/usr/include/ImageMagick  -Irpi-root/usr/include/arm-linux-gnueabihf/ImageMagick-6
52 PLATFORM = -DVOMP_PLATFORM_RASPBERRY
53 CXXFLAGS_EXTRA = -mfloat-abi=hard
54 endif
55
56 CXXFLAGS_DEV = -g -O0 -Wall -Wextra -Wshadow -Werror=return-type -Wmissing-declarations -Winit-self -Woverloaded-virtual -Wold-style-cast -Wconversion -std=c++14 $(CXXFLAGS_EXTRA) -DDEV -D_GNU_SOURCE $(PLATFORM) $(vomp_options) $(INCLUDES)
57 CXXFLAGS_REL = -O3 -Wall -Werror -std=c++14 $(CXXFLAGS_EXTRA) -D_GNU_SOURCE $(PLATFORM) $(vomp_options) $(INCLUDES)
58
59 .PHONY: clean fresh all install strip
60
61 default: dev
62 fresh:   clean default
63
64 %.o: %.cc
65         @echo CC $@
66         $(Q)$(CXX) $(CXXFLAGS) -c -o $@ $<
67
68 vompclient: $(OBJECTS) $(CROSSLIBS)
69         @echo LD vompclient
70         $(Q)$(LD) $(LDFLAGS) $(LIBPATHS) -o vompclient $(OBJECTS) $(CROSSLIBS) $(LIBS)
71
72 strip:
73         @echo STRIP vompclient
74         $(Q)$(STRIP) vompclient
75
76 dev: CXXFLAGS := $(CXXFLAGS_DEV)
77 dev: vompclient
78
79 release: CXXFLAGS := $(CXXFLAGS_REL)
80 release: clean vompclient strip
81
82 clean:
83         rm -f *.o deps vompclient *~ fonts/*.o fonts/*~ teletxt/*.o
84
85 ifndef SKIPDEPS
86 deps: GNUmakefile
87         @echo "DEPS"
88         $(Q)$(CC) -MM $(INCLUDES) $(OBJECTS:%.o=%.cc) > deps
89 endif
90
91 ifneq ($(MAKECMDGOALS),clean)
92 include deps
93 endif