55 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| # This file is part of Telegram Desktop,
 | |
| # the official desktop application for the Telegram messaging service.
 | |
| #
 | |
| # For license and copyright information please follow this link:
 | |
| # https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 | |
| 
 | |
| function(generate_midl target_name src_loc)
 | |
|     set(list ${ARGV})
 | |
|     list(REMOVE_AT list 0 1)
 | |
| 
 | |
|     set(gen_dst ${CMAKE_CURRENT_BINARY_DIR}/gen)
 | |
|     file(MAKE_DIRECTORY ${gen_dst})
 | |
| 
 | |
|     if (build_win64)
 | |
|         set(env x64)
 | |
|     else()
 | |
|         set(env win32)
 | |
|     endif()
 | |
| 
 | |
|     set(gen_timestamp ${gen_dst}/${target_name}_midl.timestamp)
 | |
|     set(gen_files "")
 | |
|     set(full_generation_sources "")
 | |
|     set(full_dependencies_list "")
 | |
|     foreach (file ${list})
 | |
|         list(APPEND full_generation_sources ${src_loc}/${file})
 | |
|         get_filename_component(file_name ${file} NAME_WLE)
 | |
|         list(APPEND gen_files
 | |
|             ${gen_dst}/${file_name}_i.c
 | |
|             ${gen_dst}/${file_name}_h.h
 | |
|         )
 | |
|         list(APPEND gen_commands
 | |
|         COMMAND
 | |
|             midl
 | |
|             /out ${gen_dst}
 | |
|             /h ${file_name}_h.h
 | |
|             /env ${env}
 | |
|             /notlb
 | |
|             ${src_loc}/${file}
 | |
|         )
 | |
|     endforeach()
 | |
| 
 | |
|     add_custom_command(
 | |
|     OUTPUT
 | |
|         ${gen_timestamp}
 | |
|     BYPRODUCTS
 | |
|         ${gen_files}
 | |
|     ${gen_commands}
 | |
|     COMMAND
 | |
|         echo 1> ${gen_timestamp}
 | |
|     COMMENT "Generating headers from IDLs (${target_name})"
 | |
|     DEPENDS
 | |
|         ${full_generation_sources}
 | |
|     )
 | |
|     generate_target(${target_name} midl ${gen_timestamp} "${gen_files}" ${gen_dst})
 | |
| endfunction()
 | 
