mirror of https://github.com/openssl/openssl.git
				
				
				
			
		
			
				
	
	
		
			37 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Perl
		
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Perl
		
	
	
	
| ## -*- mode: perl; -*-
 | |
| # Windows HybridCRT targets.
 | |
| # 
 | |
| # https://github.com/microsoft/WindowsAppSDK/blob/77761e244289fda6b3d5f14c7bded189fed4fb89/docs/Coding-Guidelines/HybridCRT.md
 | |
| # Link statically against the runtime and STL, but link dynamically against the CRT by ignoring the static CRT
 | |
| # lib and instead linking against the Universal CRT DLL import library. This "Hybrid" linking mechanism is
 | |
| # supported according to the CRT maintainer. Dynamic linking against the CRT makes the binaries a bit smaller
 | |
| # than they would otherwise be if the CRT, runtime, and STL were all statically linked in.
 | |
| 
 | |
| 
 | |
| sub remove_from_flags {
 | |
|     my ($toRemove, $flags) = @_;
 | |
|     
 | |
|     return $flags =~ s/$toRemove//r;
 | |
| }
 | |
| 
 | |
| my %targets = (
 | |
|     "VC-WIN32-HYBRIDCRT" => {
 | |
|         inherit_from    => [ "VC-WIN32" ],
 | |
|         cflags          => sub {
 | |
|             remove_from_flags(qr/\/MDd?\s/, add(picker(debug   => "/MTd",
 | |
|                                                        release => "/MT"))->(@_))
 | |
|         },
 | |
|         lflags          => add(picker(debug   => "/NODEFAULTLIB:libucrtd.lib /DEFAULTLIB:ucrtd.lib",
 | |
|                                       release => "/NODEFAULTLIB:libucrt.lib /DEFAULTLIB:ucrt.lib")),
 | |
|     },
 | |
|     "VC-WIN64A-HYBRIDCRT" => {
 | |
|         inherit_from    => [ "VC-WIN64A" ],
 | |
|         cflags          => sub {
 | |
|             remove_from_flags(qr/\/MDd?\s/, add(picker(debug   => "/MTd",
 | |
|                                                        release => "/MT"))->(@_))
 | |
|         },
 | |
|         lflags          => add(picker(debug   => "/NODEFAULTLIB:libucrtd.lib /DEFAULTLIB:ucrtd.lib",
 | |
|                                       release => "/NODEFAULTLIB:libucrt.lib /DEFAULTLIB:ucrt.lib")),
 | |
|     },
 | |
| );
 |