From 163f14df408febb1fe92f4ddeffdfe933164b87f Mon Sep 17 00:00:00 2001
From: kali <kali@leap.se>
Date: Tue, 13 Oct 2020 19:03:29 +0200
Subject: [PATCH] [pkg] add golib target to makefile

- Resolves: #363
---
 Makefile     | 23 ++++++++---------------
 gui/build.sh | 48 ++++++++++++++++++++++++++++++++++++++----------
 2 files changed, 46 insertions(+), 25 deletions(-)

diff --git a/Makefile b/Makefile
index 1483a9f7..560c1234 100644
--- a/Makefile
+++ b/Makefile
@@ -77,13 +77,15 @@ ifeq ($(PLATFORM), windows)
 EXTRA_GO_LDFLAGS = "-H windowsgui"
 endif
 
-golib:
-	# TODO port the buildGoLib parts of the gui/build.sh script here (issue #363)
-	# or at least call that function from here --
-	@echo "doing nothing"
+
+PKGFILES = $(shell find pkg -type f -name '*.go')
+lib/%.a: $(PKGFILES)
+	@./gui/build.sh --just-golib
+
+golib: lib/libgoshim.a
 
 build_gui:
-	@XBUILD=no TARGET=${TARGET} VENDOR_PATH=${VENDOR_PATH}/${PROVIDER} gui/build.sh
+	@XBUILD=no TARGET=${TARGET} VENDOR_PATH=${VENDOR_PATH}/${PROVIDER} gui/build.sh --skip-golib
 
 build: golib build_helper build_openvpn build_gui
 
@@ -96,9 +98,6 @@ build_helper:
 build_openvpn:
 	@[ -f $(OPENVPN_BIN) ] && echo "OpenVPN already built at" $(OPENVPN_BIN) || ./branding/thirdparty/openvpn/build_openvpn.sh
 
-debug_installer:
-	@VERSION=${VERSION} ${SCRIPTS}/gen-qtinstaller osx ${INSTALLER}
-
 build_installer: check_qtifw build
 	@mkdir -p ${INST_DATA}
 	@cp -r ${TEMPLATES}/qtinstaller/packages ${INSTALLER}
@@ -106,7 +105,7 @@ build_installer: check_qtifw build
 	@cp -r ${TEMPLATES}/qtinstaller/config ${INSTALLER}
 ifeq (${PLATFORM}, darwin)
 	@mkdir -p ${INST_DATA}/helper
-	@VERSION=${VERSION} ${SCRIPTS}/gen-qtinstaller osx ${INSTALLER}
+	@VERSION=${VERSION} VENDOR_PATH=${VENDOR_PATH} ${SCRIPTS}/gen-qtinstaller osx ${INSTALLER}
 	@cp "${TEMPLATES}/osx/bitmask.pf.conf" ${INST_DATA}helper/bitmask.pf.conf
 	@cp "${TEMPLATES}/osx/client.up.sh" ${INST_DATA}
 	@cp "${TEMPLATES}/osx/client.down.sh" ${INST_DATA}
@@ -265,9 +264,6 @@ packages: package_deb package_snap package_osx package_win
 package_snap_in_docker:
 	@make -C docker package_snap
 
-package_win_in_docker:
-	@make -C docker package_win
-
 package_snap:
 	@unlink snap || true
 	@ln -s build/${PROVIDER}/snap snap
@@ -276,9 +272,6 @@ package_snap:
 package_deb:
 	@make -C build/${PROVIDER} pkg_deb
 
-package_osx:
-	@echo "tbd"
-
 
 #########################################################################
 # icons & locales
diff --git a/gui/build.sh b/gui/build.sh
index deb73a1c..c3d16995 100755
--- a/gui/build.sh
+++ b/gui/build.sh
@@ -20,6 +20,7 @@ VENDOR_PATH=${VENDOR_PATH-providers/riseup}
 
 PLATFORM=$(uname -s)
 LDFLAGS=""
+BUILD_GOLIB="yes"
 
 if [ "$TARGET" == "" ]
 then
@@ -45,7 +46,6 @@ function init {
     mkdir -p lib
 }
 
-# TODO this should be moved to the makefile
 function buildGoLib {
     echo "[+] Using go in" $GO "[`go version`]"
     $GO generate ./pkg/config/version/genver/gen.go
@@ -101,16 +101,44 @@ function renameOutput {
     fi
 }
 
-echo "[+] Building BitmaskVPN"
+function buildDefault {
+    echo "[+] Building BitmaskVPN"
+    lrelease bitmask.pro
+    if [ "$BUILD_GOLIB" == "yes" ]
+    then
+        buildGoLib
+    fi
+    buildQmake
 
-lrelease bitmask.pro
+    make -C $QTBUILD clean
+    make -C $QTBUILD -j4 all
+
+    renameOutput
+    echo "[+] Done."
+}
 
-# FIXME move buildGoLib to the main makefile, to avoid redundant builds if possible
-buildGoLib
-buildQmake
 
-make -C $QTBUILD clean
-make -C $QTBUILD -j4 all
+for i in "$@"
+do
+case $i in
+    --skip-golib)
+    BUILD_GOLIB="no"
+    shift # past argument=value
+    ;;
+    --just-golib)
+    BUILD_GOLIB="just"
+    shift # past argument=value
+    ;;
+    *)
+          # unknown option
+    ;;
+esac
+done
+
+if [ "$BUILD_GOLIB" == "just" ]
+then
+    buildGoLib
+else
+    buildDefault
+fi
 
-renameOutput
-echo "[+] Done."
-- 
GitLab