Re: [CMake] The Xcode generator and ASM_NASM support
On Wed, Oct 3, 2018 at 10:29 AM Gregor Jasny wrote: > Hello, > > > On 10/3/18 6:08 PM, Tom Finegan via CMake wrote: > > I'm trying to get rid of some local CMake scripting for building assembly > > with nasm and yasm, but I'm running into a problem with the Xcode > generator. > > > > For the make and ninja generators, everything is fine-- nasm and yasm are > > both working as expected. > > > This works fine with Visual Studio as well. > > The same is not true for Xcode. When building a target that includes > > assembly files Xcode outputs the warnings like the following during its > > "Check dependencies" step: > > > > warning: no rule to process file of type sourcecode for > > architecture x86_64 > > If the Xcode included nasm and the default Xcode flags are good enough > for you you might get away with: > > set_source_files_properties(${yasm_file} PROPERTIES >XCODE_EXPLICIT_FILE_TYPE "sourcecode.nasm") > > This has no impact on Xcode's behavior at build time; I see the same warning each time Xcode encounters a .asm file. I can see that the property is actually set on the .asm files, so it is at least doing something. Just not quite enough. :) > Otherwise I had to create a add_custom_command for every file and > pointed to a shell script that based on all architectures found in ARCHS > ran yasm and in the end called lipo to create the final fat .o file. > Indeed. I use add_custom_command() and then add the objects into a dependent target. I was hoping to drop the script that was doing the work. Oh well. Just in case, here's the util macro I'm using to do the work-- maybe someone can spot something silly I've missed: macro(add_asm_object_library target dependent_target sources) if("${${sources}}" STREQUAL "") message(FATAL_ERROR "--- add_asm_object_library: empty source list.") endif() add_library(${target} OBJECT ${${sources}}) target_sources(${dependent_target} PRIVATE $) if("${CMAKE_ASM_NASM_COMPILER}" MATCHES "nasm") # Include path handling in nasm is broken. If the trailing slash is omitted # nasm cannot find includes. Explicitly add the necessary include paths with # trailing slashes. target_compile_options(${target} PRIVATE "-I${AOM_ROOT}/" "-I${AOM_CONFIG_DIR}/") endif() if(XCODE) set_source_files_properties(${${sources}} PROPERTIES XCODE_EXPLICIT_FILE_TYPE "sourcecode.nasm") endif() list(APPEND AOM_LIB_TARGETS ${target}) endmacro() > > Hope that helps, > -Gregor > -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: https://cmake.org/mailman/listinfo/cmake
Re: [CMake] The Xcode generator and ASM_NASM support
Hello, On 10/3/18 6:08 PM, Tom Finegan via CMake wrote: I'm trying to get rid of some local CMake scripting for building assembly with nasm and yasm, but I'm running into a problem with the Xcode generator. For the make and ninja generators, everything is fine-- nasm and yasm are both working as expected. The same is not true for Xcode. When building a target that includes assembly files Xcode outputs the warnings like the following during its "Check dependencies" step: warning: no rule to process file of type sourcecode for architecture x86_64 If the Xcode included nasm and the default Xcode flags are good enough for you you might get away with: set_source_files_properties(${yasm_file} PROPERTIES XCODE_EXPLICIT_FILE_TYPE "sourcecode.nasm") Otherwise I had to create a add_custom_command for every file and pointed to a shell script that based on all architectures found in ARCHS ran yasm and in the end called lipo to create the final fat .o file. Hope that helps, -Gregor -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: https://cmake.org/mailman/listinfo/cmake
[CMake] The Xcode generator and ASM_NASM support
I'm trying to get rid of some local CMake scripting for building assembly with nasm and yasm, but I'm running into a problem with the Xcode generator. For the make and ninja generators, everything is fine-- nasm and yasm are both working as expected. The same is not true for Xcode. When building a target that includes assembly files Xcode outputs the warnings like the following during its "Check dependencies" step: warning: no rule to process file of type sourcecode for architecture x86_64 This is with CMake v3.12.1, but I'm pretty sure this has nothing to do with CMake version. Is there an extra step necessary to get this working with the Xcode generator? I would like to get rid of the extra cmake scripting that handles assembly in the project I'm working on. I have tried the following: 1) Building an object library with the assembly sources. 2) Building a static library with the assembly sources. 3) Adding the assembly sources to an existing library target. All attempts produce an Xcode project that outputs the warning noted above, and then fails to build because of link errors or missing object files (depending on the method used). Thanks for any advice, Tom -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: https://cmake.org/mailman/listinfo/cmake