mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-31 04:31:15 -06:00 
			
		
		
		
	 0cb491e135
			
		
	
	
		0cb491e135
		
	
	
	
	
		
			
			Added the "test" target to execute the perl prove unit / integration tests. Added a post-build step to copy the XS.dll & Slic3r/XS.pm to local-lib.
		
			
				
	
	
		
			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)
 |