# Copyright (c) 2020 Intel and/or its affiliates. # 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 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. define h1 @echo "--- $(1)" endef define package $1_tarball_strip_dirs ?= 0 $1_src_dir ?= $(B)/src-$1 $1_patch_dir ?= $(CURDIR)/patches/$1_$($1_version) $1_build_dir ?= $(B)/build-$1 $1_install_dir ?= $(I) $1_pkg_deb_name ?= $1 $1_pkg_deb_dir ?= $(I)/deb-$1 $1_deb_inst_dir ?= $(I) $1_config_log ?= $(B)/$1.config.log $1_build_log ?= $(B)/$1.build.log $1_install_log ?= $(B)/$1.install.log $1_pkg_deb_log ?= $(B)/$1.pkgdeb.log $1_pkg_rpm_log ?= $(B)/$1.pkgrpm.log ############################################################################## # Extract ############################################################################## ifeq ($$(call $1_extract_cmds),) define $1_extract_cmds $$(call h1,"extracting $1 $($1_version)") @mkdir -p $$($1_src_dir) tar \ --directory $$($1_src_dir) \ --extract \ --strip-components=$$($1_tarball_strip_dirs) \ --file downloads/$($1_tarball) endef endif $(B)/.$1.extract.ok: $$(call h1,"extracting $1 $($1_version)") $$(call $1_extract_cmds) @touch $$@ .PHONY: $1-extract $1-extract: $(B)/.$1.extract.ok ############################################################################## # Patch ############################################################################## ifeq ($$(call $1_patch_cmds),) define $1_patch_cmds #ifneq ($$(wildcard $$($1_patch_dir)/*.patch),) @for f in $$($1_patch_dir)/*.patch ; do \ echo "Applying patch: $$$$(basename $$$$f)" ; \ patch -p1 -d $$($1_src_dir) < $$$$f ; \ done #endif @true endef endif $(B)/.$1.patch.ok: $(B)/.$1.extract.ok $$(call h1,"patching $1 $$($1_patch_dir)") $$(call $1_patch_cmds) @touch $$@ .PHONY: $1-patch $1-patch: $(B)/.$1.patch.ok ############################################################################## # Config ############################################################################## ifeq ($$(call $1_config_cmds),) define $1_config_cmds @cd $$($1_build_dir) && \ CFLAGS="$$($1_cflags)" \ $$($1_src_dir)/configure \ --prefix=$$($1_install_dir) \ $$($1_configure_args) > $$($1_config_log) endef endif $(B)/.$1.config.ok: $(B)/.$1.patch.ok $(addsuffix -install,$($1_depends)) $$(call h1,"configuring $1 - log: $$($1_config_log)") @mkdir -p $$($1_build_dir) $$(call $1_config_cmds) @touch $$@ .PHONY: $1-config $1-config: $(B)/.$1.config.ok ############################################################################## # Build ############################################################################## ifeq ($$(call $1_build_cmds),) define $1_build_cmds @$(MAKE) $(MAKE_ARGS) -C $$($1_build_dir) > $$($1_build_log) endef endif $(B)/.$1.build.ok: $(B)/.$1.config.ok $$(call h1,"building $1 $($1_version) - log: $$($1_build_log)") $$(call $1_build_cmds) @touch $$@ .PHONY: $1-build $1-build: $(B)/.$1.build.ok ############################################################################## # Install ############################################################################## ifeq ($$(call $1_install_cmds),) define $1_install_cmds @$(MAKE) $(MAKE_ARGS) -C $$($1_build_dir) install > $$($1_install_log) endef endif $(B)/.$1.install.ok: $(B)/.$1.build.ok $$(call h1,"installing $1 $($1_version) - log: $$($1_install_log)") $$(call $1_install_cmds) @touch $$@ .PHONY: $1-install $1-install: $(B)/.$1.install.ok ifeq ($$(call $1_pkg_deb_cmds),) define $1_pkg_deb_cmds @fpm -f -s dir \ -t deb \ -n $$($1_pkg_deb_name) \ -v $$($1_version) \ -C $$($1_install_dir) \ -p $$($1_pkg_deb_dir) \ --prefix $$($1_deb_inst_dir) \ --license $(LICENSE) \ --iteration $(LINUX_ITER) \ --vendor Intel \ --description $$($1_desc) \ --deb-no-default-config-files @true endef endif ifeq ($$(call $1_pkg_deb_cp_cmds),) define $1_pkg_deb_cp_cmds @true endef endif $(B)/.$1.pkg-deb.ok: $(B)/.$1.install.ok $$(call h1,"package $1 $($1_version) - log: $$($1_pkg_deb_log)") @mkdir -p $$($1_pkg_deb_dir) $$(call $1_pkg_deb_cmds) $$(call $1_pkg_deb_cp_cmds) @touch $$@ .PHONY: $1-deb $1-deb: $(B)/.$1.pkg-deb.ok ALL_TARGETS += $1-deb endef