VirtualBox

source: vbox/trunk/src/libs/openssl-3.0.7/Configurations/platform/BASE.pm@ 98921

Last change on this file since 98921 was 94320, checked in by vboxsync, 3 years ago

libs/openssl-3.0.1: Export to OSE and fix copyright headers in Makefiles, bugref:10128

File size: 3.6 KB
Line 
1package platform::BASE;
2
3use strict;
4use warnings;
5use Carp;
6
7# Assume someone set @INC right before loading this module
8use configdata;
9
10# Globally defined "platform specific" extensions, available for uniformity
11sub depext { '.d' }
12
13# Functions to convert internal file representations to platform specific
14# ones. Note that these all depend on extension functions that MUST be
15# defined per platform.
16#
17# Currently known internal or semi-internal extensions are:
18#
19# .a For libraries that are made static only.
20# Internal libraries only.
21# .o For object files.
22# .s, .S Assembler files. This is an actual extension on Unix
23# .res Resource file. This is an actual extension on Windows
24
25sub binname { return $_[1] } # Name of executable binary
26sub dsoname { return $_[1] } # Name of dynamic shared object (DSO)
27sub sharedname { return __isshared($_[1]) ? $_[1] : undef } # Name of shared lib
28sub staticname { return __base($_[1], '.a') } # Name of static lib
29
30# Convenience function to convert the shlib version to an acceptable part
31# of a file or directory name. By default, we consider it acceptable as is.
32sub shlib_version_as_filename { return $config{shlib_version} }
33
34# Convenience functions to convert the possible extension of an input file name
35sub bin { return $_[0]->binname($_[1]) . $_[0]->binext() }
36sub dso { return $_[0]->dsoname($_[1]) . $_[0]->dsoext() }
37sub sharedlib { return __concat($_[0]->sharedname($_[1]), $_[0]->shlibext()) }
38sub staticlib { return $_[0]->staticname($_[1]) . $_[0]->libext() }
39
40# More convenience functions for intermediary files
41sub def { return __base($_[1], '.ld') . $_[0]->defext() }
42sub obj { return __base($_[1], '.o') . $_[0]->objext() }
43sub res { return __base($_[1], '.res') . $_[0]->resext() }
44sub dep { return __base($_[1], '.o') . $_[0]->depext() } # <- objname
45sub asm { return __base($_[1], '.S', '.s') . $_[0]->asmext() }
46
47# Another set of convenience functions for standard checks of certain
48# internal extensions and conversion from internal to platform specific
49# extension. Note that the latter doesn't deal with libraries because
50# of ambivalence
51sub isdef { return $_[1] =~ m|\.ld$|; }
52sub isobj { return $_[1] =~ m|\.o$|; }
53sub isres { return $_[1] =~ m|\.res$|; }
54sub isasm { return $_[1] =~ m|\.[Ss]$|; }
55sub isstaticlib { return $_[1] =~ m|\.a$|; }
56sub convertext {
57 if ($_[0]->isdef($_[1])) { return $_[0]->def($_[1]); }
58 if ($_[0]->isobj($_[1])) { return $_[0]->obj($_[1]); }
59 if ($_[0]->isres($_[1])) { return $_[0]->res($_[1]); }
60 if ($_[0]->isasm($_[1])) { return $_[0]->asm($_[1]); }
61 if ($_[0]->isstaticlib($_[1])) { return $_[0]->staticlib($_[1]); }
62 return $_[1];
63}
64
65# Helpers ############################################################
66
67# __base EXPR, LIST
68# This returns the given path (EXPR) with the matching suffix from LIST stripped
69sub __base {
70 my $path = shift;
71 foreach (@_) {
72 if ($path =~ m|\Q${_}\E$|) {
73 return $`;
74 }
75 }
76 return $path;
77}
78
79# __isshared EXPR
80# EXPR is supposed to be a library name. This will return true if that library
81# can be assumed to be a shared library, otherwise false
82sub __isshared {
83 return !($disabled{shared} || $_[0] =~ /\.a$/);
84}
85
86# __concat LIST
87# Returns the concatenation of all elements of LIST if none of them is
88# undefined. If one of them is undefined, returns undef instead.
89sub __concat {
90 my $result = '';
91 foreach (@_) {
92 return undef unless defined $_;
93 $result .= $_;
94 }
95 return $result;
96}
97
981;
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette