[LLVMdev] [llvm] r201072 - [CMake] Introduce llvm_add_library().

Stephen Kelly steveire at gmail.com
Mon Feb 10 01:54:32 PST 2014


NAKAMURA Takumi wrote:

> [CMake] Introduce llvm_add_library().

I recommend moving away from wrappers like this. They indicate that either 
CMake is not providing the interfaces needed, or not propagating them, or 
that they exist but are not used. 

Such wrappers don't parse the arguments in the same way as the wrapped 
command etc. Wrappers are not good API proxies. Additionally, you put people 
who know cmake already at a disadvantage because you make the code look like 
'not cmake code' by using llvm_add_library instead of add_library, the cmake 
command. Making that wrapper macro also invoke target_link_libraries looks 
odd to someone familiar with cmake.

I don't fully know what this wrapper is needed for, but I looked at it a 
bit.

  if(ARG_MODULE)
    set_property(TARGET ${name} PROPERTY SUFFIX ${LLVM_PLUGIN_EXT})
  endif()

  if(ARG_SHARED)
    if (MSVC)
      set_target_properties(${name}
        PROPERTIES
        IMPORT_SUFFIX ".imp")
    endif ()
  endif()


CMake provides CMAKE_SHARED_MODULE_SUFFIX and CMAKE_IMPORT_LIBRARY_SUFFIX. 
Can you set those at directory scope instead of setting the target property 
in the macro?


Anyway, just a note to consider moving instead in a direction of fewer 
wrappers, rather than more. I'm not familiar enough with the llvm 
buildsystem to know why you're doing some of the things you're doing, but if 
you tell us about the gaps in the cmake offering we can try to fill them.

Thanks,

Steve.





More information about the llvm-dev mailing list