mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-11-02 12:41:18 -07:00 
			
		
		
		
	
		
			
				
	
	
		
			88 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
# Find the dependencies for linking with the Perl runtime library.
 | 
						|
 | 
						|
# Check for the Perl & PerlLib modules
 | 
						|
include(LibFindMacros)
 | 
						|
libfind_package(PerlEmbed Perl)
 | 
						|
libfind_package(PerlEmbed PerlLibs)
 | 
						|
 | 
						|
# Execute an Alien::Wx module to find the relevant information regarding
 | 
						|
# the wxWidgets used by the Perl interpreter.
 | 
						|
# Perl specific stuff
 | 
						|
set(PerlEmbed_TEMP_INCLUDE ${CMAKE_CURRENT_BINARY_DIR}/PerlEmbed_TEMP_INCLUDE.txt)
 | 
						|
execute_process(
 | 
						|
    COMMAND ${PERL_EXECUTABLE} -MExtUtils::Embed -e "
 | 
						|
# Import Perl modules.
 | 
						|
use strict;
 | 
						|
use warnings;
 | 
						|
use Config;
 | 
						|
use Text::ParseWords;
 | 
						|
use ExtUtils::CppGuess;
 | 
						|
 | 
						|
# Test for a Visual Studio compiler
 | 
						|
my \$cpp_guess = ExtUtils::CppGuess->new;
 | 
						|
my \$mswin = \$^O eq 'MSWin32';
 | 
						|
my \$msvc  = \$cpp_guess->is_msvc;
 | 
						|
 | 
						|
# Query the available data from Alien::wxWidgets.
 | 
						|
my \$ccflags;
 | 
						|
my \$ldflags;
 | 
						|
{ local *STDOUT; open STDOUT, '>', \\\$ccflags; ccflags; }
 | 
						|
{ local *STDOUT; open STDOUT, '>', \\\$ldflags; ldopts; }
 | 
						|
\$ccflags = ' ' . \$ccflags;
 | 
						|
\$ldflags = ' ' . \$ldflags;
 | 
						|
 | 
						|
my \$filename     = '${PerlEmbed_TEMP_INCLUDE}';
 | 
						|
open(my $fh, '>', \$filename) or die \"Could not open file '\$filename' \$!\";
 | 
						|
 | 
						|
# Convert a space separated lists to CMake semicolon separated lists,
 | 
						|
# escape the backslashes,
 | 
						|
# export the resulting list to a temp file.
 | 
						|
sub cmake_set_var {
 | 
						|
  my (\$varname, \$content) = @_;
 | 
						|
  # Remove line separators.
 | 
						|
  \$content =~ s/\\r|\\n//g;
 | 
						|
  # Escape the path separators.
 | 
						|
  \$content =~ s/\\\\/\\\\\\\\\\\\\\\\/g;
 | 
						|
  my @words = shellwords(\$content); 
 | 
						|
  print \$fh \"set(PerlEmbed_\$varname \\\"\" . join(';', @words) . \"\\\")\\n\";
 | 
						|
}
 | 
						|
cmake_set_var('ARCHNAME',   \$Config{archname});
 | 
						|
cmake_set_var('CCFLAGS',    \$ccflags);
 | 
						|
\$ldflags =~ s/ -L/ -LIBPATH:/g if \$msvc;
 | 
						|
cmake_set_var('LD',         \$Config{ld});
 | 
						|
cmake_set_var('LDFLAGS',    \$ldflags);
 | 
						|
cmake_set_var('CCCDLFLAGS', \$Config{cccdlflags});
 | 
						|
cmake_set_var('LDDLFLAGS',  \$Config{lddlflags});
 | 
						|
cmake_set_var('DLEXT',      \$Config{dlext});
 | 
						|
close \$fh;
 | 
						|
")
 | 
						|
include(${PerlEmbed_TEMP_INCLUDE})
 | 
						|
file(REMOVE ${PerlEmbed_TEMP_INCLUDE})
 | 
						|
unset(PerlEmbed_TEMP_INCLUDE)
 | 
						|
 | 
						|
if (PerlEmbed_DEBUG)
 | 
						|
  # First show the configuration extracted by FindPerl & FindPerlLibs:
 | 
						|
  message(STATUS " PERL_INCLUDE_PATH      = ${PERL_INCLUDE_PATH}")
 | 
						|
  message(STATUS " PERL_LIBRARY           = ${PERL_LIBRARY}")
 | 
						|
  message(STATUS " PERL_EXECUTABLE        = ${PERL_EXECUTABLE}")
 | 
						|
  message(STATUS " PERL_SITESEARCH        = ${PERL_SITESEARCH}")
 | 
						|
  message(STATUS " PERL_SITELIB           = ${PERL_SITELIB}")
 | 
						|
  message(STATUS " PERL_VENDORARCH        = ${PERL_VENDORARCH}")
 | 
						|
  message(STATUS " PERL_VENDORLIB         = ${PERL_VENDORLIB}")
 | 
						|
  message(STATUS " PERL_ARCHLIB           = ${PERL_ARCHLIB}")
 | 
						|
  message(STATUS " PERL_PRIVLIB           = ${PERL_PRIVLIB}")
 | 
						|
  message(STATUS " PERL_EXTRA_C_FLAGS     = ${PERL_EXTRA_C_FLAGS}")
 | 
						|
  # Second show the configuration extracted by this module (FindPerlEmbed):
 | 
						|
  message(STATUS " PerlEmbed_ARCHNAME     = ${PerlEmbed_ARCHNAME}")
 | 
						|
  message(STATUS " PerlEmbed_CCFLAGS      = ${PerlEmbed_CCFLAGS}")
 | 
						|
  message(STATUS " PerlEmbed_CCCDLFLAGS   = ${PerlEmbed_CCCDLFLAGS}")
 | 
						|
  message(STATUS " LD                     = ${PerlEmbed_LD}")
 | 
						|
  message(STATUS " PerlEmbed_LDFLAGS      = ${PerlEmbed_LDFLAGS}")
 | 
						|
  message(STATUS " PerlEmbed_LDDLFLAGS    = ${PerlEmbed_LDDLFLAGS}")
 | 
						|
endif()
 | 
						|
 | 
						|
include(FindPackageHandleStandardArgs)
 | 
						|
 | 
						|
find_package_handle_standard_args(PerlEmbed 
 | 
						|
  REQUIRED_VARS PerlEmbed_CCFLAGS PerlEmbed_LDFLAGS
 | 
						|
  VERSION_VAR PERL_VERSION)
 |