aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott Murray <scott.murray@konsulko.com>2020-06-09 22:05:27 -0400
committerScott Murray <scott.murray@konsulko.com>2020-06-09 22:07:03 -0400
commitaae3ab7da4a7f580f5840509646d5ce3f6f56a6a (patch)
treeba6b56f3558591812e3e007a2023cb67f3bd3f3b
parent64827f59682374ffc9174b38677f94e1535579d4 (diff)
Update autobuild scripts
Update autobuild scripts with reworked version that fixes building outside of the source tree. As well, the project files have been tweaked to strip the release build binaries and add "-debug" in the name of the debug widget file. Bug-AGL: SPEC-2049, SPEC-3300 Signed-off-by: Scott Murray <scott.murray@konsulko.com> Change-Id: I94403dff83267b8a16d675875c77f2f32dd77c8d
-rwxr-xr-xautobuild/agl/autobuild116
-rw-r--r--autobuild/linux/autobuild124
-rw-r--r--launcher/launcher.pro4
-rw-r--r--package/package.pro7
4 files changed, 139 insertions, 112 deletions
diff --git a/autobuild/agl/autobuild b/autobuild/agl/autobuild
index e659a2f..bbbc13e 100755
--- a/autobuild/agl/autobuild
+++ b/autobuild/agl/autobuild
@@ -1,5 +1,6 @@
#!/usr/bin/make -f
# Copyright (C) 2015 - 2018 "IoT.bzh"
+# Copyright (C) 2020 Konsulko Group
# Author "Romain Forlot" <romain.forlot@iot.bzh>
#
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -15,86 +16,95 @@
# limitations under the License.
THISFILE := $(lastword $(MAKEFILE_LIST))
-BUILD_DIR := $(abspath $(dir $(THISFILE))/../../build)
-BUILD_DIR_TEST := $(abspath $(dir $(THISFILE))/../../build-test)
-BUILD_DIR_DEBUG := $(abspath $(dir $(THISFILE))/../../build-debug)
-BUILD_DIR_COVERAGE := $(abspath $(dir $(THISFILE))/../../build-coverage)
-DEST := ${BUILD_DIR}
-
-.PHONY: all clean distclean configure build package help configure-debug configure-coverage build-debug build-coverage package-test package-debug package-coverage package-debug package-all
-
-all: help
+ROOT_DIR := $(abspath $(dir $(THISFILE))/../..)
+
+# Build directories
+# Note that the debug directory is defined in relation to the release
+# directory (BUILD_DIR), this needs to be kept in mind if over-riding
+# it and building that widget types, the specific widget type variable
+# (e.g. BUILD_DIR_DEBUG) may also need to be specified to yield the
+# desired output hierarchy.
+BUILD_DIR = $(ROOT_DIR)/build
+BUILD_DIR_DEBUG = $(abspath $(BUILD_DIR)/../build-debug)
+
+# Output directory variable for use in pattern rules.
+# This is intended for internal use only, hence the explicit override
+# definition.
+override OUTPUT_DIR = $(BUILD_DIR)
+
+# Final install directory for widgets
+DEST = $(OUTPUT_DIR)
+
+# Default build type for release builds
+BUILD_TYPE = release
+
+.PHONY: all help update install distclean
+.PHONY: clean clean-release clean-debug clean-all
+.PHONY: configure configure-release configure-debug
+.PHONY: build build-release build-debug build-all
+.PHONY: package package-release package-debug package-all
help:
@echo "List of targets available:"
@echo ""
@echo "- all"
+ @echo "- help"
@echo "- clean"
@echo "- distclean"
@echo "- configure"
@echo "- build: compilation, link and prepare files for package into a widget"
@echo "- package: output a widget file '*.wgt'"
- @echo "- install: install in your INSTALL_ROOT directory"
+ @echo "- install: install in $(DEST) directory"
@echo ""
@echo "Usage: ./autobuild/agl/autobuild package DEST=${HOME}/opt"
@echo "Don't use your build dir as DEST as wgt file is generated at this location"
-clean:
- @([ -d ${BUILD_DIR} ] && make -C ${BUILD_DIR} ${CLEAN_ARGS} clean) || echo Nothing to clean
+all: package-all
-distclean:
- @[ -d ${DEST} ] && find ${DEST} -name "*.wgt" -delete
- @([ -d ${BUILD_DIR} ] && make -C ${BUILD_DIR} distclean) || echo Nothing to distclean
+# Target specific variable over-rides so static pattern rules can be
+# used for the various type-specific targets.
-configure:
- @[ -d ${BUILD_DIR} ] || mkdir -p ${BUILD_DIR}
- @[ -f ${BUILD_DIR}/Makefile ] || (cd ${BUILD_DIR} && qmake ${CONFIGURE_ARGS} ..)
+configure-debug build-debug package-debug clean-debug: OUTPUT_DIR = $(BUILD_DIR_DEBUG)
+configure-debug build-debug package-debug: BUILD_TYPE = debug
-configure-test:
- @[ -d ${BUILD_DIR_TEST} ] || mkdir -p ${BUILD_DIR_TEST}
- @[ -f ${BUILD_DIR_TEST}/Makefile ] || (cd ${BUILD_DIR_TEST} && qmake ${CONFIGURE_ARGS} ..)
+clean-release clean-debug:
+ @if [ -d $(OUTPUT_DIR) ]; then \
+ $(MAKE) -C $(OUTPUT_DIR) $(CLEAN_ARGS) clean; \
+ else \
+ echo Nothing to clean; \
+ fi
-configure-debug:
- @[ -d ${BUILD_DIR_DEBUG} ] || mkdir -p ${BUILD_DIR_DEBUG}
- @[ -f ${BUILD_DIR_DEBUG}/Makefile ] || (cd ${BUILD_DIR_DEBUG} && qmake ${CONFIGURE_ARGS} ..)
+clean: clean-release
-configure-coverage:
- @[ -d ${BUILD_DIR_COVERAGE} ] || mkdir -p ${BUILD_DIR_COVERAGE}
- @[ -f ${BUILD_DIR_COVERAGE}/Makefile ] || (cd ${BUILD_DIR_COVERAGE} && qmake ${CONFIGURE_ARGS} ..)
+clean-all: clean-release clean-debug
-build: configure
- @make -C ${BUILD_DIR} ${BUILD_ARGS} all
+distclean: clean-all
-build-test: configure-test
- @make -C ${BUILD_DIR_TEST} ${BUILD_ARGS} all
+configure-release configure-debug:
+ @mkdir -p $(OUTPUT_DIR)
+ @if [ ! -f $(OUTPUT_DIR)/Makefile ]; then \
+ (cd $(OUTPUT_DIR) && qmake CONFIG+=$(BUILD_TYPE) $(CONFIGURE_ARGS) $(ROOT_DIR)); \
+ fi
-build-debug: configure-debug
- @make -C ${BUILD_DIR_DEBUG} ${BUILD_ARGS} all
+configure: configure-release
-build-coverage: configure-coverage
- @make -C ${BUILD_DIR_COVERAGE} ${BUILD_ARGS} all
+build-release build-debug: build-%: configure-%
+ @$(MAKE) -C $(OUTPUT_DIR) $(BUILD_ARGS) all
-install: build
- @make -C ${BUILD_DIR} ${INSTALL_ARGS} install
+build: build-release
-package: build
- @if [ "${DEST}" != "${BUILD_DIR}/$@" ]; then \
- mkdir -p ${DEST} && cp ${BUILD_DIR}/$@/*.wgt ${DEST}; \
- fi
+build-all: build-release build-debug
-package-test: build-test
- @if [ "${DEST}" != "${BUILD_DIR_TEST}" ]; then \
- mkdir -p ${DEST} && cp ${BUILD_DIR_TEST}/package/*.wgt ${DEST}; \
+package-release package-debug: package-%: build-%
+ @cp $(OUTPUT_DIR)/package/*.wgt $(OUTPUT_DIR)/
+ @if [ "$(abspath $(DEST))" != "$(abspath $(OUTPUT_DIR))" ]; then \
+ mkdir -p $(DEST) && cp $(OUTPUT_DIR)/*.wgt $(DEST); \
fi
-package-debug: build-debug
- @if [ "${DEST}" != "${BUILD_DIR_DEBUG}" ]; then \
- mkdir -p ${DEST} && cp ${BUILD_DIR_DEBUG}/package/*.wgt ${DEST}; \
- fi
-package-coverage: build-coverage
- @if [ "${DEST}" != "${BUILD_DIR_COVERAGE}" ]; then \
- mkdir -p ${DEST} && cp ${BUILD_DIR_COVERAGE}/package/*.wgt ${DEST}; \
- fi
+package: package-release
-package-all: package package-test package-coverage package-debug
+package-all: package-release package-debug
+
+install: build
+ @$(MAKE) -C $(BUILD_DIR) $(INSTALL_ARGS) install
diff --git a/autobuild/linux/autobuild b/autobuild/linux/autobuild
index 04a8689..bbbc13e 100644
--- a/autobuild/linux/autobuild
+++ b/autobuild/linux/autobuild
@@ -1,12 +1,13 @@
#!/usr/bin/make -f
# Copyright (C) 2015 - 2018 "IoT.bzh"
+# Copyright (C) 2020 Konsulko Group
# Author "Romain Forlot" <romain.forlot@iot.bzh>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
-# http://www.apache.org/licenses/LICENSE-2.0
+# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
@@ -15,88 +16,95 @@
# limitations under the License.
THISFILE := $(lastword $(MAKEFILE_LIST))
-BUILD_DIR := $(abspath $(dir $(THISFILE))/../../build)
-BUILD_DIR_TEST := $(abspath $(dir $(THISFILE))/../../build-test)
-BUILD_DIR_DEBUG := $(abspath $(dir $(THISFILE))/../../build-debug)
-BUILD_DIR_COVERAGE := $(abspath $(dir $(THISFILE))/../../build-coverage)
-DEST := ${BUILD_DIR}
-
-.PHONY: all clean distclean configure build package help configure-debug configure-coverage build-debug build-coverage package-test package-debug package-coverage package-debug package-all
-
-all: help
+ROOT_DIR := $(abspath $(dir $(THISFILE))/../..)
+
+# Build directories
+# Note that the debug directory is defined in relation to the release
+# directory (BUILD_DIR), this needs to be kept in mind if over-riding
+# it and building that widget types, the specific widget type variable
+# (e.g. BUILD_DIR_DEBUG) may also need to be specified to yield the
+# desired output hierarchy.
+BUILD_DIR = $(ROOT_DIR)/build
+BUILD_DIR_DEBUG = $(abspath $(BUILD_DIR)/../build-debug)
+
+# Output directory variable for use in pattern rules.
+# This is intended for internal use only, hence the explicit override
+# definition.
+override OUTPUT_DIR = $(BUILD_DIR)
+
+# Final install directory for widgets
+DEST = $(OUTPUT_DIR)
+
+# Default build type for release builds
+BUILD_TYPE = release
+
+.PHONY: all help update install distclean
+.PHONY: clean clean-release clean-debug clean-all
+.PHONY: configure configure-release configure-debug
+.PHONY: build build-release build-debug build-all
+.PHONY: package package-release package-debug package-all
help:
@echo "List of targets available:"
@echo ""
@echo "- all"
+ @echo "- help"
@echo "- clean"
@echo "- distclean"
@echo "- configure"
- @echo "- build: compilation, link and prepare files for package into a widget"
+ @echo "- build: compilation, link and prepare files for package into a widget"
@echo "- package: output a widget file '*.wgt'"
- @echo "- install: install in your defined DEST directory"
+ @echo "- install: install in $(DEST) directory"
@echo ""
@echo "Usage: ./autobuild/agl/autobuild package DEST=${HOME}/opt"
- @echo "Don't use your build dir as DEST as wgt file is generated at this location"
+ @echo "Don't use your build dir as DEST as wgt file is generated at this location"
- clean:
- @([ -d ${BUILD_DIR} ] && make -C ${BUILD_DIR} ${CLEAN_ARGS} clean) || echo Nothing to clean
+all: package-all
-distclean:
- @[ -d ${DEST} ] && find ${DEST} -name "*.wgt" -delete
- @([ -d ${BUILD_DIR} ] && make -C ${BUILD_DIR} distclean) || echo Nothing to distclean
+# Target specific variable over-rides so static pattern rules can be
+# used for the various type-specific targets.
-configure:
- @[ -d ${BUILD_DIR} ] || mkdir -p ${BUILD_DIR}
- @[ -f ${BUILD_DIR}/Makefile ] || (cd ${BUILD_DIR} && qmake ${CONFIGURE_ARGS} ..)
+configure-debug build-debug package-debug clean-debug: OUTPUT_DIR = $(BUILD_DIR_DEBUG)
+configure-debug build-debug package-debug: BUILD_TYPE = debug
-configure-test:
- @[ -d ${BUILD_DIR_TEST} ] || mkdir -p ${BUILD_DIR_TEST}
- @[ -f ${BUILD_DIR_TEST}/Makefile ] || (cd ${BUILD_DIR_TEST} && qmake ${CONFIGURE_ARGS} ..)
+clean-release clean-debug:
+ @if [ -d $(OUTPUT_DIR) ]; then \
+ $(MAKE) -C $(OUTPUT_DIR) $(CLEAN_ARGS) clean; \
+ else \
+ echo Nothing to clean; \
+ fi
-configure-debug:
- @[ -d ${BUILD_DIR_DEBUG} ] || mkdir -p ${BUILD_DIR_DEBUG}
- @[ -f ${BUILD_DIR_DEBUG}/Makefile ] || (cd ${BUILD_DIR_DEBUG} && qmake ${CONFIGURE_ARGS} ..)
+clean: clean-release
-configure-coverage:
- @[ -d ${BUILD_DIR_COVERAGE} ] || mkdir -p ${BUILD_DIR_COVERAGE}
- @[ -f ${BUILD_DIR_COVERAGE}/Makefile ] || (cd ${BUILD_DIR_COVERAGE} && qmake ${CONFIGURE_ARGS} ..)
+clean-all: clean-release clean-debug
-build: configure
- @make -C ${BUILD_DIR} ${BUILD_ARGS} all
+distclean: clean-all
-build-test: configure-test
- @make -C ${BUILD_DIR_TEST} ${BUILD_ARGS} all
+configure-release configure-debug:
+ @mkdir -p $(OUTPUT_DIR)
+ @if [ ! -f $(OUTPUT_DIR)/Makefile ]; then \
+ (cd $(OUTPUT_DIR) && qmake CONFIG+=$(BUILD_TYPE) $(CONFIGURE_ARGS) $(ROOT_DIR)); \
+ fi
-build-debug: configure-debug
- @make -C ${BUILD_DIR_DEBUG} ${BUILD_ARGS} all
+configure: configure-release
-build-coverage: configure-coverage
- @make -C ${BUILD_DIR_COVERAGE} ${BUILD_ARGS} all
+build-release build-debug: build-%: configure-%
+ @$(MAKE) -C $(OUTPUT_DIR) $(BUILD_ARGS) all
-install: build
- @if [ "${DEST}" != "${BUILD_DIR}" ]; then \
- mkdir -p ${DEST} && cp -rf ${BUILD_DIR}/package/root/* ${DEST}; \
- fi
+build: build-release
-package: build
- @if [ "${DEST}" != "${BUILD_DIR}/$@" ]; then \
- mkdir -p ${DEST} && cp ${BUILD_DIR}/$@/*.wgt ${DEST}; \
- fi
+build-all: build-release build-debug
-package-test: build-test
- @if [ "${DEST}" != "${BUILD_DIR_TEST}/$@" ]; then \
- mkdir -p ${DEST} && cp ${BUILD_DIR_TEST}/package/*.wgt ${DEST}; \
+package-release package-debug: package-%: build-%
+ @cp $(OUTPUT_DIR)/package/*.wgt $(OUTPUT_DIR)/
+ @if [ "$(abspath $(DEST))" != "$(abspath $(OUTPUT_DIR))" ]; then \
+ mkdir -p $(DEST) && cp $(OUTPUT_DIR)/*.wgt $(DEST); \
fi
-package-debug: build-debug
- @if [ "${DEST}" != "${BUILD_DIR_DEBUG}/package" ]; then \
- mkdir -p ${DEST} && cp ${BUILD_DIR_DEBUG}/package/*.wgt ${DEST}; \
- fi
-package-coverage: build-coverage
- @if [ "${DEST}" != "${BUILD_DIR_COVERAGE}/package" ]; then \
- mkdir -p ${DEST} && cp ${BUILD_DIR_COVERAGE}/package/*.wgt ${DEST}; \
- fi
+package: package-release
-package-all: package package-test package-coverage package-debug
+package-all: package-release package-debug
+
+install: build
+ @$(MAKE) -C $(BUILD_DIR) $(INSTALL_ARGS) install
diff --git a/launcher/launcher.pro b/launcher/launcher.pro
index 63c6704..e39c64d 100644
--- a/launcher/launcher.pro
+++ b/launcher/launcher.pro
@@ -20,6 +20,10 @@ CONFIG += c++11 link_pkgconfig
DESTDIR = $${OUT_PWD}/../package/root/bin
PKGCONFIG += qlibwindowmanager libhomescreen
+CONFIG(release, debug|release) {
+ QMAKE_POST_LINK = $(STRIP) --strip-unneeded $(TARGET)
+}
+
SOURCES += \
src/main.cpp \
src/applicationmodel.cpp \
diff --git a/package/package.pro b/package/package.pro
index 0045478..a9b865b 100644
--- a/package/package.pro
+++ b/package/package.pro
@@ -12,8 +12,13 @@ copy_config.commands = $(COPY_FILE) \"$$replace(copy_config.depends, /, $$QMAKE_
QMAKE_EXTRA_TARGETS += copy_config
PRE_TARGETDEPS += $$copy_config.target
+WGT_TYPE =
+CONFIG(debug, debug|release) {
+ WGT_TYPE = -debug
+}
+
wgt.target = package
-wgt.commands = wgtpkg-pack -f -o launcher.wgt root
+wgt.commands = wgtpkg-pack -f -o launcher$${WGT_TYPE}.wgt root
QMAKE_EXTRA_TARGETS += wgt