+ add_linkerflag(${MODULE} "/subsystem:${SUBSYSTEM}")\r
+endmacro()\r
+\r
+macro(set_image_base MODULE IMAGE_BASE)\r
+ add_linkerflag(${MODULE} "/BASE:${IMAGE_BASE}")\r
+endmacro()\r
+\r
+macro(set_module_type MODULE TYPE)\r
+ add_dependencies(${MODULE} psdk buildno_header)\r
+ if(${TYPE} MATCHES nativecui)\r
+ set_subsystem(${MODULE} native)\r
+ set_entrypoint(${MODULE} NtProcessStartup@4)\r
+ endif()\r
+ if (${TYPE} MATCHES win32gui)\r
+ set_subsystem(${MODULE} windows)\r
+ set_entrypoint(${MODULE} WinMainCRTStartup)\r
+ if(IS_UNICODE)\r
+ target_link_libraries(${MODULE} mingw_wmain)\r
+ else()\r
+ target_link_libraries(${MODULE} mingw_main)\r
+ endif()\r
+ target_link_libraries(${MODULE} mingw_common msvcsup)\r
+ endif ()\r
+ if (${TYPE} MATCHES win32cui)\r
+ set_subsystem(${MODULE} console)\r
+ set_entrypoint(${MODULE} mainCRTStartup)\r
+ if(IS_UNICODE)\r
+ target_link_libraries(${MODULE} mingw_wmain)\r
+ else()\r
+ target_link_libraries(${MODULE} mingw_main)\r
+ endif()\r
+ target_link_libraries(${MODULE} mingw_common msvcsup)\r
+ endif ()\r
+ if(${TYPE} MATCHES win32dll)\r
+ # Need this only because mingw library is broken\r
+ set_entrypoint(${MODULE} DllMainCRTStartup@12)\r
+ if(DEFINED baseaddress_${MODULE})\r
+ set_image_base(${MODULE} ${baseaddress_${MODULE}})\r
+ else()\r
+ message(STATUS "${MODULE} has no base address")\r
+ endif()\r
+ target_link_libraries(${MODULE} mingw_common mingw_dllmain msvcsup)\r
+ add_linkerflag(${MODULE} "/DLL")\r
+ endif()\r
+ if(${TYPE} MATCHES win32ocx)\r
+ set_entrypoint(${MODULE} DllMainCRTStartup@12)\r
+ set_target_properties(${MODULE} PROPERTIES SUFFIX ".ocx")\r
+ target_link_libraries(${MODULE} mingw_common mingw_dllmain msvcsup)\r
+ add_linkerflag(${MODULE} "/DLL")\r
+ endif()\r
+ if(${TYPE} MATCHES cpl)\r
+ set_entrypoint(${MODULE} DllMainCRTStartup@12)\r
+ set_target_properties(${MODULE} PROPERTIES SUFFIX ".cpl")\r
+ target_link_libraries(${MODULE} mingw_common mingw_dllmain msvcsup)\r
+ add_linkerflag(${MODULE} "/DLL")\r
+ endif()\r
+ if(${TYPE} MATCHES kernelmodedriver)\r
+ set_target_properties(${MODULE} PROPERTIES SUFFIX ".sys")\r
+ set_entrypoint(${MODULE} DriverEntry@8)\r
+ set_subsystem(${MODULE} native)\r
+ set_image_base(${MODULE} 0x00010000)\r
+ add_linkerflag(${MODULE} "/DRIVER")\r
+ add_dependencies(${MODULE} bugcodes)\r
+ target_link_libraries(${MODULE} msvcsup)\r