Home | History | Annotate | Download | only in build
      1 # Copyright (C) 2008 The Android Open Source Project
      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 
     16 # shared definitions
     17 ifeq ($(strip $(SHOW)),)
     18 define pretty
     19 @echo $1
     20 endef
     21 hide := @
     22 else
     23 define pretty
     24 endef
     25 hide := 
     26 endif
     27 
     28 define my-dir
     29 .
     30 endef
     31 
     32 # return the directory containing the intermediate files for a given
     33 # kind of executable
     34 # $1 = type (EXECUTABLES or STATIC_LIBRARIES) 
     35 # $2 = module name
     36 # $3 = ignored
     37 #
     38 define intermediates-dir-for
     39 $(OBJS_DIR)/intermediates/$(2)
     40 endef
     41 
     42 # Generate the full path of a given static library
     43 define library-path
     44 $(OBJS_DIR)/$(1).a
     45 endef
     46 
     47 define executable-path
     48 $(OBJS_DIR)/$(1)$(EXE)
     49 endef
     50 
     51 # Compile a C source file
     52 #
     53 define  compile-c-source
     54 SRC:=$(1)
     55 OBJ:=$$(LOCAL_OBJS_DIR)/$$(SRC:%.c=%.o)
     56 LOCAL_OBJECTS += $$(OBJ)
     57 DEPENDENCY_DIRS += $$(dir $$(OBJ))
     58 $$(OBJ): PRIVATE_CFLAGS := $$(CFLAGS) $$(LOCAL_CFLAGS) -I$$(LOCAL_PATH) -I$$(OBJS_DIR)
     59 $$(OBJ): PRIVATE_CC     := $$(LOCAL_CC)
     60 $$(OBJ): PRIVATE_OBJ    := $$(OBJ)
     61 $$(OBJ): PRIVATE_MODULE := $$(LOCAL_MODULE)
     62 $$(OBJ): PRIVATE_SRC    := $$(SRC_PATH)/$$(SRC)
     63 $$(OBJ): PRIVATE_SRC0   := $$(SRC)
     64 $$(OBJ): $$(SRC_PATH)/$$(SRC)
     65 	@mkdir -p $$(dir $$(PRIVATE_OBJ))
     66 	@echo "Compile: $$(PRIVATE_MODULE) <= $$(PRIVATE_SRC0)"
     67 	$(hide) $$(PRIVATE_CC) $$(PRIVATE_CFLAGS) -c -o $$(PRIVATE_OBJ) -MMD -MP -MF $$(PRIVATE_OBJ).d.tmp $$(PRIVATE_SRC)
     68 	$(hide) $$(BUILD_SYSTEM)/mkdeps.sh $$(PRIVATE_OBJ) $$(PRIVATE_OBJ).d.tmp $$(PRIVATE_OBJ).d
     69 endef
     70 
     71 # Compile a C++ source file
     72 #
     73 define  compile-cxx-source
     74 SRC:=$(1)
     75 OBJ:=$$(LOCAL_OBJS_DIR)/$$(SRC:%$(LOCAL_CPP_EXTENSION)=%.o)
     76 LOCAL_OBJECTS += $$(OBJ)
     77 DEPENDENCY_DIRS += $$(dir $$(OBJ))
     78 $$(OBJ): PRIVATE_CFLAGS := $$(CFLAGS) $$(LOCAL_CFLAGS) -I$$(LOCAL_PATH) -I$$(OBJS_DIR)
     79 $$(OBJ): PRIVATE_CXX    := $$(LOCAL_CC)
     80 $$(OBJ): PRIVATE_OBJ    := $$(OBJ)
     81 $$(OBJ): PRIVATE_MODULE := $$(LOCAL_MODULE)
     82 $$(OBJ): PRIVATE_SRC    := $$(SRC_PATH)/$$(SRC)
     83 $$(OBJ): PRIVATE_SRC0   := $$(SRC)
     84 $$(OBJ): $$(SRC_PATH)/$$(SRC)
     85 	@mkdir -p $$(dir $$(PRIVATE_OBJ))
     86 	@echo "Compile: $$(PRIVATE_MODULE) <= $$(PRIVATE_SRC0)"
     87 	$(hide) $$(PRIVATE_CXX) $$(PRIVATE_CFLAGS) -c -o $$(PRIVATE_OBJ) -MMD -MP -MF $$(PRIVATE_OBJ).d.tmp $$(PRIVATE_SRC)
     88 	$(hide) $$(BUILD_SYSTEM)/mkdeps.sh $$(PRIVATE_OBJ) $$(PRIVATE_OBJ).d.tmp $$(PRIVATE_OBJ).d
     89 endef
     90 
     91 # Compile an Objective-C source file
     92 #
     93 define  compile-objc-source
     94 SRC:=$(1)
     95 OBJ:=$$(LOCAL_OBJS_DIR)/$$(SRC:%.m=%.o)
     96 LOCAL_OBJECTS += $$(OBJ)
     97 DEPENDENCY_DIRS += $$(dir $$(OBJ))
     98 $$(OBJ): PRIVATE_CFLAGS := $$(CFLAGS) $$(LOCAL_CFLAGS) -I$$(LOCAL_PATH) -I$$(OBJS_DIR)
     99 $$(OBJ): PRIVATE_CC     := $$(LOCAL_CC)
    100 $$(OBJ): PRIVATE_OBJ    := $$(OBJ)
    101 $$(OBJ): PRIVATE_MODULE := $$(LOCAL_MODULE)
    102 $$(OBJ): PRIVATE_SRC    := $$(SRC_PATH)/$$(SRC)
    103 $$(OBJ): PRIVATE_SRC0   := $$(SRC)
    104 $$(OBJ): $$(SRC_PATH)/$$(SRC)
    105 	@mkdir -p $$(dir $$(PRIVATE_OBJ))
    106 	@echo "Compile: $$(PRIVATE_MODULE) <= $$(PRIVATE_SRC0)"
    107 	$(hide) $$(PRIVATE_CC) $$(PRIVATE_CFLAGS) -c -o $$(PRIVATE_OBJ) -MMD -MP -MF $$(PRIVATE_OBJ).d.tmp $$(PRIVATE_SRC)
    108 	$(hide) $$(BUILD_SYSTEM)/mkdeps.sh $$(PRIVATE_OBJ) $$(PRIVATE_OBJ).d.tmp $$(PRIVATE_OBJ).d
    109 endef
    110 
    111 # Install a file
    112 #
    113 define install-target
    114 SRC:=$(1)
    115 DST:=$(2)
    116 $$(DST): PRIVATE_SRC := $$(SRC)
    117 $$(DST): PRIVATE_DST := $$(DST)
    118 $$(DST): PRIVATE_DST_NAME := $$(notdir $$(DST))
    119 $$(DST): PRIVATE_SRC_NAME := $$(SRC)
    120 $$(DST): $$(SRC)
    121 	@mkdir -p $$(dir $$(PRIVATE_DST))
    122 	@echo "Install: $$(PRIVATE_DST_NAME) <= $$(PRIVATE_SRC_NAME)"
    123 	$(hide) cp -f $$(PRIVATE_SRC) $$(PRIVATE_DST)
    124 install: $$(DST)
    125 endef
    126 
    127 # for now, we only use prebuilt SDL libraries, so copy them
    128 define copy-prebuilt-lib
    129 _SRC := $(1)
    130 _SRC1 := $$(notdir $$(_SRC))
    131 _DST := $$(OBJS_DIR)/$$(_SRC1)
    132 LIBRARIES += $$(_DST)
    133 $$(_DST): PRIVATE_DST := $$(_DST)
    134 $$(_DST): PRIVATE_SRC := $$(_SRC)
    135 $$(_DST): $$(_SRC)
    136 	@mkdir -p $$(dir $$(PRIVATE_DST))
    137 	@echo "Prebuilt: $$(PRIVATE_DST)"
    138 	$(hide) cp -f $$(PRIVATE_SRC) $$(PRIVATE_DST)
    139 endef
    140 
    141 define  create-dir
    142 $(1):
    143 	mkdir -p $(1)
    144 endef
    145 
    146 define transform-generated-source
    147 @echo "Generated: $(PRIVATE_MODULE) <= $<"
    148 @mkdir -p $(dir $@)
    149 $(hide) $(PRIVATE_CUSTOM_TOOL)
    150 endef
    151 
    152