github.com/westcoastroms/westcoastroms-build@v0.0.0-20190928114312-2350e5a73030/build/make/tools/makeparallel/Makefile (about)

     1  # Copyright 2015 Google Inc. All rights reserved
     2  #
     3  # Licensed under the Apache License, Version 2.0 (the "License");
     4  # you may not use this file except in compliance with the License.
     5  # You may obtain a copy of the License at
     6  #
     7  #      http://www.apache.org/licenses/LICENSE-2.0
     8  #
     9  # Unless required by applicable law or agreed to in writing, software
    10  # distributed under the License is distributed on an "AS IS" BASIS,
    11  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  # See the License for the specific language governing permissions and
    13  # limitations under the License.
    14  
    15  # Find source file location from path to this Makefile
    16  MAKEPARALLEL_SRC_PATH := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST))))
    17  ifndef MAKEPARALLEL_SRC_PATH
    18    MAKEPARALLEL_SRC_PATH := .
    19  endif
    20  
    21  # Set defaults if they weren't set by the including Makefile
    22  MAKEPARALLEL_CXX ?= $(CXX)
    23  MAKEPARALLEL_LD ?= $(CXX)
    24  MAKEPARALLEL_INTERMEDIATES_PATH ?= .
    25  MAKEPARALLEL_BIN_PATH ?= .
    26  
    27  MAKEPARALLEL_CXX_SRCS := \
    28  	makeparallel.cpp
    29  
    30  MAKEPARALLEL_CXXFLAGS := -Wall -Werror -MMD -MP
    31  
    32  MAKEPARALLEL_CXX_SRCS := $(addprefix $(MAKEPARALLEL_SRC_PATH)/,\
    33  	$(MAKEPARALLEL_CXX_SRCS))
    34  
    35  MAKEPARALLEL_CXX_OBJS := $(patsubst $(MAKEPARALLEL_SRC_PATH)/%.cpp,$(MAKEPARALLEL_INTERMEDIATES_PATH)/%.o,$(MAKEPARALLEL_CXX_SRCS))
    36  
    37  MAKEPARALLEL := $(MAKEPARALLEL_BIN_PATH)/makeparallel
    38  
    39  ifeq ($(shell uname),Linux)
    40  MAKEPARALLEL_LIBS := -lrt -lpthread
    41  endif
    42  
    43  # Rule to build makeparallel into MAKEPARALLEL_BIN_PATH
    44  $(MAKEPARALLEL): $(MAKEPARALLEL_CXX_OBJS)
    45  	@mkdir -p $(dir $@)
    46  	$(MAKEPARALLEL_LD) -std=c++11 $(MAKEPARALLEL_CXXFLAGS) -o $@ $^ $(MAKEPARALLEL_LIBS)
    47  
    48  # Rule to build source files into object files in MAKEPARALLEL_INTERMEDIATES_PATH
    49  $(MAKEPARALLEL_CXX_OBJS): $(MAKEPARALLEL_INTERMEDIATES_PATH)/%.o: $(MAKEPARALLEL_SRC_PATH)/%.cpp
    50  	@mkdir -p $(dir $@)
    51  	$(MAKEPARALLEL_CXX) -c -std=c++11 $(MAKEPARALLEL_CXXFLAGS) -o $@ $<
    52  
    53  makeparallel_clean:
    54  	rm -rf $(MAKEPARALLEL)
    55  	rm -rf $(MAKEPARALLEL_INTERMEDIATES_PATH)/*.o
    56  	rm -rf $(MAKEPARALLEL_INTERMEDIATES_PATH)/*.d
    57  
    58  .PHONY: makeparallel_clean
    59  
    60  -include $(MAKEPARALLEL_INTERMEDIATES_PATH)/*.d
    61  
    62  .PHONY: makeparallel_test
    63  MAKEPARALLEL_TEST := MAKEFLAGS= MAKELEVEL= MAKEPARALLEL=$(MAKEPARALLEL) $(MAKE) -f Makefile.test test
    64  MAKEPARALLEL_NINJA_TEST := MAKEFLAGS= MAKELEVEL= MAKEPARALLEL="$(MAKEPARALLEL) --ninja" $(MAKE) -f Makefile.test test
    65  makeparallel_test: $(MAKEPARALLEL)
    66  	@EXPECTED="-j1234" $(MAKEPARALLEL_TEST) -j1234
    67  	@EXPECTED="-j123"  $(MAKEPARALLEL_TEST) -j123
    68  	@EXPECTED=""       $(MAKEPARALLEL_TEST) -j1
    69  	@EXPECTED="-j$$(($$(nproc) + 2))"   $(MAKEPARALLEL_TEST) -j
    70  	@EXPECTED=""       $(MAKEPARALLEL_TEST)
    71  
    72  	@EXPECTED="-j1234" $(MAKEPARALLEL_NINJA_TEST) -j1234
    73  	@EXPECTED="-j123"  $(MAKEPARALLEL_NINJA_TEST) -j123
    74  	@EXPECTED="-j1"    $(MAKEPARALLEL_NINJA_TEST) -j1
    75  	@EXPECTED="-j1"    $(MAKEPARALLEL_NINJA_TEST)
    76  	@EXPECTED=""       $(MAKEPARALLEL_NINJA_TEST) -j
    77  	@EXPECTED=""       $(MAKEPARALLEL_NINJA_TEST) -j -l
    78  
    79  	@EXPECTED="-j1234" $(MAKEPARALLEL_TEST) --no-print-directory -j1234
    80  	@EXPECTED="-j1234" $(MAKEPARALLEL_TEST) --no-print-directory -k -j1234
    81  	@EXPECTED="-j1234" $(MAKEPARALLEL_TEST) -k -j1234
    82  	@EXPECTED="-j1234" $(MAKEPARALLEL_TEST) -j1234 -k
    83  	@EXPECTED="-j1234" $(MAKEPARALLEL_TEST) -kt -j1234
    84  
    85  	@EXPECTED="-j1234"     $(MAKEPARALLEL_NINJA_TEST) --no-print-directory -j1234
    86  	@EXPECTED="-j1234 -k0" $(MAKEPARALLEL_NINJA_TEST) --no-print-directory -k -j1234
    87  	@EXPECTED="-j1234 -k0" $(MAKEPARALLEL_NINJA_TEST) -k -j1234
    88  	@EXPECTED="-j1234 -k0" $(MAKEPARALLEL_NINJA_TEST) -j1234 -k
    89  	@EXPECTED="-j1234 -k0" $(MAKEPARALLEL_NINJA_TEST) -kt -j1234
    90  
    91  	@EXPECTED=""       $(MAKEPARALLEL_TEST) A=-j1234
    92  
    93  	@EXPECTED="-j1234 args" ARGS="args" $(MAKEPARALLEL_TEST) -j1234