Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  app.mk

  Sprache: Shell
 

#
# Copyright (C) 2016 The Android Open Source Project
#
# 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.
#
################################################################################
#
# NanoApp C/C++ Makefile Utils
#
################################################################################

# Configuration ################################################################

# Toolchain Prefix
ifndef CROSS_COMPILE
  $(error Please set the environment variable CROSS_COMPILE to the complete \
          path to the toolchain directory plus the binary prefix, e.g. export \
          CROSS_COMPILE=~/bin/gcc-arm-none-eabi-4_8-2014q3/bin/arm-none-eabi-)
endif

PREFIX = $(CROSS_COMPILE)
TOOLCHAIN_DIR = $(shell dirname `which $(CROSS_COMPILE)gcc`)/..

# NANOHUB_DIR is relative to CWD (which is always APP Makefile dir)

NANOAPP_POSTPROCESS := $(NANOHUB_DIR)/../util/nanoapp_postprocess/nanoapp_postprocess
NANOAPP_SIGN := $(NANOHUB_DIR)/../util/nanoapp_sign/nanoapp_sign

# TOP_RELPATH is ANDROID_TOP relative to NANOHUB_DIR
TOP_RELPATH := ../../../..
TOP_ABSPATH := $(realpath $(NANOHUB_DIR)/$(TOP_RELPATH))

# for local variants there is always a path; for out-of-tree variants there may be
# - a $(VARIANT) soft link under firmware/variant subdir, or
# - VARIANT_PATH is found as vendor/<vendor_name>/<variant_name>/nanohub, or
# - explicitly provided in VARIANT_CONFIG_PATH (path, where <variant>_conf.mk is located)
#
ifeq ($(VARIANT_CONFIG_PATH),)
  variant_conf := $(wildcard $(TOP_ABSPATH)/vendor/*/*/nanohub/$(VARIANT)_conf.mk)
  ifeq ($(words $(variant_conf)),1)
    VARIANT_CONFIG_PATH := $(patsubst $(TOP_ABSPATH)/%/$(VARIANT)_conf.mk,%,$(variant_conf))
  else
    VARIANT_CONFIG_PATH := device/google/contexthub/firmware/variant/$(VARIANT)
  endif
endif

include $(TOP_ABSPATH)/$(VARIANT_CONFIG_PATH)/$(VARIANT)_conf.mk

# $(VARIANT)_conf.mk defines VARIANT_PATH, PLATFORM, CHIP, CPU, VARIANT
# VARIANT_PATH from $(VARIANT)_conf.mk is ANDROID_TOP relative

# change VARIANT_PATH to become CWD-relative
VARIANT_PATH := $(NANOHUB_DIR)/$(TOP_RELPATH)/$(VARIANT_PATH)

# all output goes here
ifndef OUT
OUT:=out/nanohub/$(VARIANT)/app/$(BIN)
else
ifneq ($(filter $(TOP_ABSPATH)/out/target/product/%,$(OUT)),)
# this looks like Android OUT env var; update it
IMAGE_TARGET_OUT:=$(OUT)/vendor/firmware/$(BIN).napp
OUT:=$(OUT)/nanohub/$(VARIANT)/app/$(BIN)
endif
endif

################################################################################
#
# Nanoapp Libc/Libm Utils
#
################################################################################

include $(NANOHUB_DIR)/lib/lib.mk

# Tools ########################################################################

AS := $(PREFIX)gcc
CC := $(PREFIX)gcc
CXX := $(PREFIX)g++
OBJCOPY := $(PREFIX)objcopy
OBJDUMP := $(PREFIX)objdump

# Assembly Flags ###############################################################

AS_FLAGS +=

# C++ Flags ####################################################################

CXX_CFLAGS += -std=c++11
CXX_CFLAGS += -fno-exceptions
CXX_CFLAGS += -fno-rtti

# C Flags ######################################################################

C_CFLAGS +=

# Common Flags #################################################################

# Defines
CFLAGS += -DAPP_ID=$(APP_ID)
CFLAGS += -DAPP_VERSION=$(APP_VERSION)
CFLAGS += -D__NANOHUB__

# Optimization/debug
CFLAGS += -Os
CFLAGS += -g

# Include paths
CFLAGS += -I$(NANOHUB_DIR)/os/inc
CFLAGS += -I$(NANOHUB_DIR)/os/platform/$(PLATFORM)/inc
CFLAGS += -I$(NANOHUB_DIR)/os/cpu/$(CPU)/inc
CFLAGS += -I$(VARIANT_PATH)/inc
CFLAGS += -I$(NANOHUB_DIR)/../lib/include

# Warnings/error configuration.
CFLAGS += -Wall
CFLAGS += -Werror
CFLAGS += -Wmissing-declarations
CFLAGS += -Wlogical-op
CFLAGS += -Waddress
CFLAGS += -Wempty-body
CFLAGS += -Wpointer-arith
CFLAGS += -Wenum-compare
CFLAGS += -Wdouble-promotion
CFLAGS += -Wshadow
CFLAGS += -Wno-attributes

# Produce position independent code.
CFLAGS += -fpic
CFLAGS += -mno-pic-data-is-text-relative
CFLAGS += -msingle-pic-base
CFLAGS += -mpic-register=r9

# Code generation options for Cortex-M4F
CFLAGS += -mthumb
CFLAGS += -mcpu=cortex-m4
CFLAGS += -march=armv7e-m
CFLAGS += -mfloat-abi=softfp
CFLAGS += -mfpu=fpv4-sp-d16
CFLAGS += -mno-thumb-interwork
CFLAGS += -ffast-math
CFLAGS += -fsingle-precision-constant

# Platform defines
CFLAGS += -DARM
CFLAGS += -DUSE_NANOHUB_FLOAT_RUNTIME
CFLAGS += -DARM_MATH_CM4
CFLAGS += -D__FPU_PRESENT

# Miscellaneous
CFLAGS += -fno-strict-aliasing
CFLAGS += -fvisibility=hidden
CFLAGS += -fno-unwind-tables
CFLAGS += -fstack-reuse=all
CFLAGS += -ffunction-sections
CFLAGS += -fdata-sections

# Linker Configuration #########################################################

LD := $(PREFIX)g++

LDFLAGS := -T $(NANOHUB_DIR)/os/platform/$(PLATFORM)/lkr/app.lkr
LDFLAGS += -nostartfiles
LDFLAGS += -nostdlib
LDFLAGS += -Wl,--gc-sections
LDFLAGS += -Wl,-Map,$(OUT)/$(BIN).map
LDFLAGS += -Wl,--cref
ifeq ($(BIN_MODE),static)
LDFLAGS += -Bstatic
LDFLAGS += -Wl,--emit-relocs
else
LDFLAGS += -Bdynamic
LDFLAGS += -Wl,--no-undefined
LDFLAGS += -Wl,--no-allow-shlib-undefined
endif

# Build Rules ##################################################################

AS_SRCS := $(filter %.S, $(SRCS))
C_SRCS := $(filter %.c, $(SRCS))
CXX_SRCS := $(filter %.cc, $(SRCS))
CPP_SRCS := $(filter %.cpp, $(SRCS))

OBJS := $(patsubst %.S, $(OUT)/%.o, $(AS_SRCS))
OBJS += $(patsubst %.c, $(OUT)/%.o, $(C_SRCS))
OBJS += $(patsubst %.cc, $(OUT)/%.o, $(CXX_SRCS))
OBJS += $(patsubst %.cpp, $(OUT)/%.o, $(CPP_SRCS))

UNSIGNED_BIN := $(BIN).unsigned.napp

NANOHUB_KEY_PATH := $(NANOHUB_DIR)/os/platform/$(PLATFORM)/misc

.PHONY: all clean sync
all: $(OUT)/$(BIN).S $(OUT)/$(BIN).napp $(IMAGE_TARGET_OUT)

$(OUT)/$(BIN).napp : $(OUT)/$(UNSIGNED_BIN) $(NANOAPP_SIGN)
 @mkdir -p $(dir $@)
 $(NANOAPP_SIGN) -e $(NANOHUB_KEY_PATH)/debug.privkey \
  -m $(NANOHUB_KEY_PATH)/debug.pubkey -s $< $@
ifdef IMAGE_TARGET_OUT
$(IMAGE_TARGET_OUT): $(OUT)/$(BIN).napp
 @mkdir -p $(dir $@)
 cp $< $(IMAGE_TARGET_OUT)
endif

ifeq ($(APP_VERSION),)
APP_VERSION := 0
endif

ifeq ($(BIN_MODE),static)
$(OUT)/$(UNSIGNED_BIN) : $(OUT)/$(BIN).elf $(NANOAPP_POSTPROCESS)
 @mkdir -p $(dir $@)
 $(NANOAPP_POSTPROCESS) -s -a $(APP_ID) -e $(APP_VERSION) -v $(BIN_POSTPROCESS_ARGS) $< $@
else
$(OUT)/$(UNSIGNED_BIN) : $(OUT)/$(BIN).bin $(NANOAPP_POSTPROCESS)
 @mkdir -p $(dir $@)
 $(NANOAPP_POSTPROCESS) -a $(APP_ID) -e $(APP_VERSION) -v $(BIN_POSTPROCESS_ARGS) $< $@

$(OUT)/$(BIN).bin : $(OUT)/$(BIN).elf
 @mkdir -p $(dir $@)
 $(OBJCOPY) -j.relocs -j.flash -j.data -j.dynsym -O binary $< $@
endif

$(OUT)/$(BIN).S : $(OUT)/$(BIN).elf
 @mkdir -p $(dir $@)
 $(OBJDUMP) $< -DS > $@

$(OUT)/$(BIN).elf : $(OBJS)
 @mkdir -p $(dir $@)
 $(LD) $(CFLAGS) $(CXX_FLAGS) $(LDFLAGS) $(OBJS) $(STATIC_LIBS) -o $@

$(OUT)/%.o : %.S
 @mkdir -p $(dir $@)
 $(AS) $(AS_FLAGS) $(CFLAGS) -DSRC_FILENAME=\"$(notdir $<)\" -c $< -o $@

$(OUT)/%.o : %.c
 @mkdir -p $(dir $@)
 $(CC) $(C_CFLAGS) $(CFLAGS) -DSRC_FILENAME=\"$(notdir $<)\" -c $< -o $@

$(OUT)/%.o : %.cc
 @mkdir -p $(dir $@)
 $(CXX) $(CXX_CFLAGS) $(CFLAGS) -DSRC_FILENAME=\"$(notdir $<)\" -c $< -o $@

$(OUT)/%.o : %.cpp
 @mkdir -p $(dir $@)
 $(CXX) $(CXX_CFLAGS) $(CFLAGS) -DSRC_FILENAME=\"$(notdir $<)\" -c $< -o $@

# Automatic dependency resolution ##############################################

DEPS_AS = $(OUT)/deps_as
DEPS_C = $(OUT)/deps_c
DEPS_CXX = $(OUT)/deps_cxx

$(DEPS_AS) : $(AS_SRCS)
 @mkdir -p $(dir $@)
 $(AS) $(AS_CFLAGS) $(CFLAGS) -MM $^ > $@

$(DEPS_C) : $(C_SRCS)
 @mkdir -p $(dir $@)
 $(CC) $(C_CFLAGS) $(CFLAGS) -MM $^ > $@

$(DEPS_CXX) : $(CXX_SRCS) $(CPP_SRCS)
 @mkdir -p $(dir $@)
 $(CXX) $(CXX_CFLAGS) $(CFLAGS) -MM $^ > $@

NOAUTODEPTARGETS = clean

ifeq ($(words $(findstring $(MAKECMDGOALS), $(NOAUTODEPTARGETS))), 0)

ifneq ($(AS_SRCS), )
-include $(DEPS_AS)
endif

ifneq ($(C_SRCS), )
-include $(DEPS_C)
endif

ifneq ($(CXX_SRCS)$(CPP_SRCS),)
-include $(DEPS_CXX)
endif

endif

$(NANOAPP_POSTPROCESS): $(wildcard $(dir $(NANOAPP_POSTPROCESS))/*.c* $(dir $(NANOAPP_POSTPROCESS))/*.h)
 echo DEPS [$@]: $^
 make -C $(dir $@)

$(NANOAPP_SIGN): $(wildcard $(dir $(NANOAPP_SIGN))/*.c* $(dir $(NANOAPP_SIGN))/*.h)
 echo DEPS [$@]: $^
 make -C $(dir $@)

# Clean targets ################################################################

clean :
 rm -rf $(OUT)

sync:   $(OUT)/$(BIN).napp
 adb push $< /vendor/firmware/$(BIN).napp

Messung V0.5 in Prozent
C=85 H=92 G=88

¤ Dauer der Verarbeitung: 0.11 Sekunden  (vorverarbeitet am  2026-06-27) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik