diff --git a/reactos/cmake/msvc.cmake b/reactos/cmake/msvc.cmake index 151bfc4226a..af52304d37f 100644 --- a/reactos/cmake/msvc.cmake +++ b/reactos/cmake/msvc.cmake @@ -59,11 +59,17 @@ set(CMAKE_ASM_CREATE_STATIC_LIBRARY ${CMAKE_C_CREATE_STATIC_LIBRARY}) macro(add_pch _target_name _FILE) endmacro() -function(set_entrypoint MODULE ENTRYPOINT) - if(${ENTRYPOINT} STREQUAL "0") - add_linkerflag(${MODULE} "/NOENTRY") +function(set_entrypoint _module _entrypoint) + if(${_entrypoint} STREQUAL "0") + add_linkerflag(${_module} "/NOENTRY") + elseif(ARCH MATCHES i386) + set(_entrysymbol ${_entrypoint}) + if (${ARGC} GREATER 2) + set(_entrysymbol ${_entrysymbol}@${ARGV2}) + endif() + add_linkerflag(${_module} "/ENTRY:${_entrysymbol}") else() - add_linkerflag(${MODULE} "/ENTRY:${ENTRYPOINT}") + add_linkerflag(${_module} "/ENTRY:${_entrypoint}") endif() endfunction() @@ -79,7 +85,7 @@ function(set_module_type MODULE TYPE) add_dependencies(${MODULE} psdk) if(${TYPE} MATCHES nativecui) set_subsystem(${MODULE} native) - set_entrypoint(${MODULE} NtProcessStartup@4) + set_entrypoint(${MODULE} NtProcessStartup 4) elseif (${TYPE} MATCHES win32gui) set_subsystem(${MODULE} windows) if(IS_UNICODE) @@ -96,7 +102,7 @@ function(set_module_type MODULE TYPE) endif(IS_UNICODE) elseif(${TYPE} MATCHES win32dll) # Need this only because mingw library is broken - set_entrypoint(${MODULE} DllMainCRTStartup@12) + set_entrypoint(${MODULE} DllMainCRTStartup 12) if(DEFINED baseaddress_${MODULE}) set_image_base(${MODULE} ${baseaddress_${MODULE}}) else() @@ -104,16 +110,16 @@ function(set_module_type MODULE TYPE) endif() add_linkerflag(${MODULE} "/DLL") elseif(${TYPE} MATCHES win32ocx) - set_entrypoint(${MODULE} DllMainCRTStartup@12) + set_entrypoint(${MODULE} DllMainCRTStartup 12) set_target_properties(${MODULE} PROPERTIES SUFFIX ".ocx") add_linkerflag(${MODULE} "/DLL") elseif(${TYPE} MATCHES cpl) - set_entrypoint(${MODULE} DllMainCRTStartup@12) + set_entrypoint(${MODULE} DllMainCRTStartup 12) set_target_properties(${MODULE} PROPERTIES SUFFIX ".cpl") add_linkerflag(${MODULE} "/DLL") elseif(${TYPE} MATCHES kernelmodedriver) set_target_properties(${MODULE} PROPERTIES SUFFIX ".sys") - set_entrypoint(${MODULE} DriverEntry@8) + set_entrypoint(${MODULE} DriverEntry 8) set_subsystem(${MODULE} native) set_image_base(${MODULE} 0x00010000) add_linkerflag(${MODULE} "/DRIVER")