[CMAKE]
[reactos.git] / CMakeMacros.cmake
index 9758ca4..94b3a71 100644 (file)
@@ -40,3 +40,38 @@ MACRO(add_pch _target_name _header_filename _src_list)
         DEPENDS ${_header_filename})
 
 ENDMACRO(add_pch _target_name _header_filename _src_list)
+
+MACRO(spec2def _target_name _spec_file _def_file)
+
+    add_custom_command(
+        OUTPUT ${_def_file}
+        COMMAND native-winebuild -o ${_def_file} --def -E ${_spec_file} --filename ${_target_name}.dll
+        DEPENDS native-winebuild)
+    set_source_files_properties(${_def_file} PROPERTIES GENERATED TRUE)
+    add_custom_target(${_target_name}_def ALL DEPENDS ${_def_file})
+
+ENDMACRO(spec2def _target_name _spec_file _def_file)
+
+MACRO(CreateBootSectorTarget _target_name _asm_file _object_file)
+
+    get_filename_component(OBJECT_PATH ${_object_file} PATH)
+    file(MAKE_DIRECTORY ${OBJECT_PATH})
+    get_directory_property(defines COMPILE_DEFINITIONS)
+    get_directory_property(includes INCLUDE_DIRECTORIES)
+
+    foreach(arg ${defines})
+        set(result_defs ${result_defs} -D${arg})
+    endforeach(arg ${defines})
+
+    foreach(arg ${includes})
+        set(result_incs -I${arg} ${result_incs})
+    endforeach(arg ${includes})
+
+    add_custom_command(
+        OUTPUT ${_object_file}
+        COMMAND nasm -o ${_object_file} ${result_incs} ${result_defs} -f bin ${_asm_file}
+        DEPENDS native-winebuild)
+    set_source_files_properties(${_object_file} PROPERTIES GENERATED TRUE)
+    add_custom_target(${_target_name} ALL DEPENDS ${_object_file})
+
+ENDMACRO(CreateBootSectorTarget _target_name _asm_file _object_file)