47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
		
		
			
		
	
	
			47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| 
								 | 
							
								# CMake implementation of AutoGen
							 | 
						||
| 
								 | 
							
								# Copyright (C) 2017 Anonymous Maarten <anonymous.maarten@gmail.com>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set(AUTOGEN_SCRIPT "${CMAKE_MODULE_PATH}/CMakeAutoGenScript.cmake")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function(lsf_autogen DIR_REL NAME_WE)
							 | 
						||
| 
								 | 
							
									set(EXTS ${ARGN})
							 | 
						||
| 
								 | 
							
									set(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/${DIR_REL}/${NAME_WE}.def")
							 | 
						||
| 
								 | 
							
									set(OUTPUTS)
							 | 
						||
| 
								 | 
							
									foreach(EXT ${EXTS})
							 | 
						||
| 
								 | 
							
										list(APPEND OUTPUTS "${NAME_WE}.${EXT}")
							 | 
						||
| 
								 | 
							
									endforeach()
							 | 
						||
| 
								 | 
							
									add_autogen_target("${INPUT}" "${CMAKE_CURRENT_BINARY_DIR}/${DIR_REL}" ${OUTPUTS})
							 | 
						||
| 
								 | 
							
								endfunction()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function(add_autogen_target INPUT OUTPUTDIR)
							 | 
						||
| 
								 | 
							
									set(OUTPUTFILES "${ARGN}")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									if (OUTPUTDIR)
							 | 
						||
| 
								 | 
							
										set(PREFIX "${OUTPUTDIR}/")
							 | 
						||
| 
								 | 
							
									else()
							 | 
						||
| 
								 | 
							
										set(PREFIX "")
							 | 
						||
| 
								 | 
							
									endif()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									set(ARTIFACTS)
							 | 
						||
| 
								 | 
							
									foreach(OUTPUTFILE ${OUTPUTFILES})
							 | 
						||
| 
								 | 
							
										list(APPEND ARTIFACTS "${PREFIX}${OUTPUTFILE}")
							 | 
						||
| 
								 | 
							
									endforeach()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									set(EXTRA_ARGS)
							 | 
						||
| 
								 | 
							
									if (AUTOGEN_DEBUG)
							 | 
						||
| 
								 | 
							
										list(APPEND EXTRA_ARGS "-DDEBUG=1")
							 | 
						||
| 
								 | 
							
									endif()
							 | 
						||
| 
								 | 
							
									if (OUTPUTDIR)
							 | 
						||
| 
								 | 
							
										list(APPEND EXTRA_ARGS "-DOUTPUTDIR=${OUTPUTDIR}")
							 | 
						||
| 
								 | 
							
									endif()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									add_custom_command(
							 | 
						||
| 
								 | 
							
										OUTPUT ${ARTIFACTS}
							 | 
						||
| 
								 | 
							
										COMMAND ${CMAKE_COMMAND} "-DDEFINITION=${INPUT}" ${EXTRA_ARGS} -P "${AUTOGEN_SCRIPT}"
							 | 
						||
| 
								 | 
							
										MAIN_DEPENDENCY "${INPUT}"
							 | 
						||
| 
								 | 
							
										DEPENDS "${AUTOGEN_SCRIPT}"
							 | 
						||
| 
								 | 
							
										COMMENT "CMakeAutoGen: generating ${OUTPUTFILES}"
							 | 
						||
| 
								 | 
							
										WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
							 | 
						||
| 
								 | 
							
									)
							 | 
						||
| 
								 | 
							
								endfunction()
							 |