$(D)/input:
        mkdir -p $(BIN) && \
-       cp -a $(GIT_PLUGINS)/input $(BUILD_TMP)/ && \
+       tar -C $(GIT_PLUGINS) -cp input --exclude=.git | tar -C $(BUILD_TMP) -x && \
        pushd $(BUILD_TMP)/input && \
-               $(TARGET)-gcc $(TARGET_CFLAGS) -L$(TARGETPREFIX)/lib -I$(TARGETPREFIX)/include/freetype2 -lfreetype -lpng -lz -o $(BUILD_TMP)/input/input input.c inputd.c gfx.c io.c text.c
+               $(TARGET)-g++ $(TARGET_CFLAGS) -Wshadow -c pngw.cpp png_helper.cpp -I$(TARGETPREFIX)/include && \
+               $(TARGET)-gcc $(TARGET_CFLAGS) -Wshadow -c input.c inputd.c gfx.c io.c text.c fb_display.c resize.c -lfreetype -lpng -lz -L$(TARGETPREFIX)/lib -I$(TARGETPREFIX)/include/freetype2 && \
+               $(TARGET)-g++ $(TARGET_LDFLAGS) -o $(BUILD_TMP)/input/input input.o inputd.o gfx.o io.o text.o fb_display.o resize.o pngw.o png_helper.o -lfreetype -lz -lpng -L$(TARGETPREFIX)/lib -I$(TARGETPREFIX)/include -I$(TARGETPREFIX)/include/freetype2 && \
+               $(TARGET)-strip input
        cp -f $(BUILD_TMP)/input/input $(TARGETPREFIX)/bin/
        rm -rf $(BUILD_TMP)/input
        touch $@
 
 $(D)/msgbox:
        mkdir -p $(BIN) && \
-       cp -a $(GIT_PLUGINS)/msgbox $(BUILD_TMP)/ && \
+       tar -C $(GIT_PLUGINS) -cp msgbox --exclude=.git | tar -C $(BUILD_TMP) -x && \
        pushd $(BUILD_TMP)/msgbox && \
-               $(TARGET)-gcc $(TARGET_CFLAGS) -L$(TARGETPREFIX)/lib -I$(TARGETPREFIX)/include/freetype2 -lfreetype -lpng -lz -o $(BUILD_TMP)/msgbox/msgbox msgbox.c gfx.c io.c text.c txtform.c
+               $(TARGET)-g++ $(TARGET_CFLAGS) -Wshadow -c pngw.cpp png_helper.cpp -I$(TARGETPREFIX)/include && \
+               $(TARGET)-gcc $(TARGET_CFLAGS) -Wshadow -c msgbox.c gfx.c io.c text.c txtform.c fb_display.c resize.c -lfreetype -lpng -lz -L$(TARGETPREFIX)/lib -I$(TARGETPREFIX)/include/freetype2 && \
+               $(TARGET)-g++ $(TARGET_LDFLAGS) -o $(BUILD_TMP)/msgbox/msgbox msgbox.o gfx.o io.o text.o txtform.o fb_display.o resize.o pngw.o png_helper.o -lfreetype -lz -lpng -L$(TARGETPREFIX)/lib -I$(TARGETPREFIX)/include -I$(TARGETPREFIX)/include/freetype2 && \
+               $(TARGET)-strip msgbox
        cp -f $(BUILD_TMP)/msgbox/msgbox $(TARGETPREFIX)/bin/
        rm -rf $(BUILD_TMP)/msgbox
        touch $@
        mkdir -p $(VARPLUG) && \
        mkdir -p $(BIN) && \
        mkdir -p $(VARCONF) && \
-       cp -a $(GIT_PLUGINS)/shellexec $(BUILD_TMP)/ && \
+       tar -C $(GIT_PLUGINS) -cp shellexec --exclude=.git | tar -C $(BUILD_TMP) -x && \
        pushd $(BUILD_TMP)/shellexec && \
+               $(TARGET)-g++ $(TARGET_CFLAGS) -Wshadow -c pngw.cpp png_helper.cpp -I$(TARGETPREFIX)/include && \
+               $(TARGET)-gcc $(TARGET_CFLAGS) -Wshadow -c shellexec.c gfx.c io.c text.c fb_display.c resize.c -lfreetype -lz -lpng -L$(TARGETPREFIX)/lib -I$(TARGETPREFIX)/include -I$(TARGETPREFIX)/include/freetype2 && \
+               $(TARGET)-g++ $(TARGET_LDFLAGS) -o $(BUILD_TMP)/shellexec/shellexec shellexec.o gfx.o io.o text.o fb_display.o resize.o pngw.o png_helper.o -lfreetype -lz -lpng -L$(TARGETPREFIX)/lib -I$(TARGETPREFIX)/include -I$(TARGETPREFIX)/include/freetype2 && \
                $(TARGET)-gcc $(TARGET_CFLAGS) -L$(TARGETPREFIX)/lib -I$(SOURCE_DIR)/neutrino-hd/src -g -o $(BUILD_TMP)/shellexec/shellexec.so starter.c && \
-               $(TARGET)-gcc $(TARGET_CFLAGS) -L$(TARGETPREFIX)/lib -I$(TARGETPREFIX)/include/freetype2 -lfreetype -lpng -lz -o $(BUILD_TMP)/shellexec/shellexec shellexec.c gfx.c io.c text.c
+               $(TARGET)-strip shellexec && \
+               $(TARGET)-strip shellexec.so
        cp -f $(BUILD_TMP)/shellexec/shellexec.so $(VARPLUG)/
        cp -f $(BUILD_TMP)/shellexec/shellexec.cfg $(VARPLUG)/
        cp -f $(BUILD_TMP)/shellexec/shellexec.conf $(VARCONF)/