📄 makedep
字号:
#! /usr/bin/perl
#
# TOPPERS/JSP Kernel
# Toyohashi Open Platform for Embedded Real-Time Systems/
# Just Standard Profile Kernel
#
# Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
# Toyohashi Univ. of Technology, JAPAN
# Copyright (C) 2004-2005 by Embedded and Real-Time Systems Laboratory
# Graduate School of Information Science, Nagoya Univ., JAPAN
#
# 忋婰挊嶌尃幰偼丆埲壓偺 (1)乣(4) 偺忦審偐丆Free Software Foundation
# 偵傛偭偰岞昞偝傟偰偄傞 GNU General Public License 偺 Version 2 偵婰
# 弎偝傟偰偄傞忦審傪枮偨偡応崌偵尷傝丆杮僜僼僩僂僃傾乮杮僜僼僩僂僃傾
# 傪夵曄偟偨傕偺傪娷傓丏埲壓摨偠乯傪巊梡丒暋惢丒夵曄丒嵞攝晍乮埲壓丆
# 棙梡偲屇傇乯偡傞偙偲傪柍彏偱嫋戻偡傞丏
# (1) 杮僜僼僩僂僃傾傪僜乕僗僐乕僪偺宍偱棙梡偡傞応崌偵偼丆忋婰偺挊嶌
# 尃昞帵丆偙偺棙梡忦審偍傛傃壓婰偺柍曐徹婯掕偑丆偦偺傑傑偺宍偱僜乕
# 僗僐乕僪拞偵娷傑傟偰偄傞偙偲丏
# (2) 杮僜僼僩僂僃傾傪丆儔僀僽儔儕宍幃側偳丆懠偺僜僼僩僂僃傾奐敪偵巊
# 梡偱偒傞宍偱嵞攝晍偡傞応崌偵偼丆嵞攝晍偵敽偆僪僉儏儊儞僩乮棙梡
# 幰儅僯儏傾儖側偳乯偵丆忋婰偺挊嶌尃昞帵丆偙偺棙梡忦審偍傛傃壓婰
# 偺柍曐徹婯掕傪宖嵹偡傞偙偲丏
# (3) 杮僜僼僩僂僃傾傪丆婡婍偵慻傒崬傓側偳丆懠偺僜僼僩僂僃傾奐敪偵巊
# 梡偱偒側偄宍偱嵞攝晍偡傞応崌偵偼丆師偺偄偢傟偐偺忦審傪枮偨偡偙
# 偲丏
# (a) 嵞攝晍偵敽偆僪僉儏儊儞僩乮棙梡幰儅僯儏傾儖側偳乯偵丆忋婰偺挊
# 嶌尃昞帵丆偙偺棙梡忦審偍傛傃壓婰偺柍曐徹婯掕傪宖嵹偡傞偙偲丏
# (b) 嵞攝晍偺宍懺傪丆暿偵掕傔傞曽朄偵傛偭偰丆TOPPERS僾儘僕僃僋僩偵
# 曬崘偡傞偙偲丏
# (4) 杮僜僼僩僂僃傾偺棙梡偵傛傝捈愙揑傑偨偼娫愙揑偵惗偠傞偄偐側傞懝
# 奞偐傜傕丆忋婰挊嶌尃幰偍傛傃TOPPERS僾儘僕僃僋僩傪柶愑偡傞偙偲丏
#
# 杮僜僼僩僂僃傾偼丆柍曐徹偱採嫙偝傟偰偄傞傕偺偱偁傞丏忋婰挊嶌尃幰偍
# 傛傃TOPPERS僾儘僕僃僋僩偼丆杮僜僼僩僂僃傾偵娭偟偰丆偦偺揔梡壜擻惈傕
# 娷傔偰丆偄偐側傞曐徹傕峴傢側偄丏傑偨丆杮僜僼僩僂僃傾偺棙梡偵傛傝捈
# 愙揑傑偨偼娫愙揑偵惗偠偨偄偐側傞懝奞偵娭偟偰傕丆偦偺愑擟傪晧傢側偄丏
#
# @(#) $Id: makedep,v 1.1 2006/04/14 02:46:33 9564907 Exp $
#
require "getopt.pl";
# 僆僾僔儑儞偺掕媊
#
# -C <cc_path> C僐儞僷僀儔偺僐儅儞僪柤
# -O <cc_opts> C僐儞僷僀儔/CPP偵搉偡僆僾僔儑儞
#
# -X 僜乕僗僼傽僀儖傪嫮惂揑偵C僿僢僟僼傽僀儖偲尒側偡
#
# -T <target> 僞乕僎僢僩偺僼傽僀儖柤
# -D <t_dir> 僞乕僎僢僩偺僨傿儗僋僩儕柤傪巜掕偡傞
# -d 僞乕僎僢僩偺僨傿儗僋僩儕晹傪曐帩偡傞
# -s 僞乕僎僢僩偺僒僼傿僢僋僗傪 ".s" 偵偡傞乮僨僼僅儖僩偼 ".o"乯
#
# 僆僾僔儑儞偺張棟
#
do Getopt("COTD");
$cc_path = $opt_C;
$cc_opts = $opt_O;
$suffix = $opt_s ? "s" : "o";
if ($opt_T) {
$target_file = $opt_T;
}
elsif ($opt_D) {
$target_dir = $opt_D;
}
elsif (!$opt_d) {
$target_dir = "";
}
#
# %dependlist 偵嶌傜傟偨埶懚娭學傪弌椡偡傞
#
sub output_dependlist {
local($file) = @_;
local($target, $column, $len);
if ($target_file) {
$target = $target_file;
}
else {
$target = $file;
$target =~ s/(.*)\.(.)/$1.$suffix/;
}
if (defined($target_dir)) {
$target =~ s/^.*\/([^\/]+)$/$1/;
if ($target_dir) {
$target = $target_dir."/".$target;
}
}
print $target, ": ";
$column = length($target) + 2;
foreach $file (keys(%dependlist)) {
$len = length($file) + 1;
if ($column > 8 && $column + $len >= 70) {
print "\\\n\t";
$column = 8;
}
$column += $len;
print "$file ";
}
print "\n";
}
#
# $file 偺埶懚娭學傪 %dependlist 偵嶌傞
#
sub makedepend_one {
local($file) = @_;
local($command, $input, $dir, $filename);
$command = "$cc_path -E $cc_opts";
if ($opt_X) {
$command .= " -x c-header";
}
unless (open(INPUT, "$command $file |")) {
print STDERR "makedep: can't open $file\n";
exit(1);
}
while ($line = <INPUT>) {
if ($line =~ /^\#\s*([0-9]+)\s*\"([^\"]+)\"/) {
$filename = $2;
$filename =~ s/ /\\ /;
if ($filename !~ /^\<.*\>$/ && $filename !~ /\/$/) {
$dependlist{$filename} = 1;
}
}
}
unless (close(INPUT)) {
print STDERR "makedep: can't execute $command\n";
exit(1);
}
}
#
# 儊僀儞儖乕僠儞
#
foreach $file (@ARGV) {
%dependlist = ();
do makedepend_one($file);
do output_dependlist($file) if (%dependlist);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -