[CMAKE]
[reactos.git] / reactos / sdk / cmake / CMakeMacros.cmake
index ee34eff..14e4279 100644 (file)
@@ -113,17 +113,23 @@ function(add_message_headers _type)
     else()
         set(_flag "-A")
     endif()
-    foreach(_in_FILE ${ARGN})
-        get_filename_component(FILE ${_in_FILE} NAME_WE)
-        macro_mc(${_flag} ${FILE})
+    foreach(_file ${ARGN})
+        get_filename_component(_file_name ${_file} NAME_WE)
+        set(_converted_file ${CMAKE_CURRENT_BINARY_DIR}/${_file}) ## ${_file_name}.mc
+        set(_source_file ${CMAKE_CURRENT_SOURCE_DIR}/${_file})    ## ${_file_name}.mc
         add_custom_command(
-            OUTPUT ${REACTOS_BINARY_DIR}/sdk/include/reactos/${FILE}.rc ${REACTOS_BINARY_DIR}/sdk/include/reactos/${FILE}.h
-            COMMAND ${COMMAND_MC} ${MC_FLAGS}
-            DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${FILE}.mc)
+            OUTPUT "${_converted_file}"
+            COMMAND native-utf16le "${_source_file}" "${_converted_file}" nobom
+            DEPENDS native-utf16le "${_source_file}")
+        macro_mc(${_flag} ${_converted_file})
+        add_custom_command(
+            OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_file_name}.h ${CMAKE_CURRENT_BINARY_DIR}/${_file_name}.rc
+            COMMAND ${COMMAND_MC}
+            DEPENDS "${_converted_file}")
         set_source_files_properties(
-            ${REACTOS_BINARY_DIR}/sdk/include/reactos/${FILE}.h ${REACTOS_BINARY_DIR}/sdk/include/reactos/${FILE}.rc
+            ${CMAKE_CURRENT_BINARY_DIR}/${_file_name}.h ${CMAKE_CURRENT_BINARY_DIR}/${_file_name}.rc
             PROPERTIES GENERATED TRUE)
-        add_custom_target(${FILE} ALL DEPENDS ${REACTOS_BINARY_DIR}/sdk/include/reactos/${FILE}.h ${REACTOS_BINARY_DIR}/sdk/include/reactos/${FILE}.rc)
+        add_custom_target(${_file_name} ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${_file_name}.h ${CMAKE_CURRENT_BINARY_DIR}/${_file_name}.rc)
     endforeach()
 endfunction()
 
@@ -811,3 +817,29 @@ endif()
 function(add_rc_deps _target_rc)
     set_source_files_properties(${_target_rc} PROPERTIES OBJECT_DEPENDS "${ARGN}")
 endfunction()
+
+add_custom_target(rostests_install COMMAND ${CMAKE_COMMAND} -DCOMPONENT=rostests -P ${CMAKE_BINARY_DIR}/cmake_install.cmake)
+function(add_rostests_file)
+    cmake_parse_arguments(_ROSTESTS "" "RENAME;SUBDIR;TARGET" "FILE" ${ARGN})
+    if(NOT (_ROSTESTS_TARGET OR _ROSTESTS_FILE))
+        message(FATAL_ERROR "You must provide a target or a file to install!")
+    endif()
+
+    if(NOT _ROSTESTS_FILE)
+        get_target_property(_ROSTESTS_FILE ${_ROSTESTS_TARGET} LOCATION_${CMAKE_BUILD_TYPE})
+    endif()
+
+    if(NOT _ROSTESTS_RENAME)
+        get_filename_component(_ROSTESTS_RENAME ${_ROSTESTS_FILE} NAME)
+    endif()
+
+    if(_ROSTESTS_SUBDIR)
+        set(_ROSTESTS_SUBDIR "/${_ROSTESTS_SUBDIR}")
+    endif()
+
+    add_cd_file(FILE ${_ROSTESTS_FILE} DESTINATION "reactos/bin${_ROSTESTS_SUBDIR}" NAME_ON_CD ${_ROSTESTS_RENAME} FOR all)
+
+    if(DEFINED ENV{ROSTESTS_INSTALL})
+        install(FILES ${_ROSTESTS_FILE} DESTINATION "$ENV{ROSTESTS_INSTALL}${_ROSTESTS_SUBDIR}" COMPONENT rostests RENAME ${_ROSTESTS_RENAME})
+    endif()
+endfunction()