Re: [CMake] The Xcode generator and ASM_NASM support

2018-10-03 Thread Tom Finegan via CMake
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

2018-10-03 Thread Gregor Jasny via CMake

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

2018-10-03 Thread Tom Finegan via CMake
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