mk: allow to specify O= in install rule
authorOlivier Matz <olivier.matz@6wind.com>
Wed, 30 Jan 2013 15:29:43 +0000 (16:29 +0100)
committerDavid Marchand <david.marchand@6wind.com>
Wed, 26 Feb 2014 10:01:13 +0000 (11:01 +0100)
This variable $(O) can be used to specify a build directory
when doing an "install" procedure. The default is ".", which
means that targets will be built in the source dpdk.

This option is useful to compile outside of the source tree that may be
read-only.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
doc/build-sdk-quick.txt
mk/rte.sdkinstall.mk

index 3780dec..51784e8 100644 (file)
@@ -5,7 +5,7 @@ Build commands
        all         same as build (default rule)
        build       build in a configured directory
        clean       remove files but keep configuration
-       install     build many targets (wildcard allowed) in fixed directories
+       install     build many targets (wildcard allowed)
        uninstall   remove all installed targets
 Build variables
        CROSS            toolchain prefix
@@ -15,7 +15,7 @@ Build variables
        RTE_KERNELDIR    linux headers path
        V   verbose
        D   debug dependencies
-       O   output directory (default: build/)   - cannot be used with install
+       O   output directory (default: build/ - install default: ./)
        T   target template (install default: *) - used with config or install
                        format: <arch-machine-execenv-toolchain>
                        templates in config/defconfig_*
index bbcc5f2..00cb616 100644 (file)
 #   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 #   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+# Build directory is given with O=
 ifdef O
-ifeq ("$(origin O)", "command line")
-$(error "Cannot use O= with install target")
-endif
+BUILD_DIR=$(O)
+else
+BUILD_DIR=.
 endif
 
 # Targets to install can be specified in command line. It can be a
@@ -55,8 +56,8 @@ install: $(INSTALL_TARGETS)
 
 %_install:
        @echo ================== Installing $*
-       $(Q)$(MAKE) config T=$* O=$*
-       $(Q)$(MAKE) all O=$*
+       $(Q)$(MAKE) config T=$* O=$(BUILD_DIR)/$*
+       $(Q)$(MAKE) all O=$(BUILD_DIR)/$*
 
 #
 # uninstall: remove all built sdk
@@ -69,6 +70,4 @@ uninstall: $(UNINSTALL_TARGETS)
 
 %_uninstall:
        @echo ================== Uninstalling $*
-       $(Q)rm -rf $*
-
-
+       $(Q)rm -rf $(BUILD_DIR)/$*