Index: cmake/msvc.cmake =================================================================== --- cmake/msvc.cmake (版本 62320) +++ cmake/msvc.cmake (工作副本) @@ -97,7 +97,7 @@ set(CMAKE_RC_COMPILE_OBJECT " /nologo ${I18N_DEFS} /fo ") set(CMAKE_ASM_COMPILE_OBJECT "cl ${cl_includes_flag} /nologo /X /I${REACTOS_SOURCE_DIR}/include/asm /I${REACTOS_BINARY_DIR}/include/asm /D__ASM__ /D_USE_ML /EP /c > .tmp" - " /nologo /Cp /Fo /c /Ta .tmp") + " .tmp") endif() if(_VS_ANALYZE_) @@ -214,7 +214,7 @@ #define those for having real libraries set(CMAKE_IMPLIB_CREATE_STATIC_LIBRARY "LINK /LIB /NOLOGO /OUT: ") -set(CMAKE_STUB_ASM_COMPILE_OBJECT " /nologo /Cp /Fo /c /Ta ") +set(CMAKE_STUB_ASM_COMPILE_OBJECT " ") function(add_delay_importlibs _module) get_target_property(_module_type ${_module} TYPE) if(_module_type STREQUAL "STATIC_LIBRARY") @@ -242,7 +242,7 @@ # Compile the generated asm stub file add_custom_command( OUTPUT ${_asm_stubs_file}.obj - COMMAND ${CMAKE_ASM_COMPILER} /Cp /Fo${_asm_stubs_file}.obj /c /Ta ${_asm_stubs_file} + COMMAND ${CMAKE_ASM_COMPILER_WITH_ARGUMENTS} ${CMAKE_ASM_COMPILER_OUTPUT_OPTION} ${_asm_stubs_file}.obj ${CMAKE_ASM_COMPILER_INPUT_OPTION} ${_asm_stubs_file} DEPENDS ${_asm_stubs_file}) else() # be clear about the "language" @@ -266,11 +266,15 @@ endfunction() if(ARCH STREQUAL "amd64") - add_definitions(/D__x86_64) + add_definitions(/D__x86_64__) set(SPEC2DEF_ARCH x86_64) -else() +elseif(ARCH STREQUAL "i386") set(SPEC2DEF_ARCH i386) +elseif(ARCH STREQUAL "arm") + add_definitions(/D__arm__) + set(SPEC2DEF_ARCH arm) endif() + function(spec2def _dllname _spec_file) # do we also want to add importlib targets? if(${ARGC} GREATER 2) @@ -312,8 +316,19 @@ # both the x86 and x64 versions of ml are available. if((ARCH STREQUAL "amd64") AND (DEFINED ENV{VCINSTALLDIR})) set(CMAKE_ASM16_COMPILER $ENV{VCINSTALLDIR}/bin/ml.exe) -else() + set(CMAKE_ASM16_COMPILER_WITH_ARGUMENTS ${CMAKE_ASM16_COMPILER} /nologo /Cp /c) + set(CMAKE_ASM16_COMPILER_OUTPUT_OPTION /Fo) + set(CMAKE_ASM16_COMPILER_INPUT_OPTION /Ta) +elseif(ARCH STREQUAL "i386") set(CMAKE_ASM16_COMPILER ml.exe) + set(CMAKE_ASM16_COMPILER_WITH_ARGUMENTS ${CMAKE_ASM16_COMPILER} /nologo /Cp /c) + set(CMAKE_ASM16_COMPILER_OUTPUT_OPTION /Fo) + set(CMAKE_ASM16_COMPILER_INPUT_OPTION /Ta) +elseif(ARCH STREQUAL "arm") + set(CMAKE_ASM16_COMPILER armasm.exe) + set(CMAKE_ASM16_COMPILER_WITH_ARGUMENTS ${CMAKE_ASM16_COMPILER} -nologo -o) + set(CMAKE_ASM16_COMPILER_OUTPUT_OPTION -o) + set(CMAKE_ASM16_COMPILER_INPUT_OPTION ) endif() function(CreateBootSectorTarget _target_name _asm_file _binary_file _base_address) @@ -327,7 +342,7 @@ add_custom_command( OUTPUT ${_object_file} - COMMAND ${CMAKE_ASM16_COMPILER} /nologo /Cp /Fo${_object_file} /c /Ta ${_temp_file} + COMMAND ${CMAKE_ASM16_COMPILER_WITH_ARGUMENTS} ${CMAKE_ASM16_COMPILER_OUTPUT_OPTION} ${_object_file} ${CMAKE_ASM16_COMPILER_INPUT_OPTION} ${_temp_file} DEPENDS ${_temp_file}) add_custom_command( @@ -362,7 +377,7 @@ endforeach() add_custom_command( OUTPUT ${_preprocessed_asm_file} ${_object_file} - COMMAND cl /nologo /X /I${REACTOS_SOURCE_DIR}/include/asm /I${REACTOS_BINARY_DIR}/include/asm ${_directory_includes} ${_source_file_defines} ${_directory_defines} /D__ASM__ /D_USE_ML /EP /c ${_source_file_full_path} > ${_preprocessed_asm_file} && ${CMAKE_ASM_COMPILER} /nologo /Cp /Fo${_object_file} /c /Ta ${_preprocessed_asm_file} + COMMAND cl /nologo /X /I${REACTOS_SOURCE_DIR}/include/asm /I${REACTOS_BINARY_DIR}/include/asm ${_directory_includes} ${_source_file_defines} ${_directory_defines} /D__ASM__ /D_USE_ML /EP /c ${_source_file_full_path} > ${_preprocessed_asm_file} && ${CMAKE_ASM_COMPILER_WITH_ARGUMENTS} ${CMAKE_ASM_COMPILER_OUTPUT_OPTION} ${_object_file} ${CMAKE_ASM_COMPILER_INPUT_OPTION} ${_preprocessed_asm_file} DEPENDS ${_source_file_full_path}) set_source_files_properties(${_object_file} PROPERTIES EXTERNAL_OBJECT 1) list(APPEND ${_target} ${_object_file}) Index: toolchain-msvc.cmake =================================================================== --- toolchain-msvc.cmake (版本 62320) +++ toolchain-msvc.cmake (工作副本) @@ -14,8 +14,19 @@ set(CMAKE_RC_COMPILER rc) if(ARCH STREQUAL "amd64") set(CMAKE_ASM_COMPILER ml64) -else() + set(CMAKE_ASM_COMPILER_WITH_ARGUMENTS ${CMAKE_ASM_COMPILER} /nologo /Cp /c) + set(CMAKE_ASM_COMPILER_OUTPUT_OPTION /Fo) + set(CMAKE_ASM_COMPILER_INPUT_OPTION /Ta) +elseif(ARCH STREQUAL "i386") set(CMAKE_ASM_COMPILER ml) + set(CMAKE_ASM_COMPILER_WITH_ARGUMENTS ${CMAKE_ASM_COMPILER} /nologo /Cp /c) + set(CMAKE_ASM_COMPILER_OUTPUT_OPTION /Fo) + set(CMAKE_ASM_COMPILER_INPUT_OPTION /Ta) +elseif(ARCH STREQUAL "arm") + set(CMAKE_ASM_COMPILER armasm) + set(CMAKE_ASM_COMPILER_WITH_ARGUMENTS ${CMAKE_ASM_COMPILER} -nologo) + set(CMAKE_ASM_COMPILER_OUTPUT_OPTION -o) + set(CMAKE_ASM_COMPILER_INPUT_OPTION ) endif() set(CMAKE_ASM_COMPILER_ID "VISUAL")