mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-29 11:41:20 -06:00 
			
		
		
		
	 2fae893af2
			
		
	
	
		2fae893af2
		
	
	
	
	
		
			
			Added detection of gtk2/gtk3 GUI libraries required by Alien::wxWidgets. Added gtk2/gtk3 include paths, so we may call gtk2/3 API directly if needed for some workaround.
		
			
				
	
	
		
			109 lines
		
	
	
	
		
			4.1 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
	
		
			4.1 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 \$gui_toolkit  = Alien::wxWidgets->config->{toolkit};
 | |
| #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);
 | |
| cmake_set_var('GUI_TOOLKIT', \$gui_toolkit);
 | |
| 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}")
 | |
|   message(STATUS "  AlienWx_GUI_TOOLKIT       = ${AlienWx_GUI_TOOLKIT}")
 | |
| endif()
 | |
| 
 | |
| include(FindPackageHandleStandardArgs)
 | |
| 
 | |
| find_package_handle_standard_args(AlienWx 
 | |
|     REQUIRED_VARS AlienWx_INCLUDE_DIRS AlienWx_LIBRARIES
 | |
| #    HANDLE_COMPONENTS
 | |
|     VERSION_VAR AlienWx_VERSION)
 |