]> git.vomp.tv Git - vompclient.git/commitdiff
Fully working cross compilation
authorChris Tallon <chris@vomp.tv>
Fri, 27 Aug 2021 17:40:00 +0000 (18:40 +0100)
committerChris Tallon <chris@vomp.tv>
Fri, 27 Aug 2021 17:40:00 +0000 (18:40 +0100)
GNUmakefile

index 9e367fbbba10e4e0b089518192ec1c0d11acafe4..62b9f523172c0bc58e6c868a17ac4a9124e849da 100644 (file)
@@ -5,14 +5,21 @@
 
 include objects.mk
 
-# valid platforms are raspberry and crossraspberry
 vomp_platform=$(shell ./select-platform)
-$(info selected $(vomp_platform))
+# vomp_platform variable sets up the build on different platforms
+# valid platforms are:
+# raspberry - native compile for & on Raspberry Pi
+# crossraspberry - cross compile for Raspberry Pi
+# Override auto select here:
+# vomp_platform=
+
+$(info Build system selected: $(vomp_platform))
+
 
 # uncomment the line below if you want to build vomp application without a reboot option, automatically set for windows!
-#vomp_options+= -DVOMP_HAS_EXIT
+#VOMP_OPTIONS+= -DVOMP_HAS_EXIT
 
-CROSSROOT=
+CROSSROOT=/pi-root
 
 ifndef VERBOSE
 Q = @
@@ -55,36 +62,45 @@ LD=g++
 LDFLAGS = -fuse-ld=gold $(PICTURES)
 #-fuse-ld=gold
 
-vomp_options += -DIPV4 -DIPV6
+VOMP_OPTIONS += -DIPV4 -DIPV6
 LIBPATHS = -L/opt/vc/lib -L/usr/lib/arm-linux-gnueabihf
 LIBS = -lpthread -lrt -lbrcmEGL -lbrcmOpenVG -lopenmaxil -lbcm_host -lavformat -lavcodec -lavutil -lswresample
 LIBS += -ldl -lfontconfig -lfreetype -lMagick++-6.Q16
 OBJECTS = $(OBJ_COMMON) $(OBJ_RASPBERRY)
-CROSSLIBS =
 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
 PLATFORM = -DVOMP_PLATFORM_RASPBERRY
 CXXFLAGS_EXTRA = -Wno-psabi
 endif
 
+
+
+# Debian 10 x64
+# apt install g++-arm-linux-gnueabihf
+# Set vomp_platform=crossraspberry above
 ifeq ($(vomp_platform),crossraspberry)
-$(info Raspberry Pi cross compiler)
-CC=arm-linux-gnueabihf-gcc
-STRIP=arm-linux-gnueabihf-strip
-CXX=arm-linux-gnueabihf-g++
-LD=arm-linux-gnueabihf-g++
-LDFLAGS = $(PICTURES) -Xlinker --sysroot=$(CROSSROOT) -Xlinker --rpath-link=$(CROSSROOT)/usr/lib/gcc/arm-linux-gnueabihf/8 -Xlinker --rpath-link=$(CROSSROOT)/usr/lib/arm-linux-gnueabihf -Xlinker --rpath-link=$(CROSSROOT)/lib/arm-linux-gnueabihf -Xlinker --rpath-link=$(CROSSROOT)/opt/vc/lib
-LIBPATHS = -L$(CROSSROOT)/usr/lib/gcc/arm-linux-gnueabihf/8 -L$(CROSSROOT)/opt/vc/lib -L$(CROSSROOT)/lib -L$(CROSSROOT)/usr/lib -L$(CROSSROOT)/lib/arm-linux-gnueabihf -L$(CROSSROOT)/usr/lib/arm-linux-gnueabihf -L$(CROSSROOT)/usr/local/lib
-LIBS = -lpthread -lrt -lbrcmEGL -lbrcmOpenVG -lopenmaxil -lbcm_host -lavformat -lavcodec -lavutil -lswresample
-LIBS += -ldl -lfontconfig -lfreetype -lMagick++-6.Q16 -lm
+VOMP_OPTIONS += -DIPV4 -DIPV6
+CROSS_PREFIX=arm-linux-gnueabihf-
+CC=$(CROSS_PREFIX)gcc
+STRIP=$(CROSS_PREFIX)strip
+CXX=$(CROSS_PREFIX)g++
+LD=$(CROSS_PREFIX)g++
+
+LDFLAGS = -Wall $(PICTURES) --sysroot=$(CROSSROOT) \
+ -Wl,-rpath-link,$(CROSSROOT)/opt/vc/lib -Wl,-rpath-link,$(CROSSROOT)/usr/lib/arm-linux-gnueabihf \
+ -L=/opt/vc/lib -L=/usr/lib/arm-linux-gnueabihf
+LIBPATHS =
+LIBS = -lpthread -lstdc++ -lrt -lbrcmEGL -lbrcmOpenVG -lopenmaxil -lbcm_host -lavformat -lavcodec \
+ -lavutil -lswresample -lm -ldl -lfontconfig -lfreetype -lMagick++-6.Q16 -lMagickWand-6.Q16 -lMagickCore-6.Q16
 OBJECTS = $(OBJ_COMMON) $(OBJ_RASPBERRY)
-CROSSLIBS =
-INCLUDES = -I$(CROSSROOT)/opt/vc/include -I$(CROSSROOT)/opt/vc/include/interface/vcos/pthreads -I$(CROSSROOT)/usr/include -I$(CROSSROOT)/usr/include/arm-linux-gnueabihf -I$(CROSSROOT)/usr/include/freetype2 -I$(CROSSROOT)/usr/include/ImageMagick-6  -I$(CROSSROOT)/usr/include/ImageMagick  -I$(CROSSROOT)/usr/include/arm-linux-gnueabihf/ImageMagick-6
+INCLUDES = --sysroot=$(CROSSROOT) -I=/usr/include/arm-linux-gnueabihf -I=/opt/vc/include -I=/usr/include/freetype2 -I=/usr/include/arm-linux-gnueabihf/ImageMagick-6 -I=/usr/include/ImageMagick-6
 PLATFORM = -DVOMP_PLATFORM_RASPBERRY
-CXXFLAGS_EXTRA = -mfloat-abi=hard
+CXXFLAGS_EXTRA = -mtune=cortex-a7 -mfloat-abi=hard -fopenmp
 endif
 
-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)
-CXXFLAGS_REL = -O3 -Wall -Werror -std=c++14 $(CXXFLAGS_EXTRA) -D_GNU_SOURCE $(PLATFORM) $(vomp_options) $(INCLUDES)
+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 -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16 $(PLATFORM) $(VOMP_OPTIONS) $(INCLUDES)
+CXXFLAGS_REL = -O3 -Wall -Werror -std=c++14 $(CXXFLAGS_EXTRA) -D_GNU_SOURCE -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16 $(PLATFORM) $(VOMP_OPTIONS) $(INCLUDES)
+
+
 
 .PHONY: clean fresh all install strip
 
@@ -95,9 +111,9 @@ fresh:   clean default
        @echo CC $@
        $(Q)$(CXX) $(CXXFLAGS) -c -o $@ $<
 
-vompclient: $(OBJECTS) $(CROSSLIBS)
+vompclient: $(OBJECTS)
        @echo LD vompclient
-       $(Q)$(LD) $(LDFLAGS) $(LIBPATHS) -o vompclient $(OBJECTS) $(CROSSLIBS) $(LIBS)
+       $(Q)$(LD) $(LDFLAGS) $(LIBPATHS) -o vompclient $(OBJECTS) $(LIBS)
 
 strip:
        @echo STRIP vompclient