From e12491493f5dce937f38fd2f6e468a18f5d3cb69 Mon Sep 17 00:00:00 2001 From: Hector Martin Date: Sat, 12 Mar 2011 18:55:18 +0100 Subject: [PATCH] Add yasm support CMake modules --- CMakeLists.txt | 6 +++++ Modules/CMakeASM_YASMInformation.cmake | 27 ++++++++++++++++++++ Modules/CMakeDetermineASM_YASMCompiler.cmake | 4 +++ Modules/CMakeTestASM_YASMCompiler.cmake | 3 +++ 4 files changed, 40 insertions(+) create mode 100644 Modules/CMakeASM_YASMInformation.cmake create mode 100644 Modules/CMakeDetermineASM_YASMCompiler.cmake create mode 100644 Modules/CMakeTestASM_YASMCompiler.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 8021333..c8f5f11 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,6 +22,12 @@ cmake_minimum_required(VERSION 2.6) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/Modules/") +if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(BITS 64) +else() + set(BITS 32) +endif() + find_package(Threads REQUIRED) find_package(JACK REQUIRED) find_package(Qt4) diff --git a/Modules/CMakeASM_YASMInformation.cmake b/Modules/CMakeASM_YASMInformation.cmake new file mode 100644 index 0000000..50b2848 --- /dev/null +++ b/Modules/CMakeASM_YASMInformation.cmake @@ -0,0 +1,27 @@ +set(ASM_DIALECT "_YASM") +set(CMAKE_ASM${ASM_DIALECT}_SOURCE_FILE_EXTENSIONS asm) + +if(UNIX) + if(BITS EQUAL 64) + set(CMAKE_ASM_YASM_COMPILER_ARG1 "-f elf64 -DARCH_X86_64") + else() + set(CMAKE_ASM_YASM_COMPILER_ARG1 "-f elf32") + endif() +else() + if(BITS EQUAL 64) + set(CMAKE_ASM_YASM_COMPILER_ARG1 "-f win64 -DARCH_X86_64") + else() + set(CMAKE_ASM_YASM_COMPILER_ARG1 "-f win32") + endif() +endif() + +# This section exists to override the one in CMakeASMInformation.cmake +# (the default Information file). This removes the +# thing so that your C compiler flags that have been set via +# set_target_properties don't get passed to yasm and confuse it. +if(NOT CMAKE_ASM${ASM_DIALECT}_COMPILE_OBJECT) + set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OBJECT " -o ") +endif() + +include(CMakeASMInformation) +set(ASM_DIALECT) diff --git a/Modules/CMakeDetermineASM_YASMCompiler.cmake b/Modules/CMakeDetermineASM_YASMCompiler.cmake new file mode 100644 index 0000000..bf43442 --- /dev/null +++ b/Modules/CMakeDetermineASM_YASMCompiler.cmake @@ -0,0 +1,4 @@ +set(ASM_DIALECT "_YASM") +set(CMAKE_ASM${ASM_DIALECT}_COMPILER_INIT ${_CMAKE_TOOLCHAIN_PREFIX}yasm) +include(CMakeDetermineASMCompiler) +set(ASM_DIALECT) diff --git a/Modules/CMakeTestASM_YASMCompiler.cmake b/Modules/CMakeTestASM_YASMCompiler.cmake new file mode 100644 index 0000000..c668668 --- /dev/null +++ b/Modules/CMakeTestASM_YASMCompiler.cmake @@ -0,0 +1,3 @@ +set(ASM_DIALECT "_YASM") +include(CMakeTestASMCompiler) +set(ASM_DIALECT)