[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