mirror of
				https://github.com/isledecomp/isle.git
				synced 2025-10-26 01:44:19 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			59 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| function(reccmp_find_project RESULT)
 | |
|     set(curdir "${CMAKE_CURRENT_SOURCE_DIR}")
 | |
|     while(1)
 | |
|         if(EXISTS "${curdir}/reccmp-project.yml")
 | |
|             break()
 | |
|         endif()
 | |
|         get_filename_component(nextdir "${curdir}" DIRECTORY)
 | |
|         if(nextdir STREQUAL curdir)
 | |
|             set(curdir "${RESULT}-NOTFOUND")
 | |
|             break()
 | |
|         endif()
 | |
|         set(curdir "${nextdir}")
 | |
|     endwhile()
 | |
|     set("${RESULT}" "${curdir}" PARENT_SCOPE)
 | |
| endfunction()
 | |
| 
 | |
| function(reccmp_add_target TARGET)
 | |
|     cmake_parse_arguments(ARGS "" "ID" "" ${ARGN})
 | |
|     if(NOT ARGS_ID)
 | |
|         message(FATAL_ERROR "Missing ID argument")
 | |
|     endif()
 | |
|     set_property(TARGET ${TARGET} PROPERTY INTERFACE_RECCMP_ID "${ARGS_ID}")
 | |
|     set_property(GLOBAL APPEND PROPERTY RECCMP_TARGETS ${TARGET})
 | |
| endfunction()
 | |
| 
 | |
| function(reccmp_configure)
 | |
|     cmake_parse_arguments(ARGS "COPY_TO_SOURCE_FOLDER" "DIR" "" ${ARGN})
 | |
|     set(binary_dir "${CMAKE_BINARY_DIR}")
 | |
|     if(ARGS_DIR)
 | |
|         set(binary_dir "${ARGS_DIR}")
 | |
|     endif()
 | |
| 
 | |
|     reccmp_find_project(reccmp_project_dir)
 | |
|     if(NOT reccmp_project_dir)
 | |
|         message(FATAL_ERROR "Cannot find reccmp-project.yml")
 | |
|     endif()
 | |
| 
 | |
|     if(CMAKE_CONFIGURATION_TYPES)
 | |
|         set(outputdir "${binary_dir}/$<CONFIG>")
 | |
|     else()
 | |
|         set(outputdir "${binary_dir}")
 | |
|     endif()
 | |
|     set(build_yml_txt "project: '${reccmp_project_dir}'\ntargets:\n")
 | |
|     get_property(RECCMP_TARGETS GLOBAL PROPERTY RECCMP_TARGETS)
 | |
|     foreach(target ${RECCMP_TARGETS})
 | |
|         get_property(id TARGET "${target}" PROPERTY INTERFACE_RECCMP_ID)
 | |
|         string(APPEND build_yml_txt "  ${id}:\n")
 | |
|         string(APPEND build_yml_txt "    path: '$<TARGET_FILE:${target}>'\n")
 | |
|         if(WIN32 AND MSVC)
 | |
|             string(APPEND build_yml_txt "    pdb: '$<TARGET_PDB_FILE:${target}>'\n")
 | |
|         endif()
 | |
|     endforeach()
 | |
|     file(GENERATE OUTPUT "${outputdir}/reccmp-build.yml" CONTENT "${build_yml_txt}")
 | |
| 
 | |
|     if(ARGS_COPY_TO_SOURCE_FOLDER)
 | |
|         file(GENERATE OUTPUT "${CMAKE_SOURCE_DIR}/reccmp-build.yml" CONTENT "${build_yml_txt}" CONDITION $<CONFIG:Release>)
 | |
|     endif()
 | |
| endfunction()
 | 
