You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							58 lines
						
					
					
						
							2.0 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							58 lines
						
					
					
						
							2.0 KiB
						
					
					
				
								add_custom_target(test_cmake_build)
							 | 
						|
								
							 | 
						|
								if(CMAKE_VERSION VERSION_LESS 3.1)
							 | 
						|
								  # 3.0 needed for interface library for subdirectory_target/installed_target
							 | 
						|
								  # 3.1 needed for cmake -E env for testing
							 | 
						|
								  return()
							 | 
						|
								endif()
							 | 
						|
								
							 | 
						|
								include(CMakeParseArguments)
							 | 
						|
								function(pybind11_add_build_test name)
							 | 
						|
								  cmake_parse_arguments(ARG "INSTALL" "" "" ${ARGN})
							 | 
						|
								
							 | 
						|
								  set(build_options "-DCMAKE_PREFIX_PATH=${PROJECT_BINARY_DIR}/mock_install"
							 | 
						|
								                    "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}"
							 | 
						|
								                    "-DPYTHON_EXECUTABLE:FILEPATH=${PYTHON_EXECUTABLE}"
							 | 
						|
								                    "-DPYBIND11_CPP_STANDARD=${PYBIND11_CPP_STANDARD}")
							 | 
						|
								  if(NOT ARG_INSTALL)
							 | 
						|
								    list(APPEND build_options "-DPYBIND11_PROJECT_DIR=${PROJECT_SOURCE_DIR}")
							 | 
						|
								  endif()
							 | 
						|
								
							 | 
						|
								  add_custom_target(test_${name} ${CMAKE_CTEST_COMMAND}
							 | 
						|
								    --quiet --output-log ${name}.log
							 | 
						|
								    --build-and-test "${CMAKE_CURRENT_SOURCE_DIR}/${name}"
							 | 
						|
								                     "${CMAKE_CURRENT_BINARY_DIR}/${name}"
							 | 
						|
								    --build-config Release
							 | 
						|
								    --build-noclean
							 | 
						|
								    --build-generator ${CMAKE_GENERATOR}
							 | 
						|
								    $<$<BOOL:${CMAKE_GENERATOR_PLATFORM}>:--build-generator-platform> ${CMAKE_GENERATOR_PLATFORM}
							 | 
						|
								    --build-makeprogram ${CMAKE_MAKE_PROGRAM}
							 | 
						|
								    --build-target check
							 | 
						|
								    --build-options ${build_options}
							 | 
						|
								  )
							 | 
						|
								  if(ARG_INSTALL)
							 | 
						|
								    add_dependencies(test_${name} mock_install)
							 | 
						|
								  endif()
							 | 
						|
								  add_dependencies(test_cmake_build test_${name})
							 | 
						|
								endfunction()
							 | 
						|
								
							 | 
						|
								pybind11_add_build_test(subdirectory_function)
							 | 
						|
								pybind11_add_build_test(subdirectory_target)
							 | 
						|
								if(NOT ${PYTHON_MODULE_EXTENSION} MATCHES "pypy")
							 | 
						|
								  pybind11_add_build_test(subdirectory_embed)
							 | 
						|
								endif()
							 | 
						|
								
							 | 
						|
								if(PYBIND11_INSTALL)
							 | 
						|
								  add_custom_target(mock_install ${CMAKE_COMMAND}
							 | 
						|
								    "-DCMAKE_INSTALL_PREFIX=${PROJECT_BINARY_DIR}/mock_install"
							 | 
						|
								    -P "${PROJECT_BINARY_DIR}/cmake_install.cmake"
							 | 
						|
								  )
							 | 
						|
								
							 | 
						|
								  pybind11_add_build_test(installed_function INSTALL)
							 | 
						|
								  pybind11_add_build_test(installed_target INSTALL)
							 | 
						|
								  if(NOT ${PYTHON_MODULE_EXTENSION} MATCHES "pypy")
							 | 
						|
								    pybind11_add_build_test(installed_embed INSTALL)
							 | 
						|
								  endif()
							 | 
						|
								endif()
							 | 
						|
								
							 | 
						|
								add_dependencies(check test_cmake_build)
							 |