Linux 如何将librt和libpthread链接到Yocto中的新层?

Linux 如何将librt和libpthread链接到Yocto中的新层?,linux,yocto,Linux,Yocto,下面是这个问题 请忽略外部双引号集。它们似乎是必要的 “StackOverflow”接受我的输入。 我的图层是“meta oca so”,它的包是“oca”,它的配方是oca_1.2.7.bb。 我修改了我的“oca makefile”,以修复以前的错误和一些链接器错误 无效的链接标志,我现在得到完整的29“oca”。一个链接在一起的LIB 当我做“比托卡”的时候。我没有做任何清洁,而改变链接 标记并重做“bitbake oca”。 现在,当我执行“bitbake oca”时,错误消息如下:

下面是这个问题

请忽略外部双引号集。它们似乎是必要的 “StackOverflow”接受我的输入。
我的图层是“meta oca so”,它的包是“oca”,它的配方是oca_1.2.7.bb。
我修改了我的“oca makefile”,以修复以前的错误和一些链接器错误 无效的链接标志,我现在得到完整的29“oca”。一个链接在一起的LIB 当我做“比托卡”的时候。我没有做任何清洁,而改变链接 标记并重做“bitbake oca”。
现在,当我执行“bitbake oca”时,错误消息如下:

~/Yocto/imx-yocto-bsp/build-wayland/tmp/work/aarch64-poky-linux/oca/1.2.7-r0/oca-1.2.7/Obj/linuxApp/Release/OcaProto
aarch64-poky-linux-ld: cannot find -lstdc++
aarch64-poky-linux-ld: cannot find -lrt
aarch64-poky-linux-ld: cannot find -lpthread
aarch64-poky-linux-ld: cannot find -ldns_sd
在这个问题中,我将重点放在“librt”和“libpthread”上,并将这些行添加到我的 “local.conf”:

但当我重拨“bitbake oca”时,它并没有清除它的两个链接错误

当我尝试整体“bitbake imx图像多媒体”时,我收到了以下消息 关于“librt”:

很难找到关于“rt”的更多信息,因为这两个字母的组合是 在统计上并非不可能

类似地,当我注释掉“local.conf”中的两行“librt”并重试时 “bitbake imx图像多媒体”,我收到了关于“libpthread”的消息:

如何获取“librt”和“libpthread”?
我是否需要为每个层添加一个层来构建它们?会有“依赖地狱”吗 每个项目所需的支持包树

下面是相关的makefile组件makeOCA.inc。OCA项目中有63个不同描述和不同级别的“make”文件。相当长,大约1070行。我剪掉了非Linux系统的部分;我只关心这里的释放

#  Project             : OCA
#  Module              : Multiple components
#  Description         : Include file for C / CPP makefiles.
#

################################################################################
# Environment variable checking
################################################################################
#
# If one of the variables below is not set,
# calling make will result in a "missing separator" error.
#
ifeq ($(CAP_HOME),)
  variable CAP_HOME is not set
else
  CAP_HOME := $(patsubst %/,%,$(subst \,/,$(CAP_HOME)))
endif

################################################################################
# Variables
################################################################################
ifeq ($(NAME_MKE),)
  NAME_MKE := makefileOCA
endif
ifeq ($(IGNORE_MAKE_ERRORS),Y)
  PREFIX := -@
else
  ifneq ($(DISPLAY_MAKE_CMDS),Y)
    PREFIX := @
  endif
endif
EMPTY :=
SPACE := $(EMPTY) $(EMPTY)
#
# Only set variables when the makefile is called with an actual target
# (not a phony one).
#
ifneq ($(PLATFORM),)
  ifneq ($(RELEASE),)

    # Project home
    PRJ_HOME := $(CAP_HOME)

    # Src home
    SRC_HOME := $(PRJ_HOME)/Src

    # Include directories
    ifneq ($(USRINC),)
    INCDIRS := $(subst ; ,;,$(subst \,/,.;\
        $(SRC_HOME)/inc;\
        $(SRC_HOME)/lib/inc;\
        $(SRC_HOME)/common;\
        $(SRC_HOME)/common/OCA;\
        $(SRC_HOME)/common/HostInterface;\
        $(SRC_HOME)/platform;\
        $(SRC_HOME)/platform/common;\
        $(SRC_HOME)/adamson;\
        $(USRINC)))
    else
    INCDIRS := $(subst ; ,;,$(subst \,/,.;\
        $(SRC_HOME)/inc;\
        $(SRC_HOME)/lib/inc;\
        $(SRC_HOME)/common;\
        $(SRC_HOME)/common/OCA;\
        $(SRC_HOME)/common/HostInterface;\
        $(SRC_HOME)/platform;\
        $(SRC_HOME)/platform/common;\
        $(SRC_HOME)/adamson))
    endif

    # Output directories
    OBJDIR := Obj
    OBJINT := intermediate
    OUTDIR := $(subst \,/,$(PRJ_HOME))/$(OBJDIR)/$(PLATFORM)/$(RELEASE)
    ifeq ($(GINTDIR),)
        GINTDIR := $(OUTDIR)/$(OBJINT)
    endif
    INTDIR := $(GINTDIR)/$(NAME)

    # Tools
    SD := CC -M -MP -march=native
    SE := sed
    RC :=
    ifeq ($(OS),Windows_NT)
        RM := erase /F
        MD := mkdir
        RN := ren _PATH__OLDNAME_ _NEWNAME_
        RD := rd /s/q
    else
        RM := rm -f
        MD := mkdir -p
        RN := mv _PATH__OLDNAME_ _PATH__NEWNAME_
        RD := rm -rf
    endif

    # Commands
    ifeq ($(OS),Windows_NT)
        IFEXIST    := if exist _FILE_ _COMMAND_
        IFNOTEXIST := if not exist _FILE_ _COMMAND_
    else
        IFEXIST    := if [ -e "_FILE_" ]; then _COMMAND_; fi
        IFNOTEXIST := if [ ! -e "_FILE_" ]; then _COMMAND_; fi
    endif

    # Other OS dependent variables
    # Work around to make sure only a single backslash is set
    ifeq ($(OS),Windows_NT)
        PATH_SEP := $(subst \\,\,\\)
    else
        PATH_SEP := $(subst \\,/,/)
    endif

    ifeq ($(PLATFORM),winntApp)

      CXXFLAGS :=
      RCFLAGS := -I "$(subst ;," -I ",$(INCDIRS))"


### linuxRelease ###############################################################

      ifeq ($(RELEASE),Release)

        # Tools
        # CC := gcc

        # Determine the extensions for the target platform
        OBJ_EXT := o
        DEP_EXT := dep
        EXE_EXT :=
        LIB_EXT := a
        DLL_EXT := so

        # Lists
        OBJS := $(patsubst %.cpp,%.$(OBJ_EXT),$(SRCS) $(LINUXSRCS))
        OBJS := $(patsubst %.c,%.$(OBJ_EXT),$(OBJS))
        DEPS := $(patsubst %.$(OBJ_EXT),%.$(DEP_EXT),$(OBJS))
        LIBS := $(LIBS) $(LINUXLIBS) $(EXTERNAL_LIBS)
        LIBS := $(addsuffix .$(LIB_EXT), $(LIBS))
        LIBS := $(addprefix $(OUTDIR)/, $(LIBS))

        SDFLAGS := -O2 -nostdlib -fno-strict-aliasing -ffunction-sections -fdata-sections -c -Wall -Wno-unknown-pragmas -x none \
                   -I"$(subst ;," -I",$(INCDIRS))" \
                   -D"NDEBUG" -DTARGET_LINUX -D"CPPUNIT_TUI_VERSION" -D"__STDC_FORMAT_MACROS" \
                   $(foreach USRDEF,$(USRDEFS),-D"$(USRDEF)") \
                   $(foreach USRUNDEF,$(USRUNDEFS),-U"$(USRUNDEF)")
        SDCFLAGS :=
        SDCPPFLAGS := -std=c++0x
        CCFLAGS = $(SDFLAGS) -fexceptions -fvisibility=hidden -march=armv8-a -mtune=cortex-a53 -o $(INTDIR)/$@
# That's for Linaro and the Snapdragon410 (Qualcomm APQ8016) processor; next is for Ubuntu 18.04.1
#       CCFLAGS = $(SDFLAGS) -fexceptions -fvisibility=hidden -m64 -mtune=generic -o $(INTDIR)/$@
        CXXFLAGS := -std=gnu++0x

        ifeq ($(TYPE),EXE)
          OUT_EXT := $(EXE_EXT)
          # LD := gcc
          LD := aarch64-poky-linux-ld
#         LDFLAGS = -Wl,--gc-sections -fno-keep-static-consts -fexceptions -march=armv8-a -maarch64linux -L$(OUTDIR) -o$@
# Use the above -Wl when using gcc. When using ld directly, it doesn't take -Wl. aarch64-poky-linux-ld doesn't have the -f options.
          LDFLAGS = --gc-sections -march=armv8-a -maarch64linux -L$(OUTDIR) -o$@
# That's for Linaro and the Snapdragon410 (Qualcomm APQ8016) processor; next is for Ubuntu 18.04.1
#         LDFLAGS = -Wl,--gc-sections -fno-keep-static-consts -fexceptions -m64 -mtune=x86-64 -L$(OUTDIR) -o$@
          LINUXSYSTEMLIBS := -lstdc++ -lrt -lpthread $(addprefix -l, $(LINUXSYSTEMLIBS))
        endif
        ifeq ($(TYPE),LIB)
          OUT_EXT := $(LIB_EXT)
          # LD := ar
          LDFLAGS = crus $@
        endif
        ifeq ($(TYPE),DLL)
          OUT_EXT := $(DLL_EXT)
          # LD := gcc
          LD := aarch64-poky-linux-ld
#         LDFLAGS = -Wl,--gc-sections -export-dynamic -fno-keep-static-consts -fexceptions -march=armv8-a -maarch64linux -L$(OUTDIR) -o$@
# Use the above -Wl when using gcc. When using ld directly, it doesn't take -Wl. aarch64-poky-linux-ld doesn't have the -f options.
          LDFLAGS = --gc-sections -export-dynamic -march=armv8-a -maarch64linux -L$(OUTDIR) -o$@
# That's for Linaro and the Snapdragon410 (Qualcomm APQ8016) processor; next is for Ubuntu 18.04.1
#         LDFLAGS = -Wl,--gc-sections -export-dynamic -fno-keep-static-consts -fexceptions -m64 -mtune=x86-64 -L$(OUTDIR) -o$@
          LINUXSYSTEMLIBS := -lstdc++ -lrt -lpthread $(addprefix -l, $(LINUXSYSTEMLIBS))
        endif
      endif

    endif #ifeq ($(PLATFORM),linuxApp)

  endif #ifneq ($(RELEASE),)
endif #ifneq ($(PLATFORM),)

################################################################################
# Phony target specification
################################################################################
.PHONY: goal all clean phonyclean $(NAME)\
        winntDebug winntRelease \
        winntDebug64 winntRelease64 \
        winntDebugClean winntReleaseClean \
        winntDebug64Clean winntRelease64Clean \
        linuxDebug linuxRelease \
        linuxDebugClean linuxReleaseClean

################################################################################
# Targets
################################################################################
goal: winntDebug winntRelease

all: winntDebug winntRelease \
     winntDebug64 winntRelease64

clean: winntDebugClean winntReleaseClean \
       winntDebug64Clean winntRelease64Clean

linuxRelease:
  ifneq (,$(findstring linux,$(TARGETS)))
    $(PREFIX)$(MAKE) -f $(NAME_MKE) $(NAME) --no-print-directory PLATFORM=linuxApp RELEASE=Release
  else
    $(PREFIX)echo $@ not configured for $(NAME)
  endif

linuxReleaseClean:
  ifneq (,$(findstring linux,$(TARGETS)))
    $(PREFIX)$(MAKE) -f $(NAME_MKE) phonyclean --no-print-directory PLATFORM=linuxApp RELEASE=Release CLEAN=Yes
  else
    $(PREFIX)echo linuxRelease not configured for $(NAME)
  endif

### Dependency files ###########################################################

$(INTDIR)/%.$(DEP_EXT) : %.c
    $(PREFIX)echo $(@F)
    $(PREFIX)$(subst _FILE_,$(subst /,$(PATH_SEP),$@),$(subst _COMMAND_,$(RM) $(subst /,$(PATH_SEP),$@),$(IFEXIST)))
    $(PREFIX)$(subst _FILE_,$(subst /,$(PATH_SEP),$@.tmp),$(subst _COMMAND_,$(RM) $(subst /,$(PATH_SEP),$@.tmp),$(IFEXIST)))
    $(PREFIX)$(subst _FILE_,$(subst /,$(PATH_SEP),$(GINTDIR)),$(subst _COMMAND_,$(MD) $(subst /,$(PATH_SEP),$(GINTDIR)),$(IFNOTEXIST)))
    $(PREFIX)$(subst _FILE_,$(subst /,$(PATH_SEP),$(INTDIR)),$(subst _COMMAND_,$(MD) $(subst /,$(PATH_SEP),$(INTDIR)),$(IFNOTEXIST)))
  #
  # Do not use (OBJ_EXT) in the SED command, since all dependencies are generated with gcc.
  # Use .o instead
  #
    $(PREFIX)$(SD) $(SDCFLAGS) $(SDFLAGS) $< | $(SE) "s/$*.o:/$*.$(OBJ_EXT) $(subst /,\/,$@):/" > $(subst /,$(PATH_SEP),$@.tmp)
    $(PREFIX)$(subst _PATH_,$(subst /,$(PATH_SEP),$(INTDIR)/),$(subst _OLDNAME_,$(@F).tmp,$(subst _NEWNAME_,$(@F),$(RN))))

$(INTDIR)/%.$(DEP_EXT) : %.cpp
    $(PREFIX)echo $(@F)
    $(PREFIX)$(subst _FILE_,$(subst /,$(PATH_SEP),$@),$(subst _COMMAND_,$(RM) $(subst /,$(PATH_SEP),$@),$(IFEXIST)))
    $(PREFIX)$(subst _FILE_,$(subst /,$(PATH_SEP),$@.tmp),$(subst _COMMAND_,$(RM) $(subst /,$(PATH_SEP),$@.tmp),$(IFEXIST)))
    $(PREFIX)$(subst _FILE_,$(subst /,$(PATH_SEP),$(GINTDIR)),$(subst _COMMAND_,$(MD) $(subst /,$(PATH_SEP),$(GINTDIR)),$(IFNOTEXIST)))
    $(PREFIX)$(subst _FILE_,$(subst /,$(PATH_SEP),$(INTDIR)),$(subst _COMMAND_,$(MD) $(subst /,$(PATH_SEP),$(INTDIR)),$(IFNOTEXIST)))
  #
  # Do not use (OBJ_EXT) in the SED command, since all dependencies are generated with gcc.
  # Use .o instead
  #
    $(PREFIX)$(SD) $(SDCPPFLAGS) $(SDFLAGS) $< | $(SE) "s/$*.o:/$*.$(OBJ_EXT) $(subst /,\/,$@):/" > $(subst /,$(PATH_SEP),$@.tmp)
    $(PREFIX)$(subst _PATH_,$(subst /,$(PATH_SEP),$(INTDIR)/),$(subst _OLDNAME_,$(@F).tmp,$(subst _NEWNAME_,$(@F),$(RN))))

### Object files ###############################################################

%.$(OBJ_EXT) : %.asm
    $(PREFIX)echo $(@F)
    $(PREFIX)$(AS) $(ASFLAGS) $<

%.$(OBJ_EXT) : %.S
    $(PREFIX)echo $(@F)
    $(PREFIX)$(AS) $(ASFLAGS) $<

%.$(RES_EXT) : %.rc
    $(PREFIX)echo $(@F)
    $(PREFIX)"$(RC)" $(RCFLAGS) -fo "$(INTDIR)/$(@F)" $<

%.$(OBJ_EXT) : %.c $(TOOL_DEPS)
  ifneq ($(CC),cl.exe)
    $(PREFIX)echo $(@F)
  endif
    $(PREFIX)$(subst _FILE_,$(subst /,$(PATH_SEP),$(INTDIR)/$@),$(subst _COMMAND_,$(RM) $(subst /,$(PATH_SEP),$(INTDIR)/$@),$(IFEXIST)))
    $(PREFIX)$(subst _FILE_,$(subst /,$(PATH_SEP),$(INTDIR)),$(subst _COMMAND_,$(MD) $(subst /,$(PATH_SEP),$(INTDIR)),$(IFNOTEXIST)))
    $(PREFIX)$(CC) $(CCFLAGS) $<

%.$(OBJ_EXT) : %.cpp $(TOOL_DEPS)
  ifneq ($(CC),cl.exe)
    $(PREFIX)echo $(@F)
  endif
    $(PREFIX)$(subst _FILE_,$(subst /,$(PATH_SEP),$(INTDIR)/$@),$(subst _COMMAND_,$(RM) $(subst /,$(PATH_SEP),$(INTDIR)/$@),$(IFEXIST)))
    $(PREFIX)$(subst _FILE_,$(subst /,$(PATH_SEP),$(INTDIR)),$(subst _COMMAND_,$(MD) $(subst /,$(PATH_SEP),$(INTDIR)),$(IFNOTEXIST)))
    $(PREFIX)$(CC) $(CCFLAGS) $(CXXFLAGS) $<

### Output file ################################################################

$(NAME): $(OUTFILE) $(BINFILE)

$(OUTFILE): $(INTDIR)/$(NAME).x $(OBJS) $(LIBS) $(NAME_MKE)
    $(PREFIX)echo $@
    $(PREFIX)$(subst _FILE_,$@,$(subst _COMMAND_,$(RM) $@,$(IFEXIST)))
    $(PREFIX)$(subst _FILE_,$(subst /,$(PATH_SEP),$(OUTDIR)),$(subst _COMMAND_,$(MD) $(subst /,$(PATH_SEP),$(OUTDIR)),$(IFNOTEXIST)))
    ifneq (,$(findstring $(OBJINT),$(OBJS)))
        $(foreach obj,$(OBJS),$(shell echo $(obj) >> $(LSTFILE)))
    else
        $(foreach obj,$(OBJS),$(shell echo $(subst /,$(PATH_SEP),$(INTDIR)/$(obj)) >> $(LSTFILE)))
    endif
    ifneq (,$(filter $(PLATFORM),linuxApp))
      ifeq ($(TYPE),LIB)    
    $(PREFIX)ar $(LDFLAGS) @$(LSTFILE) $(LIBS) $(LINUXSYSTEMLIBS)
      else
        ifeq ($(TYPE),EXE)    
        $(PREFIX)aarch64-poky-linux-ld $(LDFLAGS) @$(LSTFILE) $(LIBS) $(LINUXSYSTEMLIBS)
        else
          ifeq ($(TYPE),DLL)    
        $(PREFIX)aarch64-poky-linux-ld $(LDFLAGS) @$(LSTFILE) $(LIBS) $(LINUXSYSTEMLIBS)
          else
        $(PREFIX)LD $(LDFLAGS) @$(LSTFILE) $(LIBS) $(LINUXSYSTEMLIBS)
          endif
        endif
      endif
    else
      ifeq ($(PLATFORM),winntApp)
        $(PREFIX)$(LD) $(LDFLAGS) @$(LSTFILE) $(WINNTSYSTEMLIBS)
      else
        $(PREFIX)$(LD) $(LDFLAGS) @$(LSTFILE)
      endif
    endif
    $(PREFIX)$(subst _FILE_,$(LSTFILE),$(subst _COMMAND_,$(RM) $(LSTFILE),$(IFEXIST)))

$(BINFILE): $(OUTFILE)
    $(PREFIX)echo $@
    $(PREFIX)$(B2B) $(B2BFLAGS) $(OUTFILE) $(BINFILE)

$(INTDIR)/$(NAME).x:
    $(PREFIX)$(subst _FILE_,$(subst /,$(PATH_SEP),$(INTDIR)),$(subst _COMMAND_,$(MD) $(subst /,$(PATH_SEP),$(INTDIR)),$(IFNOTEXIST)))
    $(PREFIX)echo Checkpoint file for component $(NAME) > $(subst /,$(PATH_SEP),$@)

### Clean ######################################################################

phonyclean:
  ifneq ($(PLATFORM),)
    ifneq ($(RELEASE),)
    $(PREFIX)$(subst _FILE_,$(subst /,$(PATH_SEP),$(INTDIR)),$(subst _COMMAND_,$(RD) $(subst /,$(PATH_SEP),$(INTDIR)),$(IFEXIST)))
    $(PREFIX)$(subst _FILE_,$(patsubst %.$(OUT_EXT),%.pdb,$(OUTFILE)),$(subst _COMMAND_,$(RM) $(patsubst %.$(OUT_EXT),%.pdb,$(OUTFILE)),$(IFEXIST)))
    $(PREFIX)$(subst _FILE_,$(patsubst %.$(OUT_EXT),%.map,$(OUTFILE)),$(subst _COMMAND_,$(RM) $(patsubst %.$(OUT_EXT),%.map,$(OUTFILE)),$(IFEXIST)))
    $(PREFIX)$(subst _FILE_,$(patsubst %.$(OUT_EXT),%.dat,$(OUTFILE)),$(subst _COMMAND_,$(RM) $(patsubst %.$(OUT_EXT),%.dat,$(OUTFILE)),$(IFEXIST)))
    $(PREFIX)$(subst _FILE_,$(patsubst %.$(OUT_EXT),%.exp,$(OUTFILE)),$(subst _COMMAND_,$(RM) $(patsubst %.$(OUT_EXT),%.exp,$(OUTFILE)),$(IFEXIST)))
    $(PREFIX)$(subst _FILE_,$(patsubst %.$(OUT_EXT),%.lib,$(OUTFILE)),$(subst _COMMAND_,$(RM) $(patsubst %.$(OUT_EXT),%.lib,$(OUTFILE)),$(IFEXIST)))
    $(PREFIX)$(subst _FILE_,$(patsubst %.$(OUT_EXT),%.err,$(OUTFILE)),$(subst _COMMAND_,$(RM) $(patsubst %.$(OUT_EXT),%.err,$(OUTFILE)),$(IFEXIST)))
    $(PREFIX)$(subst _FILE_,$(OUTFILE),$(subst _COMMAND_,$(RM) $(OUTFILE),$(IFEXIST)))
    else
    $(PREFIX)echo Target $@ should not be used from command line
    endif
  else
    $(PREFIX)echo Target $@ should not be used from command line
  endif

################################################################################
# Include dependency files
################################################################################
ifneq ($(PLATFORM),)
  ifneq ($(RELEASE),)
    #
    # If cleaning, we must not include dependency files.
    # Otherwise they will be created before cleaning.
    #
    ifeq ($(CLEAN),)
      ifeq (,$(findstring $(OBJINT),$(OBJS)))
        #
        # Use a - in front of the include, otherwise make will complain
        # when it is ran the first time (when there are no .dep files).
        #
        -include $(patsubst %.$(DEP_EXT),$(INTDIR)/%.$(DEP_EXT),$(DEPS))
      endif
    endif
  endif
endif
#项目:OCA
#模块:多个组件
#描述:包含C/CPP生成文件的文件。
#
################################################################################
#环境变量检查
################################################################################
#
#如果未设置以下变量之一,
#调用make将导致“缺少分隔符”错误。
#
ifeq($(CAP_HOME),)
未设置变量CAP_HOME
其他的
CAP_HOME:=$(patsubst%/,%,$(subst\,/,$(CAP_HOME)))
恩迪夫
################################################################################
#变数
################################################################################
ifeq($(名称)
NAME_MKE:=makefileOCA
恩迪夫
ifeq($(忽略错误),Y)
前缀:=-@
其他的
ifneq($(显示制作CMDS),Y)
前缀:=@
恩迪夫
恩迪夫
空的:=
空格:=$(空)$(空)
#
#仅在使用实际目标调用makefile时设置变量
#(不是假的)。
#
ifneq($(平台),)
ifneq($(发布),)
#计划之家
PRJ_HOME:=$(CAP_HOME)
#Src主页
SRC_HOME:=$(PRJ_HOME)/SRC
#包括目录
ifneq($(USRINC),)
INCDIRS:=$(subst;,;,$(subst\,/\
$(SRC_HOME)/inc\
$(SRC_HOME)/lib/inc\
$(SRC_HOME)/普通\
$(SRC_HOME)/普通/本地区\
$(SRC_HOME)/公共/主机接口\
$(SRC_HOME)/平台\
$(SRC_HOME)/平台/普通\
$(SRC_HOME)/亚当森\
$(USRINC)))
其他的
INCDIRS:=$(subst;,;,$(subst\,/\
$(SRC_HOME)/inc\
$(SRC_HOME)/lib/inc\
$(SRC_HOME)/普通\
$(SRC_HOME)/普通/本地区\
$(SRC_HOME)/公共/主机接口\
$(SRC_HOME)/平台\
$(SRC_HOME)/平台/普通\
$(SRC_HOME)/亚当森)
恩迪夫
#输出目录
OBJDIR:=Obj
对象:=中间
OUTDIR:=$(subst\,/,$(PRJ_HOME))/$(OBJDIR)/$(PLATFORM)/$(RELEASE)
ifeq($(GINTDIR),)
GINTDIR:=$(OUTDIR)/$(OBJINT)
恩迪夫
INTDIR:=$(GINTDIR)/$(名称)
#工具
SD:=CC-M-MP-march=native
SE:=sed
RC:=
ifeq($(操作系统),Windows\u NT)
RM:=删除/F
MD:=mkdir
RN:=ren\u路径\u旧名称\u新名称_
RD:=RD/s/q
其他的
RM:=RM-f
MD:=mkdir-p
RN:=mv(路径)(旧名称)(路径)(新名称)_
RD:=rm-rf
恩迪夫
#命令
ifeq($(操作系统),Windows\u NT)
IFEXIST:=if exist\u FILE\u命令_
IFNOTEXIST:=如果不存在文件_
其他的
IFEXIST:=if[-e“u文件”];然后u命令u;fi
IFNOTEXIST:=if[!-e“\u文件”];然后u命令u;fi
恩迪夫
#其他操作系统因变量
#解决此问题以确保只设置了一个反斜杠
ifeq($(操作系统),Windows\u NT)
路径\ u SEP:=$(子项\、\、\)
其他的
路径_SEP:=$(子项\\,/,/)
恩迪夫
ifeq($(平台),winntApp)
CXXFLAGS:=
RCFLAGS:=-I“$(subst;,”-I“,$(INCDIRS))”
###利努克斯释放###############################################################
ifeq($(发布),发布)
#工具
#CC:=gcc
#确定目标平台的扩展
OBJ_EXT:=o
DEP_EXT:=DEP
EXE_EXT:=
LIB_EXT:=a
DLL_EXT:=so
#列表
OBJS:=$(patsubst%.cpp,%。$(OBJ_EXT),$(SRCS)$(LINUXSRCS))
OBJS:=$(patsubst%.c,%。$(OBJ_EXT),$(OBJS))
部门:=$(patsubst%.$(OBJ\U EXT),%.$(部门EXT),$(OBJS))
LIBS:=$(LIBS)$(LINUXLIBS)$(外部库)
LIBS:=$(addsuffix.$(LIB_EXT),$(LIBS))
LIBS:=$(addprefix$(OUTDIR)/,$(LIBS))
SDFLAGS:=-O2-nostdlib-fno严格别名-ffunction sections-fdata sections-c-Wall-Wno未知pragmas-x none\
-I“$(subst;,”-I“,$(INCDIRS))”\
-D“NDEBUG”-D目标LINUX-D“CPPUNIT\u TUI\u版本”-D“STDC\u格式\u宏”\
$(foreach USRDEF,$(USRDEFS),-D“$(USRDEF)”)\
$(foreach USRUNDEF,$(USRUNDEFS),-U“$(USRUNDEF)”)
SDCFLAGS:=
SDCPPFLAGS:=-std=c++0x
CCFLAGS=$(SDFLAGS)-feexceptions-fvisibility=hidden-march=armv8-a-mtune=cortex-a53-o$(INTDIR)/$@
#这是给利纳罗和Snapdragon410(Q
NOTE: Resolving any missing task queue dependencies
ERROR: Nothing RPROVIDES 'librt' (but /home/james/Yocto/imx-yocto-bsp/sources/meta-imx/meta-sdk/recipes-fsl/images/imx-image-multimedia.bb RDEPENDS on or otherwise requires it)
NOTE: Runtime target 'librt' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['librt']
ERROR: Required build target 'imx-image-multimedia' has no buildable providers.
Missing or unbuildable dependency chain was: ['imx-image-multimedia', 'librt']
ERROR: Nothing RPROVIDES 'libpthread' (but /home/james/Yocto/imx-yocto-bsp/sources/meta-imx/meta-sdk/recipes-fsl/images/imx-image-multimedia.bb RDEPENDS on or otherwise requires it)
NOTE: Runtime target 'libpthread' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['libpthread']
ERROR: Required build target 'imx-image-multimedia' has no buildable providers.
Missing or unbuildable dependency chain was: ['imx-image-multimedia', 'libpthread']
#  Project             : OCA
#  Module              : Multiple components
#  Description         : Include file for C / CPP makefiles.
#

################################################################################
# Environment variable checking
################################################################################
#
# If one of the variables below is not set,
# calling make will result in a "missing separator" error.
#
ifeq ($(CAP_HOME),)
  variable CAP_HOME is not set
else
  CAP_HOME := $(patsubst %/,%,$(subst \,/,$(CAP_HOME)))
endif

################################################################################
# Variables
################################################################################
ifeq ($(NAME_MKE),)
  NAME_MKE := makefileOCA
endif
ifeq ($(IGNORE_MAKE_ERRORS),Y)
  PREFIX := -@
else
  ifneq ($(DISPLAY_MAKE_CMDS),Y)
    PREFIX := @
  endif
endif
EMPTY :=
SPACE := $(EMPTY) $(EMPTY)
#
# Only set variables when the makefile is called with an actual target
# (not a phony one).
#
ifneq ($(PLATFORM),)
  ifneq ($(RELEASE),)

    # Project home
    PRJ_HOME := $(CAP_HOME)

    # Src home
    SRC_HOME := $(PRJ_HOME)/Src

    # Include directories
    ifneq ($(USRINC),)
    INCDIRS := $(subst ; ,;,$(subst \,/,.;\
        $(SRC_HOME)/inc;\
        $(SRC_HOME)/lib/inc;\
        $(SRC_HOME)/common;\
        $(SRC_HOME)/common/OCA;\
        $(SRC_HOME)/common/HostInterface;\
        $(SRC_HOME)/platform;\
        $(SRC_HOME)/platform/common;\
        $(SRC_HOME)/adamson;\
        $(USRINC)))
    else
    INCDIRS := $(subst ; ,;,$(subst \,/,.;\
        $(SRC_HOME)/inc;\
        $(SRC_HOME)/lib/inc;\
        $(SRC_HOME)/common;\
        $(SRC_HOME)/common/OCA;\
        $(SRC_HOME)/common/HostInterface;\
        $(SRC_HOME)/platform;\
        $(SRC_HOME)/platform/common;\
        $(SRC_HOME)/adamson))
    endif

    # Output directories
    OBJDIR := Obj
    OBJINT := intermediate
    OUTDIR := $(subst \,/,$(PRJ_HOME))/$(OBJDIR)/$(PLATFORM)/$(RELEASE)
    ifeq ($(GINTDIR),)
        GINTDIR := $(OUTDIR)/$(OBJINT)
    endif
    INTDIR := $(GINTDIR)/$(NAME)

    # Tools
    SD := CC -M -MP -march=native
    SE := sed
    RC :=
    ifeq ($(OS),Windows_NT)
        RM := erase /F
        MD := mkdir
        RN := ren _PATH__OLDNAME_ _NEWNAME_
        RD := rd /s/q
    else
        RM := rm -f
        MD := mkdir -p
        RN := mv _PATH__OLDNAME_ _PATH__NEWNAME_
        RD := rm -rf
    endif

    # Commands
    ifeq ($(OS),Windows_NT)
        IFEXIST    := if exist _FILE_ _COMMAND_
        IFNOTEXIST := if not exist _FILE_ _COMMAND_
    else
        IFEXIST    := if [ -e "_FILE_" ]; then _COMMAND_; fi
        IFNOTEXIST := if [ ! -e "_FILE_" ]; then _COMMAND_; fi
    endif

    # Other OS dependent variables
    # Work around to make sure only a single backslash is set
    ifeq ($(OS),Windows_NT)
        PATH_SEP := $(subst \\,\,\\)
    else
        PATH_SEP := $(subst \\,/,/)
    endif

    ifeq ($(PLATFORM),winntApp)

      CXXFLAGS :=
      RCFLAGS := -I "$(subst ;," -I ",$(INCDIRS))"


### linuxRelease ###############################################################

      ifeq ($(RELEASE),Release)

        # Tools
        # CC := gcc

        # Determine the extensions for the target platform
        OBJ_EXT := o
        DEP_EXT := dep
        EXE_EXT :=
        LIB_EXT := a
        DLL_EXT := so

        # Lists
        OBJS := $(patsubst %.cpp,%.$(OBJ_EXT),$(SRCS) $(LINUXSRCS))
        OBJS := $(patsubst %.c,%.$(OBJ_EXT),$(OBJS))
        DEPS := $(patsubst %.$(OBJ_EXT),%.$(DEP_EXT),$(OBJS))
        LIBS := $(LIBS) $(LINUXLIBS) $(EXTERNAL_LIBS)
        LIBS := $(addsuffix .$(LIB_EXT), $(LIBS))
        LIBS := $(addprefix $(OUTDIR)/, $(LIBS))

        SDFLAGS := -O2 -nostdlib -fno-strict-aliasing -ffunction-sections -fdata-sections -c -Wall -Wno-unknown-pragmas -x none \
                   -I"$(subst ;," -I",$(INCDIRS))" \
                   -D"NDEBUG" -DTARGET_LINUX -D"CPPUNIT_TUI_VERSION" -D"__STDC_FORMAT_MACROS" \
                   $(foreach USRDEF,$(USRDEFS),-D"$(USRDEF)") \
                   $(foreach USRUNDEF,$(USRUNDEFS),-U"$(USRUNDEF)")
        SDCFLAGS :=
        SDCPPFLAGS := -std=c++0x
        CCFLAGS = $(SDFLAGS) -fexceptions -fvisibility=hidden -march=armv8-a -mtune=cortex-a53 -o $(INTDIR)/$@
# That's for Linaro and the Snapdragon410 (Qualcomm APQ8016) processor; next is for Ubuntu 18.04.1
#       CCFLAGS = $(SDFLAGS) -fexceptions -fvisibility=hidden -m64 -mtune=generic -o $(INTDIR)/$@
        CXXFLAGS := -std=gnu++0x

        ifeq ($(TYPE),EXE)
          OUT_EXT := $(EXE_EXT)
          # LD := gcc
          LD := aarch64-poky-linux-ld
#         LDFLAGS = -Wl,--gc-sections -fno-keep-static-consts -fexceptions -march=armv8-a -maarch64linux -L$(OUTDIR) -o$@
# Use the above -Wl when using gcc. When using ld directly, it doesn't take -Wl. aarch64-poky-linux-ld doesn't have the -f options.
          LDFLAGS = --gc-sections -march=armv8-a -maarch64linux -L$(OUTDIR) -o$@
# That's for Linaro and the Snapdragon410 (Qualcomm APQ8016) processor; next is for Ubuntu 18.04.1
#         LDFLAGS = -Wl,--gc-sections -fno-keep-static-consts -fexceptions -m64 -mtune=x86-64 -L$(OUTDIR) -o$@
          LINUXSYSTEMLIBS := -lstdc++ -lrt -lpthread $(addprefix -l, $(LINUXSYSTEMLIBS))
        endif
        ifeq ($(TYPE),LIB)
          OUT_EXT := $(LIB_EXT)
          # LD := ar
          LDFLAGS = crus $@
        endif
        ifeq ($(TYPE),DLL)
          OUT_EXT := $(DLL_EXT)
          # LD := gcc
          LD := aarch64-poky-linux-ld
#         LDFLAGS = -Wl,--gc-sections -export-dynamic -fno-keep-static-consts -fexceptions -march=armv8-a -maarch64linux -L$(OUTDIR) -o$@
# Use the above -Wl when using gcc. When using ld directly, it doesn't take -Wl. aarch64-poky-linux-ld doesn't have the -f options.
          LDFLAGS = --gc-sections -export-dynamic -march=armv8-a -maarch64linux -L$(OUTDIR) -o$@
# That's for Linaro and the Snapdragon410 (Qualcomm APQ8016) processor; next is for Ubuntu 18.04.1
#         LDFLAGS = -Wl,--gc-sections -export-dynamic -fno-keep-static-consts -fexceptions -m64 -mtune=x86-64 -L$(OUTDIR) -o$@
          LINUXSYSTEMLIBS := -lstdc++ -lrt -lpthread $(addprefix -l, $(LINUXSYSTEMLIBS))
        endif
      endif

    endif #ifeq ($(PLATFORM),linuxApp)

  endif #ifneq ($(RELEASE),)
endif #ifneq ($(PLATFORM),)

################################################################################
# Phony target specification
################################################################################
.PHONY: goal all clean phonyclean $(NAME)\
        winntDebug winntRelease \
        winntDebug64 winntRelease64 \
        winntDebugClean winntReleaseClean \
        winntDebug64Clean winntRelease64Clean \
        linuxDebug linuxRelease \
        linuxDebugClean linuxReleaseClean

################################################################################
# Targets
################################################################################
goal: winntDebug winntRelease

all: winntDebug winntRelease \
     winntDebug64 winntRelease64

clean: winntDebugClean winntReleaseClean \
       winntDebug64Clean winntRelease64Clean

linuxRelease:
  ifneq (,$(findstring linux,$(TARGETS)))
    $(PREFIX)$(MAKE) -f $(NAME_MKE) $(NAME) --no-print-directory PLATFORM=linuxApp RELEASE=Release
  else
    $(PREFIX)echo $@ not configured for $(NAME)
  endif

linuxReleaseClean:
  ifneq (,$(findstring linux,$(TARGETS)))
    $(PREFIX)$(MAKE) -f $(NAME_MKE) phonyclean --no-print-directory PLATFORM=linuxApp RELEASE=Release CLEAN=Yes
  else
    $(PREFIX)echo linuxRelease not configured for $(NAME)
  endif

### Dependency files ###########################################################

$(INTDIR)/%.$(DEP_EXT) : %.c
    $(PREFIX)echo $(@F)
    $(PREFIX)$(subst _FILE_,$(subst /,$(PATH_SEP),$@),$(subst _COMMAND_,$(RM) $(subst /,$(PATH_SEP),$@),$(IFEXIST)))
    $(PREFIX)$(subst _FILE_,$(subst /,$(PATH_SEP),$@.tmp),$(subst _COMMAND_,$(RM) $(subst /,$(PATH_SEP),$@.tmp),$(IFEXIST)))
    $(PREFIX)$(subst _FILE_,$(subst /,$(PATH_SEP),$(GINTDIR)),$(subst _COMMAND_,$(MD) $(subst /,$(PATH_SEP),$(GINTDIR)),$(IFNOTEXIST)))
    $(PREFIX)$(subst _FILE_,$(subst /,$(PATH_SEP),$(INTDIR)),$(subst _COMMAND_,$(MD) $(subst /,$(PATH_SEP),$(INTDIR)),$(IFNOTEXIST)))
  #
  # Do not use (OBJ_EXT) in the SED command, since all dependencies are generated with gcc.
  # Use .o instead
  #
    $(PREFIX)$(SD) $(SDCFLAGS) $(SDFLAGS) $< | $(SE) "s/$*.o:/$*.$(OBJ_EXT) $(subst /,\/,$@):/" > $(subst /,$(PATH_SEP),$@.tmp)
    $(PREFIX)$(subst _PATH_,$(subst /,$(PATH_SEP),$(INTDIR)/),$(subst _OLDNAME_,$(@F).tmp,$(subst _NEWNAME_,$(@F),$(RN))))

$(INTDIR)/%.$(DEP_EXT) : %.cpp
    $(PREFIX)echo $(@F)
    $(PREFIX)$(subst _FILE_,$(subst /,$(PATH_SEP),$@),$(subst _COMMAND_,$(RM) $(subst /,$(PATH_SEP),$@),$(IFEXIST)))
    $(PREFIX)$(subst _FILE_,$(subst /,$(PATH_SEP),$@.tmp),$(subst _COMMAND_,$(RM) $(subst /,$(PATH_SEP),$@.tmp),$(IFEXIST)))
    $(PREFIX)$(subst _FILE_,$(subst /,$(PATH_SEP),$(GINTDIR)),$(subst _COMMAND_,$(MD) $(subst /,$(PATH_SEP),$(GINTDIR)),$(IFNOTEXIST)))
    $(PREFIX)$(subst _FILE_,$(subst /,$(PATH_SEP),$(INTDIR)),$(subst _COMMAND_,$(MD) $(subst /,$(PATH_SEP),$(INTDIR)),$(IFNOTEXIST)))
  #
  # Do not use (OBJ_EXT) in the SED command, since all dependencies are generated with gcc.
  # Use .o instead
  #
    $(PREFIX)$(SD) $(SDCPPFLAGS) $(SDFLAGS) $< | $(SE) "s/$*.o:/$*.$(OBJ_EXT) $(subst /,\/,$@):/" > $(subst /,$(PATH_SEP),$@.tmp)
    $(PREFIX)$(subst _PATH_,$(subst /,$(PATH_SEP),$(INTDIR)/),$(subst _OLDNAME_,$(@F).tmp,$(subst _NEWNAME_,$(@F),$(RN))))

### Object files ###############################################################

%.$(OBJ_EXT) : %.asm
    $(PREFIX)echo $(@F)
    $(PREFIX)$(AS) $(ASFLAGS) $<

%.$(OBJ_EXT) : %.S
    $(PREFIX)echo $(@F)
    $(PREFIX)$(AS) $(ASFLAGS) $<

%.$(RES_EXT) : %.rc
    $(PREFIX)echo $(@F)
    $(PREFIX)"$(RC)" $(RCFLAGS) -fo "$(INTDIR)/$(@F)" $<

%.$(OBJ_EXT) : %.c $(TOOL_DEPS)
  ifneq ($(CC),cl.exe)
    $(PREFIX)echo $(@F)
  endif
    $(PREFIX)$(subst _FILE_,$(subst /,$(PATH_SEP),$(INTDIR)/$@),$(subst _COMMAND_,$(RM) $(subst /,$(PATH_SEP),$(INTDIR)/$@),$(IFEXIST)))
    $(PREFIX)$(subst _FILE_,$(subst /,$(PATH_SEP),$(INTDIR)),$(subst _COMMAND_,$(MD) $(subst /,$(PATH_SEP),$(INTDIR)),$(IFNOTEXIST)))
    $(PREFIX)$(CC) $(CCFLAGS) $<

%.$(OBJ_EXT) : %.cpp $(TOOL_DEPS)
  ifneq ($(CC),cl.exe)
    $(PREFIX)echo $(@F)
  endif
    $(PREFIX)$(subst _FILE_,$(subst /,$(PATH_SEP),$(INTDIR)/$@),$(subst _COMMAND_,$(RM) $(subst /,$(PATH_SEP),$(INTDIR)/$@),$(IFEXIST)))
    $(PREFIX)$(subst _FILE_,$(subst /,$(PATH_SEP),$(INTDIR)),$(subst _COMMAND_,$(MD) $(subst /,$(PATH_SEP),$(INTDIR)),$(IFNOTEXIST)))
    $(PREFIX)$(CC) $(CCFLAGS) $(CXXFLAGS) $<

### Output file ################################################################

$(NAME): $(OUTFILE) $(BINFILE)

$(OUTFILE): $(INTDIR)/$(NAME).x $(OBJS) $(LIBS) $(NAME_MKE)
    $(PREFIX)echo $@
    $(PREFIX)$(subst _FILE_,$@,$(subst _COMMAND_,$(RM) $@,$(IFEXIST)))
    $(PREFIX)$(subst _FILE_,$(subst /,$(PATH_SEP),$(OUTDIR)),$(subst _COMMAND_,$(MD) $(subst /,$(PATH_SEP),$(OUTDIR)),$(IFNOTEXIST)))
    ifneq (,$(findstring $(OBJINT),$(OBJS)))
        $(foreach obj,$(OBJS),$(shell echo $(obj) >> $(LSTFILE)))
    else
        $(foreach obj,$(OBJS),$(shell echo $(subst /,$(PATH_SEP),$(INTDIR)/$(obj)) >> $(LSTFILE)))
    endif
    ifneq (,$(filter $(PLATFORM),linuxApp))
      ifeq ($(TYPE),LIB)    
    $(PREFIX)ar $(LDFLAGS) @$(LSTFILE) $(LIBS) $(LINUXSYSTEMLIBS)
      else
        ifeq ($(TYPE),EXE)    
        $(PREFIX)aarch64-poky-linux-ld $(LDFLAGS) @$(LSTFILE) $(LIBS) $(LINUXSYSTEMLIBS)
        else
          ifeq ($(TYPE),DLL)    
        $(PREFIX)aarch64-poky-linux-ld $(LDFLAGS) @$(LSTFILE) $(LIBS) $(LINUXSYSTEMLIBS)
          else
        $(PREFIX)LD $(LDFLAGS) @$(LSTFILE) $(LIBS) $(LINUXSYSTEMLIBS)
          endif
        endif
      endif
    else
      ifeq ($(PLATFORM),winntApp)
        $(PREFIX)$(LD) $(LDFLAGS) @$(LSTFILE) $(WINNTSYSTEMLIBS)
      else
        $(PREFIX)$(LD) $(LDFLAGS) @$(LSTFILE)
      endif
    endif
    $(PREFIX)$(subst _FILE_,$(LSTFILE),$(subst _COMMAND_,$(RM) $(LSTFILE),$(IFEXIST)))

$(BINFILE): $(OUTFILE)
    $(PREFIX)echo $@
    $(PREFIX)$(B2B) $(B2BFLAGS) $(OUTFILE) $(BINFILE)

$(INTDIR)/$(NAME).x:
    $(PREFIX)$(subst _FILE_,$(subst /,$(PATH_SEP),$(INTDIR)),$(subst _COMMAND_,$(MD) $(subst /,$(PATH_SEP),$(INTDIR)),$(IFNOTEXIST)))
    $(PREFIX)echo Checkpoint file for component $(NAME) > $(subst /,$(PATH_SEP),$@)

### Clean ######################################################################

phonyclean:
  ifneq ($(PLATFORM),)
    ifneq ($(RELEASE),)
    $(PREFIX)$(subst _FILE_,$(subst /,$(PATH_SEP),$(INTDIR)),$(subst _COMMAND_,$(RD) $(subst /,$(PATH_SEP),$(INTDIR)),$(IFEXIST)))
    $(PREFIX)$(subst _FILE_,$(patsubst %.$(OUT_EXT),%.pdb,$(OUTFILE)),$(subst _COMMAND_,$(RM) $(patsubst %.$(OUT_EXT),%.pdb,$(OUTFILE)),$(IFEXIST)))
    $(PREFIX)$(subst _FILE_,$(patsubst %.$(OUT_EXT),%.map,$(OUTFILE)),$(subst _COMMAND_,$(RM) $(patsubst %.$(OUT_EXT),%.map,$(OUTFILE)),$(IFEXIST)))
    $(PREFIX)$(subst _FILE_,$(patsubst %.$(OUT_EXT),%.dat,$(OUTFILE)),$(subst _COMMAND_,$(RM) $(patsubst %.$(OUT_EXT),%.dat,$(OUTFILE)),$(IFEXIST)))
    $(PREFIX)$(subst _FILE_,$(patsubst %.$(OUT_EXT),%.exp,$(OUTFILE)),$(subst _COMMAND_,$(RM) $(patsubst %.$(OUT_EXT),%.exp,$(OUTFILE)),$(IFEXIST)))
    $(PREFIX)$(subst _FILE_,$(patsubst %.$(OUT_EXT),%.lib,$(OUTFILE)),$(subst _COMMAND_,$(RM) $(patsubst %.$(OUT_EXT),%.lib,$(OUTFILE)),$(IFEXIST)))
    $(PREFIX)$(subst _FILE_,$(patsubst %.$(OUT_EXT),%.err,$(OUTFILE)),$(subst _COMMAND_,$(RM) $(patsubst %.$(OUT_EXT),%.err,$(OUTFILE)),$(IFEXIST)))
    $(PREFIX)$(subst _FILE_,$(OUTFILE),$(subst _COMMAND_,$(RM) $(OUTFILE),$(IFEXIST)))
    else
    $(PREFIX)echo Target $@ should not be used from command line
    endif
  else
    $(PREFIX)echo Target $@ should not be used from command line
  endif

################################################################################
# Include dependency files
################################################################################
ifneq ($(PLATFORM),)
  ifneq ($(RELEASE),)
    #
    # If cleaning, we must not include dependency files.
    # Otherwise they will be created before cleaning.
    #
    ifeq ($(CLEAN),)
      ifeq (,$(findstring $(OBJINT),$(OBJS)))
        #
        # Use a - in front of the include, otherwise make will complain
        # when it is ran the first time (when there are no .dep files).
        #
        -include $(patsubst %.$(DEP_EXT),$(INTDIR)/%.$(DEP_EXT),$(DEPS))
      endif
    endif
  endif
endif
DEPENDS = "mdns"
DEPENDS += "my-extralib"

# Change eventually the default source directory
S = "${WORKDIR}/git"

EXTRA_OEMAKE = " 'CC=${CC}' \
    'CFLAGS=${CFLAGS} ${TARGET_CC_ARCH} -I${S}/inc -I${STAGING_DIR_TARGET}${includedir}/my-extralib-include' \
    'LDFLAGS=-lrt -lpthread -lm -lmy-extralib -L${STAGING_DIR_TARGET}${libdir}/my-extralib-libdir' \
    'BUILDDIR=${S}' \
    'OTHER_DEFINE=${OTHER_YOCTO_VAR}' \
"
do_compile() {
    # modify the Makefile on the fly as an example
    cp ${S}/Makefile.orig ${S}/Makefile
    sed -i -e 's:= $(LDFLAGS):?= $(LDFLAGS):' ${S}/Makefile
    oe_runmake SOME_OVERRIDE='some-override'
}
do_configure[noexec] = "1"