[CMAKE]
authorAmine Khaldi <amine.khaldi@reactos.org>
Tue, 28 Sep 2010 13:32:41 +0000 (13:32 +0000)
committerAmine Khaldi <amine.khaldi@reactos.org>
Tue, 28 Sep 2010 13:32:41 +0000 (13:32 +0000)
- Add typelib support macro and use it with stdole2. By Jerome Gardou.

svn path=/branches/cmake-bringup/; revision=48914

gcc.cmake
include/psdk/CMakeLists.txt
include/psdk/stdole2.idl
msc.cmake

index 1819531..1dc23f2 100644 (file)
--- a/gcc.cmake
+++ b/gcc.cmake
@@ -108,3 +108,18 @@ macro(set_rc_compiler)
 \r
     SET(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> ${result_defs} ${result_incs} -i <SOURCE> -O coff -o <OBJECT>")\r
 endmacro()\r
+\r
+#typelib support\r
+macro(ADD_TYPELIB TARGET)\r
+  FOREACH(SOURCE ${ARGN})\r
+    GET_FILENAME_COMPONENT(FILE ${SOURCE} NAME_WE)\r
+    SET(OBJECT ${CMAKE_CURRENT_BINARY_DIR}/${FILE}.tlb)\r
+    ADD_CUSTOM_COMMAND(\r
+      OUTPUT ${OBJECT}\r
+      COMMAND native-widl -I${REACTOS_SOURCE_DIR}/include/dxsdk -I. -I${REACTOS_SOURCE_DIR}/include -I${REACTOS_SOURCE_DIR}/include/psdk -m32 --win32 -t -T ${OBJECT} ${CMAKE_CURRENT_SOURCE_DIR}/${SOURCE}\r
+      DEPENDS native-widl\r
+    )\r
+    LIST(APPEND OBJECTS ${OBJECT})\r
+  ENDFOREACH()\r
+  ADD_CUSTOM_TARGET(${TARGET} ALL DEPENDS ${OBJECTS})\r
+ENDMACRO()\r
index b71256c..7531780 100644 (file)
@@ -109,12 +109,4 @@ endif()
 
 ADD_INTERFACE_DEFINITIONS(psdk ${SOURCE})
 
-ADD_CUSTOM_COMMAND(
-  OUTPUT ${REACTOS_BINARY_DIR}/include/psdk/stdole2.tlb
-  COMMAND native-widl -I${REACTOS_SOURCE_DIR}/include/dxsdk -I. -I${REACTOS_SOURCE_DIR}/include -I${REACTOS_SOURCE_DIR}/include/psdk -m32 --win32 -t -T ${REACTOS_BINARY_DIR}/include/psdk/stdole2.tlb ${REACTOS_SOURCE_DIR}/include/psdk/stdole2.idl
-  DEPENDS native-widl
-)
-
-SET_SOURCE_FILES_PROPERTIES(${REACTOS_BINARY_DIR}/include/psdk/stdole2.tlb PROPERTIES GENERATED TRUE)
-
-ADD_CUSTOM_TARGET(stdole2 ALL DEPENDS ${REACTOS_BINARY_DIR}/include/psdk/stdole2.tlb)
+ADD_TYPELIB(stdole2 stdole2.idl)
index 0aa52c8..b5ad636 100644 (file)
@@ -61,7 +61,7 @@ library stdole
         void *pfnDeferredFillIn;
         SCODE scode;
     } EXCEPINFO;
-
+#ifndef __midl
     [
         odl,
         uuid(00000000-0000-0000-C000-000000000046),
@@ -139,7 +139,7 @@ library stdole
         HRESULT Clone(
                       [out] IEnumVARIANT **ppenum);
     }
-
+#endif /* !__midl */
     typedef [uuid(66504301-BE0F-101A-8BBB-00AA00300CAB), public]
         unsigned long OLE_COLOR;
 
index 6df3473..e1e7e06 100644 (file)
--- a/msc.cmake
+++ b/msc.cmake
@@ -64,4 +64,18 @@ SET(CMAKE_CXX_FLAGS_DEBUG_INIT "/D_DEBUG /MDd /Zi /Ob0 /Od")
 \r
 macro(set_rc_compiler)\r
 # dummy, this workaround is only needed in mingw due to lack of RC support in cmake\r
-endmacro()
\ No newline at end of file
+endmacro()\r
+\r
+#typelib support\r
+macro(ADD_TYPELIB TARGET)\r
+  FOREACH(SOURCE ${ARGN})\r
+    GET_FILENAME_COMPONENT(FILE ${SOURCE} NAME_WE)\r
+    SET(OBJECT ${CMAKE_CURRENT_BINARY_DIR}/${FILE}.tlb)\r
+    ADD_CUSTOM_COMMAND(\r
+      OUTPUT ${OBJECT}\r
+      COMMAND midl /I ${REACTOS_SOURCE_DIR}/include/dxsdk /I . /I ${REACTOS_SOURCE_DIR}/include /I ${REACTOS_SOURCE_DIR}/include/psdk /win32 /tlb ${OBJECT} ${CMAKE_CURRENT_SOURCE_DIR}/${SOURCE}\r
+    )\r
+    LIST(APPEND OBJECTS ${OBJECT})\r
+  ENDFOREACH()\r
+  ADD_CUSTOM_TARGET(${TARGET} ALL DEPENDS ${OBJECTS})\r
+ENDMACRO()
\ No newline at end of file