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&…
==============================================================================
--- 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…
==============================================================================
--- 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()