[cmake-commits] alex committed CMakeLists.txt NONE 1.1 main-linux-x86-gas.s NONE 1.1 main.c NONE 1.1

cmake-commits at cmake.org cmake-commits at cmake.org
Thu Jul 5 09:05:42 EDT 2007


Update of /cvsroot/CMake/CMake/Tests/Assembler
In directory public:/mounts/ram/cvs-serv31579/Assembler

Added Files:
	CMakeLists.txt main-linux-x86-gas.s main.c 
Log Message:

ENH: add a simple assembler test

Alex


--- NEW FILE: CMakeLists.txt ---
project(Assembler)

set(SRCS)

# if no file has been set as source and we are on linux with an x86 processor try to use the gas/as assembler
if(NOT SRCS AND CMAKE_SYSTEM_NAME MATCHES Linux AND CMAKE_SYSTEM_PROCESSOR MATCHES "[ix].?86$")
  message(STATUS "Trying to enable ASM-ATT for Linux/x86")
  enable_language(ASM-ATT)
  if(CMAKE_ASM-ATT_COMPILER_WORKS)
    message(STATUS "Trying to enable ASM-ATT for Linux/x86 - succeeded")
    # this assembler file was created using gcc -S main.c
    set(SRCS main-linux-x86-gas.s)
  endif(CMAKE_ASM-ATT_COMPILER_WORKS)
endif(NOT SRCS AND CMAKE_SYSTEM_NAME MATCHES Linux AND CMAKE_SYSTEM_PROCESSOR MATCHES "[ix].?86$")

if(NOT SRCS)
  message(STATUS "No assembler enabled, using C")
  set(SRCS main.c)
endif(NOT SRCS)

add_executable(HelloAsm ${SRCS})
set_target_properties(HelloAsm PROPERTIES LINKER_LANGUAGE C)

--- NEW FILE: main.c ---
#include <stdio.h>

int main(int argc, char** argv)
{
  printf("hello assembler world, %d arguments  given\n", argc);
  return 0;
}

--- NEW FILE: main-linux-x86-gas.s ---
	.file	"main.c"
	.section	.rodata
	.align 4
.LC0:
	.string	"hello assembler world, %d arguments  given\n"
	.text
.globl main
	.type	main, @function
main:
	leal	4(%esp), %ecx
	andl	$-16, %esp
	pushl	-4(%ecx)
	pushl	%ebp
	movl	%esp, %ebp
	pushl	%ecx
	subl	$20, %esp
	movl	(%ecx), %eax
	movl	%eax, 4(%esp)
	movl	$.LC0, (%esp)
	call	printf
	movl	$0, %eax
	addl	$20, %esp
	popl	%ecx
	popl	%ebp
	leal	-4(%ecx), %esp
	ret
	.size	main, .-main
	.ident	"GCC: (GNU) 4.1.2 20060928 (prerelease) (Ubuntu 4.1.1-13ubuntu5)"
	.section	.note.GNU-stack,"", at progbits



More information about the Cmake-commits mailing list