mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-11-02 12:41:18 -07:00 
			
		
		
		
	
		
			
				
	
	
		
			106 lines
		
	
	
	
		
			3.9 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
	
		
			3.9 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
# Find the wxWidgets module based on the information provided by the Perl Alien::wxWidgets module.
 | 
						|
 | 
						|
# Check for the Perl & PerlLib modules
 | 
						|
include(LibFindMacros)
 | 
						|
libfind_package(AlienWx Perl)
 | 
						|
libfind_package(AlienWx PerlLibs)
 | 
						|
 | 
						|
if (AlienWx_DEBUG)
 | 
						|
  message(STATUS "  AlienWx_FIND_COMPONENTS=${AlienWx_FIND_COMPONENTS}")
 | 
						|
endif()
 | 
						|
 | 
						|
# Execute an Alien::Wx module to find the relevant information regarding
 | 
						|
# the wxWidgets used by the Perl interpreter.
 | 
						|
# Perl specific stuff
 | 
						|
set(AlienWx_TEMP_INCLUDE ${CMAKE_CURRENT_BINARY_DIR}/AlienWx_TEMP_INCLUDE.txt)
 | 
						|
execute_process(
 | 
						|
    COMMAND ${PERL_EXECUTABLE} -e "
 | 
						|
# Import Perl modules.
 | 
						|
use strict;
 | 
						|
use warnings;
 | 
						|
use Text::ParseWords;
 | 
						|
 | 
						|
BEGIN {
 | 
						|
  # CMake sets the environment variables CC and CXX to the detected C compiler.
 | 
						|
  # There is an issue with the Perl ExtUtils::CBuilder, which does not handle whitespaces
 | 
						|
  # in the paths correctly on Windows, so we rather drop the CMake auto-detected paths.
 | 
						|
  delete \$ENV{CC};
 | 
						|
  delete \$ENV{CXX};
 | 
						|
}
 | 
						|
 | 
						|
use Alien::wxWidgets;
 | 
						|
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;
 | 
						|
 | 
						|
# List of wxWidgets components to be used.
 | 
						|
my @components    = split /;/, '${AlienWx_FIND_COMPONENTS}';
 | 
						|
 | 
						|
# Query the available data from Alien::wxWidgets.
 | 
						|
my \$version      = Alien::wxWidgets->version;
 | 
						|
my \$config       = Alien::wxWidgets->config;
 | 
						|
my \$compiler     = Alien::wxWidgets->compiler;
 | 
						|
my \$linker       = Alien::wxWidgets->linker;
 | 
						|
my \$include_path = ' ' . Alien::wxWidgets->include_path;
 | 
						|
my \$defines      = ' ' . Alien::wxWidgets->defines;
 | 
						|
my \$cflags       = Alien::wxWidgets->c_flags;
 | 
						|
my \$linkflags    = Alien::wxWidgets->link_flags;
 | 
						|
my \$libraries    = ' ' . Alien::wxWidgets->libraries(@components);
 | 
						|
#my @libraries     = Alien::wxWidgets->link_libraries(@components);
 | 
						|
#my @implib        = Alien::wxWidgets->import_libraries(@components);
 | 
						|
#my @shrlib        = Alien::wxWidgets->shared_libraries(@components);
 | 
						|
#my @keys          = Alien::wxWidgets->library_keys; # 'gl', 'adv', ...
 | 
						|
#my \$library_path = Alien::wxWidgets->shared_library_path;
 | 
						|
#my \$key          = Alien::wxWidgets->key;
 | 
						|
#my \$prefix       = Alien::wxWidgets->prefix;
 | 
						|
 | 
						|
my \$filename     = '${AlienWx_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(AlienWx_\$varname \\\"\" . join(';', @words) . \"\\\")\\n\";    
 | 
						|
}
 | 
						|
cmake_set_var('VERSION', \$version);
 | 
						|
\$include_path =~ s/ -I/ /g;
 | 
						|
cmake_set_var('INCLUDE_DIRS', \$include_path);
 | 
						|
\$libraries =~ s/ -L/ -LIBPATH:/g if \$msvc;
 | 
						|
cmake_set_var('LIBRARIES', \$libraries);
 | 
						|
#cmake_set_var('LIBRARY_DIRS', );
 | 
						|
#\$defines =~ s/ -D/ /g;
 | 
						|
cmake_set_var('DEFINITIONS', \$defines);
 | 
						|
#cmake_set_var('DEFINITIONS_DEBUG', );
 | 
						|
cmake_set_var('CXX_FLAGS', \$cflags);
 | 
						|
close \$fh;
 | 
						|
")
 | 
						|
include(${AlienWx_TEMP_INCLUDE})
 | 
						|
file(REMOVE ${AlienWx_TEMP_INCLUDE})
 | 
						|
unset(AlienWx_TEMP_INCLUDE)
 | 
						|
 | 
						|
if (AlienWx_DEBUG)
 | 
						|
  message(STATUS "  AlienWx_VERSION           = ${AlienWx_VERSION}")
 | 
						|
  message(STATUS "  AlienWx_INCLUDE_DIRS      = ${AlienWx_INCLUDE_DIRS}")
 | 
						|
  message(STATUS "  AlienWx_LIBRARIES         = ${AlienWx_LIBRARIES}")
 | 
						|
  message(STATUS "  AlienWx_LIBRARY_DIRS      = ${AlienWx_LIBRARY_DIRS}")
 | 
						|
  message(STATUS "  AlienWx_DEFINITIONS       = ${AlienWx_DEFINITIONS}")
 | 
						|
  message(STATUS "  AlienWx_DEFINITIONS_DEBUG = ${AlienWx_DEFINITIONS_DEBUG}")
 | 
						|
  message(STATUS "  AlienWx_CXX_FLAGS         = ${AlienWx_CXX_FLAGS}")
 | 
						|
endif()
 | 
						|
 | 
						|
include(FindPackageHandleStandardArgs)
 | 
						|
 | 
						|
find_package_handle_standard_args(AlienWx 
 | 
						|
    REQUIRED_VARS AlienWx_INCLUDE_DIRS AlienWx_LIBRARIES
 | 
						|
#    HANDLE_COMPONENTS
 | 
						|
    VERSION_VAR AlienWx_VERSION)
 |