Author: tkreuzer
Date: Sun Apr 29 19:04:02 2012
New Revision: 56447

URL: http://svn.reactos.org/svn/reactos?rev=56447&view=rev
Log:
[CMAKE]
- seperate generation of importlibs from spec2def (generate_import_lib function)

Modified:
    trunk/reactos/cmake/gcc.cmake
    trunk/reactos/cmake/msvc.cmake

Modified: trunk/reactos/cmake/gcc.cmake
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/cmake/gcc.cmake?rev=56447&r1=56446&r2=56447&view=diff
==============================================================================
--- trunk/reactos/cmake/gcc.cmake [iso-8859-1] (original)
+++ trunk/reactos/cmake/gcc.cmake [iso-8859-1] Sun Apr 29 19:04:02 2012
@@ -217,11 +217,28 @@
     set(DECO_OPTION "-@")
 endif()
 
+function(generate_import_lib _libname _dllname _spec_file)
+    # generate the def for the import lib
+    add_custom_command(
+        OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_libname}_implib.def
+        COMMAND native-spec2def -n=${_dllname} -a=${ARCH2} 
-d=${CMAKE_CURRENT_BINARY_DIR}/${_libname}_implib.def 
${CMAKE_CURRENT_SOURCE_DIR}/${_spec_file}
+        DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${_spec_file} native-spec2def)
+    
set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/${_libname}_implib.def 
PROPERTIES EXTERNAL_OBJECT TRUE)
+
+    #create normal importlib
+    _add_library(${_libname} STATIC EXCLUDE_FROM_ALL 
${CMAKE_CURRENT_BINARY_DIR}/${_libname}_implib.def)
+    set_target_properties(${_libname} PROPERTIES LINKER_LANGUAGE "IMPLIB" 
PREFIX "")
+
+    #create delayed importlib
+    _add_library(${_libname}_delayed STATIC EXCLUDE_FROM_ALL 
${CMAKE_CURRENT_BINARY_DIR}/${_libname}_implib.def)
+    set_target_properties(${_libname}_delayed PROPERTIES LINKER_LANGUAGE 
"IMPLIB_DELAYED" PREFIX "")
+endfunction()
+
 # Cute little hack to produce import libs
 set(CMAKE_IMPLIB_CREATE_STATIC_LIBRARY "${CMAKE_DLLTOOL} --def <OBJECTS> 
--kill-at --output-lib=<TARGET>")
 set(CMAKE_IMPLIB_DELAYED_CREATE_STATIC_LIBRARY "${CMAKE_DLLTOOL} --def 
<OBJECTS> --kill-at --output-delaylib=<TARGET>")
 function(spec2def _dllname _spec_file)
-    # do we also want to add impotlib targets?
+    # do we also want to add importlib targets?
     if(${ARGC} GREATER 2)
         if(${ARGN} STREQUAL "ADD_IMPORTLIB")
             set(__add_importlib TRUE)
@@ -245,20 +262,7 @@
         DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${_spec_file} native-spec2def)
 
     if(__add_importlib)
-        # generate the def for the export lib
-        add_custom_command(
-            OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_file}_implib.def
-            COMMAND native-spec2def -n=${_dllname} -a=${ARCH2} 
-d=${CMAKE_CURRENT_BINARY_DIR}/${_file}_implib.def 
${CMAKE_CURRENT_SOURCE_DIR}/${_spec_file}
-            DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${_spec_file} native-spec2def)
-        
set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/${_file}_implib.def 
PROPERTIES EXTERNAL_OBJECT TRUE)
-
-        #create normal importlib
-        _add_library(lib${_file} STATIC EXCLUDE_FROM_ALL 
${CMAKE_CURRENT_BINARY_DIR}/${_file}_implib.def)
-        set_target_properties(lib${_file} PROPERTIES LINKER_LANGUAGE "IMPLIB" 
PREFIX "")
-
-        #create delayed importlib
-        _add_library(lib${_file}_delayed STATIC EXCLUDE_FROM_ALL 
${CMAKE_CURRENT_BINARY_DIR}/${_file}_implib.def)
-        set_target_properties(lib${_file}_delayed PROPERTIES LINKER_LANGUAGE 
"IMPLIB_DELAYED" PREFIX "")
+        generate_import_lib(lib${_file} ${_dllname} ${_spec_file})
     endif()
 endfunction()
 

Modified: trunk/reactos/cmake/msvc.cmake
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/cmake/msvc.cmake?rev=56447&r1=56446&r2=56447&view=diff
==============================================================================
--- trunk/reactos/cmake/msvc.cmake [iso-8859-1] (original)
+++ trunk/reactos/cmake/msvc.cmake [iso-8859-1] Sun Apr 29 19:04:02 2012
@@ -124,6 +124,29 @@
     target_link_libraries(${MODULE} delayimp)
 endmacro()
 
+function(generate_import_lib _libname _dllname _spec_file)
+    # Generate the asm stub file and the def file for import library
+    add_custom_command(
+        OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_libname}_stubs.asm 
${CMAKE_CURRENT_BINARY_DIR}/${_libname}_exp.def
+        COMMAND native-spec2def --ms --kill-at -a=${SPEC2DEF_ARCH} --implib 
-n=${_dllname} -d=${CMAKE_CURRENT_BINARY_DIR}/${_libname}_exp.def 
-l=${CMAKE_CURRENT_BINARY_DIR}/${_libname}_stubs.asm 
${CMAKE_CURRENT_SOURCE_DIR}/${_spec_file}
+        DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${_spec_file} native-spec2def)
+
+    # be clear about the "language"
+    # Thanks MS for creating a stupid linker
+    
set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/${_libname}_stubs.asm 
PROPERTIES LANGUAGE "STUB_ASM")
+
+    # add our library
+    # NOTE: as stub file and def file are generated in one pass, depending on 
one is like depending on the other
+    add_library(${_libname} STATIC EXCLUDE_FROM_ALL
+        ${CMAKE_CURRENT_BINARY_DIR}/${_libname}_stubs.asm)
+
+    add_dependencies(${_libname} 
${CMAKE_CURRENT_BINARY_DIR}\\${_libname}_exp.def)
+
+    # set correct "link rule"
+    set_target_properties(${_libname} PROPERTIES LINKER_LANGUAGE "IMPLIB"
+        STATIC_LIBRARY_FLAGS 
"/DEF:${CMAKE_CURRENT_BINARY_DIR}\\${_libname}_exp.def")
+endfunction()
+
 if(${ARCH} MATCHES amd64)
     add_definitions(/D__x86_64)
     set(SPEC2DEF_ARCH x86_64)
@@ -154,24 +177,8 @@
         COMMAND native-spec2def --ms --kill-at -a=${SPEC2DEF_ARCH} 
-n=${_dllname} -d=${CMAKE_CURRENT_BINARY_DIR}/${_file}.def 
-s=${CMAKE_CURRENT_BINARY_DIR}/${_file}_stubs.c 
${CMAKE_CURRENT_SOURCE_DIR}/${_spec_file}
         DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${_spec_file} native-spec2def)
 
-        if(__add_importlib)
-        # Generate the asm stub file and the export def file for import library
-        add_custom_command(
-            OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/lib${_file}_stubs.asm 
${CMAKE_CURRENT_BINARY_DIR}/lib${_file}_exp.def
-            COMMAND native-spec2def --ms --kill-at -a=${SPEC2DEF_ARCH} 
--implib -n=${_dllname} -d=${CMAKE_CURRENT_BINARY_DIR}/lib${_file}_exp.def 
-l=${CMAKE_CURRENT_BINARY_DIR}/lib${_file}_stubs.asm 
${CMAKE_CURRENT_SOURCE_DIR}/${_spec_file}
-            DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${_spec_file} native-spec2def)
-        # be clear about the "language"
-        # Thanks MS for creating a stupid linker
-        
set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/lib${_file}_stubs.asm 
PROPERTIES LANGUAGE "STUB_ASM")
-
-        # add our library
-        # NOTE: as stub file and def file are generated in one pass, depending 
on one is like depending on the other
-        add_library(lib${_file} STATIC EXCLUDE_FROM_ALL
-            ${CMAKE_CURRENT_BINARY_DIR}/lib${_file}_stubs.asm)
-
-        # set correct "link rule"
-        set_target_properties(lib${_file} PROPERTIES LINKER_LANGUAGE "IMPLIB"
-            STATIC_LIBRARY_FLAGS 
"/DEF:${CMAKE_CURRENT_BINARY_DIR}\\lib${_file}_exp.def")
+    if(__add_importlib)
+        generate_import_lib(lib${_file} ${_dllname} ${_spec_file})
     endif()
 endfunction()
 


Reply via email to