[CMAKE]
[reactos.git] / gcc.cmake
index 6c28f87..1819531 100644 (file)
--- a/gcc.cmake
+++ b/gcc.cmake
@@ -35,11 +35,21 @@ add_definitions(-Os -fno-strict-aliasing -ftracer -momit-leaf-frame-pointer -mpr
 \r
 # Macros\r
 macro(set_entrypoint MODULE ENTRYPOINT)\r
-  set_target_properties(${MODULE} PROPERTIES LINK_FLAGS "-Wl,-entry,_${ENTRYPOINT}")\r
+    set(NEW_LINKER_FLAGS "-Wl,-entry,_${ENTRYPOINT}")\r
+    get_target_property(LINKER_FLAGS ${MODULE} LINK_FLAGS)\r
+    if(LINKER_FLAGS)\r
+        set(NEW_LINKER_FLAGS "${LINKER_FLAGS} ${NEW_LINKER_FLAGS}")\r
+    endif()\r
+    set_target_properties(${MODULE} PROPERTIES LINK_FLAGS ${NEW_LINKER_FLAGS})\r
 endmacro()\r
 \r
 macro(set_subsystem MODULE SUBSYSTEM)\r
-  set_target_properties(${MODULE} PROPERTIES LINK_FLAGS "-Wl,--subsystem,${SUBSYSTEM}")\r
+    set(NEW_LINKER_FLAGS "-Wl,--subsystem,${SUBSYSTEM}")\r
+    get_target_property(LINKER_FLAGS ${MODULE} LINK_FLAGS)\r
+    if(LINKER_FLAGS)\r
+        set(NEW_LINKER_FLAGS "${LINKER_FLAGS} ${NEW_LINKER_FLAGS}")\r
+    endif()\r
+    set_target_properties(${MODULE} PROPERTIES LINK_FLAGS ${NEW_LINKER_FLAGS})\r
 endmacro()\r
 \r
 macro(add_importlibs MODULE)\r
@@ -61,7 +71,7 @@ macro(set_module_type MODULE TYPE)
     set_entrypoint(${MODULE} WinMainCRTStartup)\r
   endif()\r
   if(${TYPE} MATCHES win32cui)\r
-    set_subsystem(${MODULE} windows)\r
+    set_subsystem(${MODULE} console)\r
     set_entrypoint(${MODULE} mainCRTStartup)\r
   endif()\r
   if(${TYPE} MATCHES win32dll)\r
@@ -83,4 +93,18 @@ macro(set_unicode MODULE STATE)
   target_link_libraries(${MODULE} mingw_common)\r
 endmacro()\r
 \r
-  
\ No newline at end of file
+# Workaround lack of mingw RC support in cmake\r
+macro(set_rc_compiler)\r
+    get_directory_property(defines COMPILE_DEFINITIONS)\r
+    get_directory_property(includes INCLUDE_DIRECTORIES)\r
+\r
+    foreach(arg ${defines})\r
+        set(result_defs "${result_defs} -D${arg}")\r
+    endforeach(arg ${defines})\r
+\r
+    foreach(arg ${includes})\r
+        set(result_incs "-I${arg} ${result_incs}")\r
+    endforeach(arg ${includes})\r
+\r
+    SET(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> ${result_defs} ${result_incs} -i <SOURCE> -O coff -o <OBJECT>")\r
+endmacro()\r