- handle stdcall decoration in MSVC set_entrypoint

svn path=/trunk/; revision=53337
This commit is contained in:
Timo Kreuzer 2011-08-20 12:29:51 +00:00
parent 1810920919
commit d34a623b35

View file

@ -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")