| 1 | set(ASM_DIALECT "_YASM") |
| 2 | set(CMAKE_ASM${ASM_DIALECT}_SOURCE_FILE_EXTENSIONS asm) |
| 3 | |
| 4 | if(X64) |
| 5 | list(APPEND ASM_FLAGS -DARCH_X86_64=1 -DPIC) |
| 6 | if(APPLE) |
| 7 | set(ARGS -f macho64 -m amd64 -DPREFIX) |
| 8 | elseif(UNIX AND NOT CYGWIN) |
| 9 | set(ARGS -f elf64 -m amd64) |
| 10 | else() |
| 11 | set(ARGS -f win64 -m amd64) |
| 12 | endif() |
| 13 | else() |
| 14 | list(APPEND ASM_FLAGS -DARCH_X86_64=0) |
| 15 | if(APPLE) |
| 16 | set(ARGS -f macho -DPREFIX) |
| 17 | elseif(UNIX AND NOT CYGWIN) |
| 18 | set(ARGS -f elf32) |
| 19 | else() |
| 20 | set(ARGS -f win32 -DPREFIX) |
| 21 | endif() |
| 22 | endif() |
| 23 | |
| 24 | if(GCC) |
| 25 | list(APPEND ASM_FLAGS -DHAVE_ALIGNED_STACK=1) |
| 26 | else() |
| 27 | list(APPEND ASM_FLAGS -DHAVE_ALIGNED_STACK=0) |
| 28 | endif() |
| 29 | |
| 30 | if(HIGH_BIT_DEPTH) |
| 31 | list(APPEND ASM_FLAGS -DHIGH_BIT_DEPTH=1 -DBIT_DEPTH=10) |
| 32 | else() |
| 33 | list(APPEND ASM_FLAGS -DHIGH_BIT_DEPTH=0 -DBIT_DEPTH=8) |
| 34 | endif() |
| 35 | set(YASM_FLAGS ${ARGS} ${ASM_FLAGS} PARENT_SCOPE) |
| 36 | string(REPLACE ";" " " CMAKE_ASM_YASM_COMPILER_ARG1 "${ARGS}") |
| 37 | |
| 38 | # This section exists to override the one in CMakeASMInformation.cmake |
| 39 | # (the default Information file). This removes the <FLAGS> |
| 40 | # thing so that your C compiler flags that have been set via |
| 41 | # set_target_properties don't get passed to yasm and confuse it. |
| 42 | if(NOT CMAKE_ASM${ASM_DIALECT}_COMPILE_OBJECT) |
| 43 | string(REPLACE ";" " " STR_ASM_FLAGS "${ASM_FLAGS}") |
| 44 | set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OBJECT "<CMAKE_ASM${ASM_DIALECT}_COMPILER> ${STR_ASM_FLAGS} -o <OBJECT> <SOURCE>") |
| 45 | endif() |
| 46 | |
| 47 | include(CMakeASMInformation) |
| 48 | set(ASM_DIALECT) |