顶层makefile

COMMON_TARGETS        := pan utils

COMMON_TARGETS    += tools testcases/ddt
COMMON_TARGETS    += testcases/kernel/timers
COMMON_TARGETS    += testcases/kernel/ipc
COMMON_TARGETS    += testcases/kernel/mem
COMMON_TARGETS    += testcases/kernel/lib
COMMON_TARGETS    += testcases/kernel/syscalls
COMMON_TARGETS    += testcases/kernel/security
COMMON_TARGETS    += testcases/kernel/sched
COMMON_TARGETS    += testcases/kernel/hotplug
COMMON_TARGETS    += testcases/misc/math
COMMON_TARGETS    += testcases/lib
COMMON_TARGETS    += testcases/realtime
COMMON_TARGETS    += testcases/cve
COMMON_TARGETS    += testcases/commands/keyctl

需要编译的目标,可以在此处注释掉,不进行编译,最终目标文件夹会小很多(只编译pan utils tools testcases/ddt 和testcases/lib 54MB)

all: $(addsuffix -all,$(COMMON_TARGETS)) Version

$(MAKE_TARGETS): lib-all

$(MAKE_TARGETS) include-all lib-all:
    $(MAKE) -C "$(subst -all,,$@)" \
        -f "$(abs_top_srcdir)/$(subst -all,,$@)/Makefile" all

先编译lib,之后按照COMMON_TARGETS  顺序逐一编译。

./testcases:

top_srcdir        ?= ..

include $(top_srcdir)/include/mk/env_pre.mk

FILTER_OUT_DIRS        := kdump

ifneq ($(WITH_OPEN_POSIX_TESTSUITE),yes)
FILTER_OUT_DIRS        += open_posix_testsuite
endif

ifneq ($(WITH_REALTIME_TESTSUITE),yes)
FILTER_OUT_DIRS        += realtime
endif

include $(top_srcdir)/include/mk/generic_trunk_target.mk # 包含generic_trunk_target.inc 中包含all:

./testcases/ddt:

top_srcdir        ?= ../..

include $(top_srcdir)/include/mk/env_pre.mk

include $(top_srcdir)/include/mk/generic_trunk_target.mk

./testcases/ddt/i2c_test_suite:

top_srcdir              ?= ../../..

include $(top_srcdir)/include/mk/env_pre.mk

KERNEL_DIR        := $(patsubst %/include,%,$(KERNEL_INC))
INSTALL_DIR             := testcases/bin/ddt

FILTER_OUT_DIRS         :=

# We don't want to copy over the Makefile
UNWANTED_FILES          := Makefile

INSTALL_MODE            := 00755

#INSTALL_TARGETS         := $(filter-out $(UNWANTED_FILES),$(notdir $(patsubst $(abs_srcdir)/%,%,$(wildcard $(abs_srcdir)/*))))

CFLAGS          += -g -Wall -O1 -fomit-frame-pointer
LDFLAGS         += -g -static
INCLUDES        = -I $(KERNEL_USR_INC) -I src/interface/common -I ../utils/user

#List of source files- Update this on adding a new C file
SOURCES := \
        ../utils/user/st_timer.c \
        ../utils/user/st_cpu_load.c \
        src/testcases/st_i2c_eeprom.c \
        src/interface/common/st_i2c_common.c \
        src/parser/st_i2c_parser.c

MAKE_TARGETS            := i2c_tests

i2c_tests:
    $(CC) $(CFLAGS) $(LDFLAGS) -o i2c_tests ${INCLUDES} ${SOURCES}

include $(top_srcdir)/include/mk/generic_leaf_target.mk #包含generic_leaf_target.inc 中包含all:

./testcases/ddt/scripts

top_srcdir        ?= ../../..

include $(top_srcdir)/include/mk/env_pre.mk

# Define directories to exclude from build/installation
#FILTER_OUT_DIRS        := kdump

include $(top_srcdir)/include/mk/generic_trunk_target.mk

./testcases/ddt/scripts/eth

top_srcdir        ?= ../../../..

include $(top_srcdir)/include/mk/env_pre.mk

INSTALL_DIR        := testcases/bin/ddt/$(notdir $(CURDIR:%/=%))

FILTER_OUT_DIRS         :=

# We don't want to copy over the Makefile
UNWANTED_FILES        := Makefile

INSTALL_MODE        := 00755

INSTALL_TARGETS        := $(filter-out $(UNWANTED_FILES),$(notdir $(patsubst $(abs_srcdir)/%,%,$(wildcard $(abs_srcdir)/*)))) #shell脚本只需要install 不要gcc

MAKE_TARGETS        :=

include $(top_srcdir)/include/mk/generic_leaf_target.mk #最底层文件夹用leaf

./testcases/kernel:

top_srcdir        ?= ../..

include $(top_srcdir)/include/mk/env_pre.mk

# NOTE (garrcoop): mce-test isn't integrated into the build.

# Build syscalls in all scenarios.
SUBDIRS            := syscalls

# Build lib
SUBDIRS            += lib

ifneq ($(UCLINUX),1)
# KEEP THIS LIST ALPHABETIZED PLEASE!
SUBDIRS            += connectors \
               containers \
               controllers \
               device-drivers \
               firmware \
               fs \
               hotplug \
               input \
               io \
               ipc \
               logging \
               mem \
               numa \
               pty \
               sched \
               security \
               timers \
               tracing \
               module \

ifeq ($(WITH_POWER_MANAGEMENT_TESTSUITE),yes)
SUBDIRS            += power_management
endif

endif

ifeq ($(ANDROID),1)
FILTER_OUT_DIRS        += containers controllers device-drivers fs io ipc mem \
                sched security timers
endif

include $(top_srcdir)/include/mk/generic_trunk_target.mk

./testcases/kernel/syscalls

top_srcdir        ?= ../../..

include    $(top_srcdir)/include/mk/env_pre.mk

ifeq ($(UCLINUX),1)
FILTER_OUT_DIRS    += capget capset chmod chown clone fork getcontext llseek \
           mincore mprotect nftw profil remap_file_pages sbrk
endif

ifeq ($(UCLIBC),1)
FILTER_OUT_DIRS    += profil
endif

ifeq ($(ANDROID), 1)
FILTER_OUT_DIRS    += \
    accept4 adjtimex cma confstr fcntl fmtmsg futex getcontext getcpu \
    getdomainname getdtablesize gethostid getgroups get_mempolicy ipc \
    linkat kill mallopt memmap mq_notify mq_open mq_timedreceive \
    mq_timedsend mq_unlink mmap mremap open openat profil ptrace quotactl \
    readahead remap_file_pages rt_sigsuspend rt_sigtimedwait \
    sched_getaffinity sched_setaffinity sendmsg setgroups setns sighold \
    sigrelse sigsuspend sigtimedwait sigwait sigwaitinfo stime \
    setdomainname sethostname symlinkat ulimit ustat vfork vhangup vmsplice
endif

include $(top_srcdir)/include/mk/generic_trunk_target.mk

./testcases/kernel/syscalls/alarm

top_srcdir        ?= ../../../..

include $(top_srcdir)/include/mk/testcases.mk

include $(top_srcdir)/include/mk/generic_leaf_target.mk

ltp-ddt的makefile结构的更多相关文章

  1. 模仿u-boot的makefile结构

    u-boot(2014.04)是通过顶层makefile调用各子目录中的makefile来实现整个工程的编译的,实际上子目录的makefile是include进来的.这里仿照这种结构写个模板测试一下. ...

  2. LTP介绍

    1.LTP介绍    LTP--linut test project ,ltp套件是由Linux Test Project所开发的一套系统測试套件.它基于系统资源的利用率统计开发了一个測试的组合,为系 ...

  3. (三)openwrt主Makefile解析

    本周成胖子每周一博到了第四周^_^ 前言 主Makefile结构 顶层 第二层 尾记 前言 前一篇,我们大概描述了整个镜像文件的生成过程.本周我们来解析主Makefile,看看主要编译过程是怎么产生的 ...

  4. tiny210——uboot移植Makefile文章分析

    这东西已经写,我们没有时间发布,如今,终于有时间稍微长送记录汇总uboot学习过程.具体了.以后忘了也能够再温习回来嘛有些特殊字符显示得乱掉了 Makefile追踪技巧: 技巧1:能够先从编译目标開始 ...

  5. 开源中文分词工具探析(七):LTP

    LTP是哈工大开源的一套中文语言处理系统,涵盖了基本功能:分词.词性标注.命名实体识别.依存句法分析.语义角色标注.语义依存分析等. [开源中文分词工具探析]系列: 开源中文分词工具探析(一):ICT ...

  6. Makefile的制作

    一个工程中的源文件不计其数,其按类型.功能.模块分别放在若干个目录中,makefile定义系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因 ...

  7. Makefile 文件怎么写

    跟我一起写Makefile:MakeFile介绍 Makefile 使用总结 1. make 命令与 Makefile 文件 在 Linux 平台,执行 make 命令时,会在当前目录下寻找 Make ...

  8. LibOpenCM3(二) 项目模板 Makefile分析

    目录 LibOpenCM3(一) Linux下命令行开发环境配置 LibOpenCM3(二) 项目模板 Makefile分析 LibOpenCM3 项目模板 项目模板地址: https://githu ...

  9. GNU MAKE指南

    GNU make 指南 翻译: 哈少 译者按: 本文是一篇介绍 GNU Make 的文章,读完后读者应该基本掌握了 make 的用法.而 make 是所有想在 Unix (当然也包括 Linux )系 ...

随机推荐

  1. 尾递归与Continuation(转载)

    递归与尾递归 关于递归操作,相信大家都已经不陌生.简单地说,一个函数直接或间接地调用自身,是为直接或间接递归.例如,我们可以使用递归来计算一个单向链表的长度: public class Node { ...

  2. 基于nodejs的 本地文件夹http服务器:http-server

    请记住,是文件夹服务器 $ npm install http-server -g $ cd /tmp && http-server 或: $ http-server /tmp

  3. 【Java】-NO.16.EBook.4.Java.1.012-【疯狂Java讲义第3版 李刚】- Swing

    1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.011-[疯狂Java讲义第3版 李刚]-  Swing Style:EBook Series:Jav ...

  4. 带上RESTful的金手铐,你累吗?

    1. 首先RESTful是一套规范,不是框架,它是来约束你的.也不关心生产效率的提高.就好像使用汇编开发应用,性能是快了,但是生产效率很低.RESTful它需要你在路由上定义很多规则来解释的URL,假 ...

  5. CentOS7 开放服务端口

    CentOS 7 默认是firewall防火墙 如果你想让一个web服务可以被其它机子访问,就得开放这个服务的端口,不然就会被拦截 1. 开放端口命令 firewall-cmd --add-port= ...

  6. MSSqlServer 主从同步复制原理(发布/订阅)

    基本模型 1.发布类型: 快照发布:用于为事务复制和合并复制提供初始数据集:在适合数据完全刷新时也可以使用快照复制.利用这三种复制,SQL Server 提供功能强大且灵活的系统,以便使企业范围内的数 ...

  7. 图像控件 ImageControl

    图像控件 书:164 <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns: ...

  8. kettle杂记

    版本8.0,以下是我在使用kettle时候的一些小tips 1.“插入/更新”必须指定字段,“表输出”无需指定字段,但是源表的字段必须包含在目标表中,否则unknown colum! 2.连接数据库时 ...

  9. Codeforces Round #322 (Div. 2) E F

    E. Kojiro and Furrari 题意说的是 在一条直线上 有n个加油站, 每加一单位体积的汽油 可以走1km 然后每个加油站只有一种类型的汽油,汽油的种类有3种 求从起点出发到达终点要求使 ...

  10. JavaScript--定时器setTimeout()、clearTimeout(var param)和setInterval()、clearInterval(var param)

    1.setTimeout().clearTimeout(var param) setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式,只调用一次 clearTimeout() 方法可取 ...