⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mkmf

📁 这是国外的resip协议栈
💻
📖 第 1 页 / 共 2 页
字号:
	my $exec = $src; $exec =~ s/$source_ext_re/$exec_extension/i;	my $obj = $src;  $obj  =~ s/$source_ext_re/$object_extension/i;	my $mkexec; chomp($mkexec = `$^X $clo{'cxxflags'} --mkexec $exec`);	print MF "$exec: $obj\n";	print MF "\t\$(LD) $mkexec $obj \$(LDFLAGS) \$(POST_LDFLAGS)\n";	print MF "\n";    }} elsif ($clo{'static-lib'} or $clo{'shared-lib'}) {	my $static_target = $static_lib_prefix . $clo{'static-lib'} . $static_lib_extension;	my $shared_target = $shared_lib_prefix . $clo{'shared-lib'} . $shared_lib_extension;	my $targets = '';	my $static_lib = `$^X $clo{'cxxflags'} --mkstatic $static_target`;	chomp($static_lib); clean($static_lib);	my $shared_lib = `$^X $clo{'cxxflags'} --major $clo{'major'} --mkshared $shared_target`;	chomp($shared_lib); clean($shared_lib);	$targets .= "$static_target " if $clo{'static-lib'};	$targets .= "$shared_target " if $clo{'shared-lib'};	print MF "TARGETS=$targets\n\n";	print MF "all: \$(TARGETS)\n\n";    if ($clo{'static-lib'}) {	print MF "$static_target: \$(OBJECTS)\n";	print MF "\t\$(AR) \$(ARFLAGS) $static_lib \$(OBJECTS)\n";	print MF "\t$arextra $static_lib\n" if length($arextra);	print MF "\n";    }    if ($clo{'shared-lib'}) {	print MF "$shared_target: \$(OBJECTS)\n";	print MF "\t\$(SAR) \$(SARFLAGS) $shared_lib \$(OBJECTS) \$(POST_LDFLAGS)\n";	print MF "\n";    }} elsif ($clo{'wrapper'}) {    $clo{'with-test'} ||= join(',', @ARGV);    print MF "\n";    print MF "all:\n";    foreach my $dir (@ARGV) {	print MF "\t\@(cd $dir; \${MAKE})\n";    }    print MF "\n";    print MF "clean: ", join(' ', @{$clo{'clean-target'}}), "\n";    print MF "\t- $rmf ", join(' ', @{$clo{'clean-file'}}), "\n" if @{$clo{'clean-file'}};    foreach my $dir (@ARGV) {	print MF "\t\@(cd $dir; \${MAKE} clean)\n";    }    print MF "\n";    print MF "realclean:\n";    foreach my $dir (@ARGV) {	print MF "\t\@(cd $dir; \${MAKE} realclean)\n";    }    print MF "\trm -f $clo{'output'}\n";    print MF "\n";    if ($clo{'with-test'}) {	print MF "test:\n";	foreach my $dir (split(/\s*,\s*/, $clo{'with-test'})) {	    print MF "\t\@(cd $dir; \${MAKE} test)\n";	}	print MF "\n";    }}if ($clo{'test-cmds'}) {    print MF "test: \${TARGETS}\n";    print MF "\t$_\n" foreach (split(/\s*,\s*/, $clo{'test-cmds'}));    print MF "\n";}	if ($depend_flag && $clo{'developer'} && !$clo{'wrapper'}) {    my @to_unlink;    foreach my $fake_header (@{$clo{'fake-header'}}) {	if (-e $fake_header) {	    print STDERR "$0: $fake_header already exists\n";	    next;	}	unless (open(FH, ">$fake_header")) {	    print STDERR "$0: could not create $fake_header: $!\n";	    next;	}	print FH "/* fake header */\n";	close FH;	push(@to_unlink, $fake_header);    }    foreach (@ARGV) {	print "  ===> Generating Dependancy Information for $_\n"	    unless $clo{'quiet'};	print MF `$ENV{'CXX'} $ENV{'CXXFLAGS'} $depend_flag $_`;	print MF "\n";    }    unlink(@to_unlink);}if (!$clo{'wrapper'}) {    print MF "clean: ", join(' ', @{$clo{'clean-target'}}), "\n";    print MF "\t- $rmf \$(OBJECTS) \$(TARGETS) *.core core ", join(' ', @{$clo{'clean-file'}}), "\n";    print MF "\t- rm -rf SunWS_cache ir.out\n" if $^O eq 'solaris';    print MF "\n";    print MF "realclean: clean\n";    print MF "\t- $rmf $clo{'output'}\n";    print MF "\n";    print MF ".SUFFIXES: .cxx\n";    print MF ".SUFFIXES: .obj\n";    print MF "\n";    print MF ".cxx.o:\n";    if ($^O eq 'solaris' and $clo{'many-exec'}) {	print MF "\t\@if test -d SunWS_cache ; then rm -rf SunWS_cache; fi\n";    }    print MF "\t\$(CXX) \$(CXXFLAGS) -c \$<\n";    print MF "\n";    print MF ".cxx.obj:\n";    if ($^O eq 'solaris' and $clo{'many-exec'}) {	print MF "\t\@if test -d SunWS_cache ; then rm -rf SunWS_cache; fi\n";    }    print MF "\t\$(CXX) \$(CXXFLAGS) -c \$<\n";    print MF "\n";}if ($clo{'install'} and $^O !~ /mswin/) {    unless (open(SPEC, $clo{'install'})) {	print STDERR "$0: can't open install spec file $clo{'install'}: $!\n";	exit 1;    }    my %vars = (	'BINDIR'	=> '/usr/local/bin',	'INCLUDEDIR'	=> '/usr/local/include',	'LIBDIR'	=> '/usr/local/lib',	'MANDIR'	=> '/usr/local/share/man',    );    my @binaries;    my @pkgconfig;    my @include_files;    my @include_dirs;    my @static_libraries;    my @shared_libraries;    my @man_pages;    while (<SPEC>) {	chomp; s/^\s+//g; s/\s+$//g;	next if /^$/ or /^#/;	if (/^\w+\s*=/) {	    my ($key, $value) = split(/\s*=\s*/, $_, 2);	    $key = uc $key;	    if (!exists $vars{$key}) {		print STDERR "$0: warning, $key is not a valid variable.\n";		print STDERR "$0: from $clo{'install'}:$.\n";		next;	    }	    $vars{$key} = $value;	} elsif (/^include-dir\s+(\S+)\s+(\S+)$/) {	    if (! -d $1) {		print STDERR "$0: warning, $1 is not a directory.\n";		print STDERR "$0: from $clo{'install'}:$.\n";		next;	    }	    push(@include_dirs, [$1, $2]);	} elsif (/^include-files?\s+(\S+)$/) {	    my @files = glob($1);	    if (!@files) {		print STDERR "$0: glob did not match any files\n";		print STDERR "$0: from $clo{'install'}:$.\n";		next;	    }	    my @names = map{s(^.*/)()} @files;	    for (my $i=0; $i<@files; ++$i) {		push(@include_files, [$files[$i], $names[$i]]);	    }	} elsif (/^binary\s+(\S+)$/) {	    my ($full, $base) = ($1, $1);	    $base =~ s(^.*/)();	    push(@binaries, [$full, $base]);	} elsif (/^pkgconfig\s+(\S+)$/) {	    push(@pkgconfig, $1);	} elsif (/^(static-lib|shared-lib)\s+(\S+)\s+(\S+)\s*(\d+)?$/) {	    if (! -d $2) {		print STDERR "$0: first option to $1 should be a directory.\n";		print STDERR "$0: $2 is not a directory.\n";		print STDERR "$0: from $clo{'install'}:$.\n";		next;	    }	    if ($1 eq 'static-lib') {		push(@static_libraries, [$2, $3]);	    } elsif ($1 eq 'shared-lib') {		my $major = $4 || 1;		push(@shared_libraries, [$2, $3, $major]);	    }	} elsif (/^man\s+(\d+)\s+(.+)$/) {	    if (! -e $2) {		print STDERR "$0: man page not found: $2\n";		next;	    }	    push(@man_pages, [$1, $2]);	} else {	    print STDERR "$0: I don't understand this line.\n";	    print STDERR "$0: $_\n";	    print STDERR "$0: from $clo{'install'}:$.\n";	    next;	}    }    if (@static_libraries or @shared_libraries or @binaries or @include_dirs or @include_files or @man_pages) {	print MF "install: all\n";	print MF "\tmkdir -p $vars{'BINDIR'}\n" if @binaries;	print MF "\tmkdir -p $vars{'INCLUDEDIR'}\n" if @include_files or @include_dirs;	print MF "\tmkdir -p $vars{'LIBDIR'}\n" if @static_libraries or @shared_libraries;	print MF "\tmkdir -p $vars{'LIBDIR'}/pkgconfig\n" if @pkgconfig;	print MF "\tmkdir -p $vars{'MANDIR'}\n" if @man_pages;	foreach my $binary (@binaries) {	    print MF "\tcp $binary->[0] $vars{'BINDIR'}/$binary->[1]\n";	    print MF "\tchmod 755 $vars{'BINDIR'}/$binary->[1]\n";	}	foreach my $pc (@pkgconfig) {	    print MF "\tcp $pc $vars{'LIBDIR'}/pkgconfig/$pc\n";	    print MF "\tchmod 644 $vars{'LIBDIR'}/pkgconfig/$pc\n";	}	foreach my $directory (@include_dirs) {	    print MF "\tmkdir -p $vars{'INCLUDEDIR'}/$directory->[1]\n";	    print MF "\tcp -r $directory->[0]/* $vars{'INCLUDEDIR'}/$directory->[1]\n";	    print MF "\tfind $vars{'INCLUDEDIR'}/$directory->[1] -type d | xargs chmod 755\n";	    print MF "\tfind $vars{'INCLUDEDIR'}/$directory->[1] -type f | xargs chmod 644\n";	}	foreach my $file (@include_files) {	    print MF "\tcp $file->[0] $vars{'INCLUDEDIR'}/$file->[1]\n";	    print MF "\tchmod 644 $vars{'INCLUDEDIR'}/$file->[1]\n";	}	foreach my $library (@static_libraries) {	    my $libname = "$static_lib_prefix$library->[1]$static_lib_extension";	    print MF "\tcp $library->[0]/$libname $vars{'LIBDIR'}/$libname\n";	    print MF "\tchmod 755 $vars{'LIBDIR'}/$libname\n";	}	foreach my $library (@shared_libraries) {	    my $libname = "$shared_lib_prefix$library->[1]$shared_lib_extension";	    my $major_name = `$^X $clo{'cxxflags'} --major $library->[2] --mkshared-name $library->[1]`;	    chomp($major_name); clean($major_name);	    print MF "\tcp $library->[0]/$libname $vars{'LIBDIR'}/$major_name\n";	    print MF "\tchmod 755 $vars{'LIBDIR'}/$major_name\n";	    print MF "\trm -f $vars{'LIBDIR'}/$libname\n";	    print MF "\t(cd $vars{'LIBDIR'}; ln -s $major_name $libname)\n";	}	foreach my $manpage (@man_pages) {	    my $file = basename($manpage->[1]);	    print MF "\tmkdir -p $vars{'MANDIR'}/man$manpage->[0]\n";	    print MF "\tcp $manpage->[1] $vars{'MANDIR'}/man$manpage->[0]\n";	    print MF "\tchmod 644 $vars{'MANDIR'}/man$manpage->[0]/$file\n";	}	print MF "\n";    }}foreach my $append (@{$clo{'append'}}) {    unless (open(AP, $append)) {	print STDERR "$0: can't open '$append' so that I could append it to the Makefile\n";	exit 1;    }    print MF "\n";    while (<AP>) { print MF; }    close AP;}close MF;sub addflags {    clean($_[0]); clean($_[1]);    chomp($_[0] .= ' ' . $_[1]);    clean($_[0]);}sub clean {    $_[0] =~ s/^\s+//; $_[0] =~ s/\s+$//;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -