From: Thomas Petazzoni Date: Tue, 17 Apr 2012 14:45:18 +0000 (+0200) Subject: Rename Makefile.cmake.in to pkg-cmaketargets.mk X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e834da05b0deb0bbd6804afe2aa0ae28a136204f;p=buildroot.git Rename Makefile.cmake.in to pkg-cmaketargets.mk Signed-off-by: Thomas Petazzoni Signed-off-by: Peter Korsgaard --- diff --git a/package/Makefile.cmake.in b/package/Makefile.cmake.in deleted file mode 100644 index 1cd65e46f8..0000000000 --- a/package/Makefile.cmake.in +++ /dev/null @@ -1,199 +0,0 @@ -################################################################################ -# CMake package infrastructure -# -# This file implements an infrastructure that eases development of -# package .mk files for CMake packages. It should be used for all -# packages that use CMake as their build system. -# -# See the Buildroot documentation for details on the usage of this -# infrastructure -# -# In terms of implementation, this CMake infrastructure requires -# the .mk file to only specify metadata informations about the -# package: name, version, download URL, etc. -# -# We still allow the package .mk file to override what the different -# steps are doing, if needed. For example, if _BUILD_CMDS is -# already defined, it is used as the list of commands to perform to -# build the package, instead of the default CMake behaviour. The -# package can also define some post operation hooks. -# -################################################################################ - -################################################################################ -# CMAKETARGETS_INNER -- defines how the configuration, compilation and -# installation of a CMake package should be done, implements a few hooks to -# tune the build process and calls the generic package infrastructure to -# generate the necessary make targets -# -# argument 1 is the lowercase package name -# argument 2 is the uppercase package name, including an HOST_ prefix -# for host packages -# argument 3 is the uppercase package name, without the HOST_ prefix -# for host packages -# argument 4 is the package directory prefix -# argument 5 is the type (target or host) -################################################################################ - -define CMAKETARGETS_INNER - -# define package-specific variables to default values -ifndef $(2)_SUBDIR - ifdef $(3)_SUBDIR - $(2)_SUBDIR = $($(3)_SUBDIR) - else - $(2)_SUBDIR ?= - endif -endif - -$(2)_CONF_ENV ?= -$(2)_CONF_OPT ?= -$(2)_MAKE ?= $(MAKE) -$(2)_MAKE_ENV ?= -$(2)_MAKE_OPT ?= -$(2)_INSTALL_HOST_OPT ?= install -$(2)_INSTALL_STAGING_OPT ?= DESTDIR=$$(STAGING_DIR) install -$(2)_INSTALL_TARGET_OPT ?= DESTDIR=$$(TARGET_DIR) install -$(2)_CLEAN_OPT ?= clean - -$(2)_SRCDIR = $$($(2)_DIR)/$($(2)_SUBDIR) -$(2)_BUILDDIR = $$($(2)_SRCDIR) - -# -# Configure step. Only define it if not already defined by the package -# .mk file. And take care of the differences between host and target -# packages. -# -ifndef $(2)_CONFIGURE_CMDS -ifeq ($(5),target) - -# Configure package for target -define $(2)_CONFIGURE_CMDS - (cd $$($$(PKG)_BUILDDIR) && \ - rm -f CMakeCache.txt && \ - $$($$(PKG)_CONF_ENV) $(HOST_DIR)/usr/bin/cmake $$($$(PKG)_SRCDIR) \ - -DCMAKE_TOOLCHAIN_FILE="$$(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake" \ - -DCMAKE_INSTALL_PREFIX="/usr" \ - $$($$(PKG)_CONF_OPT) \ - ) -endef -else - -# Configure package for host -define $(2)_CONFIGURE_CMDS - (cd $$($$(PKG)_BUILDDIR) && \ - rm -f CMakeCache.txt && \ - $(HOST_DIR)/usr/bin/cmake $$($$(PKG)_SRCDIR) \ - -DCMAKE_INSTALL_SO_NO_EXE=0 \ - -DCMAKE_FIND_ROOT_PATH="$$(HOST_DIR)" \ - -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM="BOTH" \ - -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY="BOTH" \ - -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE="BOTH" \ - -DCMAKE_INSTALL_PREFIX="$$(HOST_DIR)/usr" \ - $$($$(PKG)_CONF_OPT) \ - ) -endef -endif -endif - -# This must be repeated from GENTARGETS_INNER, otherwise we only get -# host-cmake in _DEPENDENCIES because of the following line -$(2)_DEPENDENCIES ?= $(patsubst host-host-%,host-%,$(addprefix host-,$($(3)_DEPENDENCIES))) - -$(2)_DEPENDENCIES += host-cmake - -# -# Build step. Only define it if not already defined by the package .mk -# file. -# -ifndef $(2)_BUILD_CMDS -ifeq ($(5),target) -define $(2)_BUILD_CMDS - $(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPT) -C $$($$(PKG)_BUILDDIR) -endef -else -define $(2)_BUILD_CMDS - $(HOST_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPT) -C $$($$(PKG)_BUILDDIR) -endef -endif -endif - -# -# Host installation step. Only define it if not already defined by the -# package .mk file. -# -ifndef $(2)_INSTALL_CMDS -define $(2)_INSTALL_CMDS - $(HOST_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPT) $$($$(PKG)_INSTALL_HOST_OPT) -C $$($$(PKG)_BUILDDIR) -endef -endif - -# -# Staging installation step. Only define it if not already defined by -# the package .mk file. -# -ifndef $(2)_INSTALL_STAGING_CMDS -define $(2)_INSTALL_STAGING_CMDS - $(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPT) $$($$(PKG)_INSTALL_STAGING_OPT) -C $$($$(PKG)_BUILDDIR) -endef -endif - -# -# Target installation step. Only define it if not already defined by -# the package .mk file. -# -ifndef $(2)_INSTALL_TARGET_CMDS -define $(2)_INSTALL_TARGET_CMDS - $(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPT) $$($$(PKG)_INSTALL_TARGET_OPT) -C $$($$(PKG)_BUILDDIR) -endef -endif - -# -# Clean step. Only define it if not already defined by -# the package .mk file. -# -ifndef $(2)_CLEAN_CMDS -define $(2)_CLEAN_CMDS - -$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPT) $$($$(PKG)_CLEAN_OPT) -C $$($$(PKG)_BUILDDIR) -endef -endif - -# -# Uninstall from staging step. Only define it if not already defined by -# the package .mk file. -# -ifndef $(2)_UNINSTALL_STAGING_CMDS -define $(2)_UNINSTALL_STAGING_CMDS - (cd $$($$(PKG)_BUILDDIR) && sed "s:\(.*\):$$(STAGING_DIR)\1:" install_manifest.txt | xargs rm -f) -endef -endif - -# -# Uninstall from target step. Only define it if not already defined -# by the package .mk file. -# -ifndef $(2)_UNINSTALL_TARGET_CMDS -define $(2)_UNINSTALL_TARGET_CMDS - (cd $$($$(PKG)_BUILDDIR) && sed "s:\(.*\):$$(TARGET_DIR)\1:" install_manifest.txt | xargs rm -f) -endef -endif - -# Call the generic package infrastructure to generate the necessary -# make targets -$(call GENTARGETS_INNER,$(1),$(2),$(3),$(4),$(5)) - -endef - -################################################################################ -# CMAKETARGETS -- the target generator macro for CMake packages -# -# Argument 1 is "target" or "host" [optional, default: "target"] -################################################################################ - -define CMAKETARGETS -ifeq ($(1),host) -$(call CMAKETARGETS_INNER,$(1)-$(call pkgname),$(call UPPERCASE,$(1)-$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),host) -else -$(call CMAKETARGETS_INNER,$(call pkgname),$(call UPPERCASE,$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),target) -endif -endef diff --git a/package/Makefile.in b/package/Makefile.in index 20fac9af70..ab5ea48422 100644 --- a/package/Makefile.in +++ b/package/Makefile.in @@ -300,5 +300,5 @@ SHARED_STATIC_LIBS_OPTS=--enable-static --enable-shared endif include package/pkg-autotargets.mk -include package/Makefile.cmake.in +include package/pkg-cmaketargets.mk include package/Makefile.package.in diff --git a/package/pkg-cmaketargets.mk b/package/pkg-cmaketargets.mk new file mode 100644 index 0000000000..1cd65e46f8 --- /dev/null +++ b/package/pkg-cmaketargets.mk @@ -0,0 +1,199 @@ +################################################################################ +# CMake package infrastructure +# +# This file implements an infrastructure that eases development of +# package .mk files for CMake packages. It should be used for all +# packages that use CMake as their build system. +# +# See the Buildroot documentation for details on the usage of this +# infrastructure +# +# In terms of implementation, this CMake infrastructure requires +# the .mk file to only specify metadata informations about the +# package: name, version, download URL, etc. +# +# We still allow the package .mk file to override what the different +# steps are doing, if needed. For example, if _BUILD_CMDS is +# already defined, it is used as the list of commands to perform to +# build the package, instead of the default CMake behaviour. The +# package can also define some post operation hooks. +# +################################################################################ + +################################################################################ +# CMAKETARGETS_INNER -- defines how the configuration, compilation and +# installation of a CMake package should be done, implements a few hooks to +# tune the build process and calls the generic package infrastructure to +# generate the necessary make targets +# +# argument 1 is the lowercase package name +# argument 2 is the uppercase package name, including an HOST_ prefix +# for host packages +# argument 3 is the uppercase package name, without the HOST_ prefix +# for host packages +# argument 4 is the package directory prefix +# argument 5 is the type (target or host) +################################################################################ + +define CMAKETARGETS_INNER + +# define package-specific variables to default values +ifndef $(2)_SUBDIR + ifdef $(3)_SUBDIR + $(2)_SUBDIR = $($(3)_SUBDIR) + else + $(2)_SUBDIR ?= + endif +endif + +$(2)_CONF_ENV ?= +$(2)_CONF_OPT ?= +$(2)_MAKE ?= $(MAKE) +$(2)_MAKE_ENV ?= +$(2)_MAKE_OPT ?= +$(2)_INSTALL_HOST_OPT ?= install +$(2)_INSTALL_STAGING_OPT ?= DESTDIR=$$(STAGING_DIR) install +$(2)_INSTALL_TARGET_OPT ?= DESTDIR=$$(TARGET_DIR) install +$(2)_CLEAN_OPT ?= clean + +$(2)_SRCDIR = $$($(2)_DIR)/$($(2)_SUBDIR) +$(2)_BUILDDIR = $$($(2)_SRCDIR) + +# +# Configure step. Only define it if not already defined by the package +# .mk file. And take care of the differences between host and target +# packages. +# +ifndef $(2)_CONFIGURE_CMDS +ifeq ($(5),target) + +# Configure package for target +define $(2)_CONFIGURE_CMDS + (cd $$($$(PKG)_BUILDDIR) && \ + rm -f CMakeCache.txt && \ + $$($$(PKG)_CONF_ENV) $(HOST_DIR)/usr/bin/cmake $$($$(PKG)_SRCDIR) \ + -DCMAKE_TOOLCHAIN_FILE="$$(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake" \ + -DCMAKE_INSTALL_PREFIX="/usr" \ + $$($$(PKG)_CONF_OPT) \ + ) +endef +else + +# Configure package for host +define $(2)_CONFIGURE_CMDS + (cd $$($$(PKG)_BUILDDIR) && \ + rm -f CMakeCache.txt && \ + $(HOST_DIR)/usr/bin/cmake $$($$(PKG)_SRCDIR) \ + -DCMAKE_INSTALL_SO_NO_EXE=0 \ + -DCMAKE_FIND_ROOT_PATH="$$(HOST_DIR)" \ + -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM="BOTH" \ + -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY="BOTH" \ + -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE="BOTH" \ + -DCMAKE_INSTALL_PREFIX="$$(HOST_DIR)/usr" \ + $$($$(PKG)_CONF_OPT) \ + ) +endef +endif +endif + +# This must be repeated from GENTARGETS_INNER, otherwise we only get +# host-cmake in _DEPENDENCIES because of the following line +$(2)_DEPENDENCIES ?= $(patsubst host-host-%,host-%,$(addprefix host-,$($(3)_DEPENDENCIES))) + +$(2)_DEPENDENCIES += host-cmake + +# +# Build step. Only define it if not already defined by the package .mk +# file. +# +ifndef $(2)_BUILD_CMDS +ifeq ($(5),target) +define $(2)_BUILD_CMDS + $(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPT) -C $$($$(PKG)_BUILDDIR) +endef +else +define $(2)_BUILD_CMDS + $(HOST_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPT) -C $$($$(PKG)_BUILDDIR) +endef +endif +endif + +# +# Host installation step. Only define it if not already defined by the +# package .mk file. +# +ifndef $(2)_INSTALL_CMDS +define $(2)_INSTALL_CMDS + $(HOST_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPT) $$($$(PKG)_INSTALL_HOST_OPT) -C $$($$(PKG)_BUILDDIR) +endef +endif + +# +# Staging installation step. Only define it if not already defined by +# the package .mk file. +# +ifndef $(2)_INSTALL_STAGING_CMDS +define $(2)_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPT) $$($$(PKG)_INSTALL_STAGING_OPT) -C $$($$(PKG)_BUILDDIR) +endef +endif + +# +# Target installation step. Only define it if not already defined by +# the package .mk file. +# +ifndef $(2)_INSTALL_TARGET_CMDS +define $(2)_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPT) $$($$(PKG)_INSTALL_TARGET_OPT) -C $$($$(PKG)_BUILDDIR) +endef +endif + +# +# Clean step. Only define it if not already defined by +# the package .mk file. +# +ifndef $(2)_CLEAN_CMDS +define $(2)_CLEAN_CMDS + -$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_MAKE_OPT) $$($$(PKG)_CLEAN_OPT) -C $$($$(PKG)_BUILDDIR) +endef +endif + +# +# Uninstall from staging step. Only define it if not already defined by +# the package .mk file. +# +ifndef $(2)_UNINSTALL_STAGING_CMDS +define $(2)_UNINSTALL_STAGING_CMDS + (cd $$($$(PKG)_BUILDDIR) && sed "s:\(.*\):$$(STAGING_DIR)\1:" install_manifest.txt | xargs rm -f) +endef +endif + +# +# Uninstall from target step. Only define it if not already defined +# by the package .mk file. +# +ifndef $(2)_UNINSTALL_TARGET_CMDS +define $(2)_UNINSTALL_TARGET_CMDS + (cd $$($$(PKG)_BUILDDIR) && sed "s:\(.*\):$$(TARGET_DIR)\1:" install_manifest.txt | xargs rm -f) +endef +endif + +# Call the generic package infrastructure to generate the necessary +# make targets +$(call GENTARGETS_INNER,$(1),$(2),$(3),$(4),$(5)) + +endef + +################################################################################ +# CMAKETARGETS -- the target generator macro for CMake packages +# +# Argument 1 is "target" or "host" [optional, default: "target"] +################################################################################ + +define CMAKETARGETS +ifeq ($(1),host) +$(call CMAKETARGETS_INNER,$(1)-$(call pkgname),$(call UPPERCASE,$(1)-$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),host) +else +$(call CMAKETARGETS_INNER,$(call pkgname),$(call UPPERCASE,$(call pkgname)),$(call UPPERCASE,$(call pkgname)),$(call pkgparentdir),target) +endif +endef