123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- macro(cpu CPU_STR)
- set(CPU_STR "combined")
- if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "i386")
- set(CPU_STR "i386")
- elseif (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64")
- set(CPU_STR "x86_64")
- elseif (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "AMD64")
- if(${CMAKE_C_SIZEOF_DATA_PTR} STREQUAL "8")
- set(CPU_STR "x86_64")
- else()
- set(CPU_STR "i386")
- endif()
- elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch" OR ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64")
- set(CPU_STR "arm")
- elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "mips")
- set(CPU_STR "mips")
- elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "ppc")
- set(CPU_STR "ppc")
- endif()
- endmacro ()
- macro(abi ABI_STR)
- set(ABI_STR "sysv")
- if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
- set(ABI_STR "ms")
- elseif(${CMAKE_SYSTEM_NAME} STREQUAL "CYGWIN")
- set(ABI_STR "ms")
- elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch" OR ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64")
- set(ABI_STR "aapcs")
- elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "mips")
- set(ABI_STR "o32")
- endif()
- endmacro ()
- macro(binaryformat BF_STR)
- set(BF_STR "elf")
- if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
- set(BF_STR "pe")
- elseif(${CMAKE_SYSTEM_NAME} STREQUAL "CYGWIN")
- set(BF_STR "pe")
- elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "AIX")
- set(BF_STR "xcoff")
- elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
- set(BF_STR "macho")
- endif()
- endmacro ()
- set(ABI_STR)
- abi(ABI_STR)
- set(BF_STR)
- binaryformat(BF_STR)
- set(CPU_STR)
- cpu(CPU_STR)
- macro(parse_asm JUMP_SRC MAKE_SRC)
- # ARM/AAPCS/ELF
- if(${CMAKE_C_SIZEOF_DATA_PTR} STREQUAL "4" AND ${CPU_STR} STREQUAL "arm" AND ${ABI_STR} STREQUAL "aapcs" AND ${BF_STR} STREQUAL "elf")
- set(JUMP_SRC "asm/jump_arm_aapcs_elf_gas.S")
- set(MAKE_SRC "asm/make_arm_aapcs_elf_gas.S")
- # ARM/AAPCS/MACH-O
- elseif(${CMAKE_C_SIZEOF_DATA_PTR} STREQUAL "4" AND ${CPU_STR} STREQUAL "arm" AND ${ABI_STR} STREQUAL "aapcs" AND ${BF_STR} STREQUAL "macho")
- set(JUMP_SRC "asm/jump_arm_aapcs_macho_gas.S")
- set(MAKE_SRC "asm/make_arm_aapcs_macho_gas.S")
- # ARM64/AAPCS/ELF
- elseif(${CMAKE_C_SIZEOF_DATA_PTR} STREQUAL "8" AND ${CPU_STR} STREQUAL "arm" AND ${ABI_STR} STREQUAL "aapcs" AND ${BF_STR} STREQUAL "elf")
- set(JUMP_SRC "asm/jump_arm64_aapcs_elf_gas.S")
- set(MAKE_SRC "asm/make_arm64_aapcs_elf_gas.S")
- # ARM64/AAPCS/MACH-O
- elseif(${CMAKE_C_SIZEOF_DATA_PTR} STREQUAL "8" AND ${CPU_STR} STREQUAL "arm" AND ${ABI_STR} STREQUAL "aapcs" AND ${BF_STR} STREQUAL "macho")
- set(JUMP_SRC "asm/jump_arm64_aapcs_macho_gas.S")
- set(MAKE_SRC "asm/make_arm64_aapcs_macho_gas.S")
- # MIPS/O32/ELF
- elseif(${CMAKE_C_SIZEOF_DATA_PTR} STREQUAL "4" AND ${CPU_STR} STREQUAL "mips" AND ${ABI_STR} STREQUAL "o32" AND ${BF_STR} STREQUAL "elf")
- set(JUMP_SRC "asm/jump_mips32_o32_elf_gas.S")
- set(MAKE_SRC "asm/make_mips32_o32_elf_gas.S")
- # MIPS/O32/ELF
- elseif(${CMAKE_C_SIZEOF_DATA_PTR} STREQUAL "4" AND ${CPU_STR} STREQUAL "ppc" AND ${ABI_STR} STREQUAL "sysv" AND ${BF_STR} STREQUAL "elf")
- set(JUMP_SRC "asm/jump_ppc32_sysv_elf_gas.S")
- set(MAKE_SRC "asm/make_ppc32_sysv_elf_gas.S")
- # MIPS/O32/MACH-O
- elseif(${CMAKE_C_SIZEOF_DATA_PTR} STREQUAL "4" AND ${CPU_STR} STREQUAL "ppc" AND ${ABI_STR} STREQUAL "sysv" AND ${BF_STR} STREQUAL "macho")
- set(JUMP_SRC "asm/jump_ppc32_sysv_macho_gas.S")
- set(MAKE_SRC "asm/make_ppc32_sysv_macho_gas.S")
- # POWERPC_32/SYSV/XCOFF
- elseif(${CMAKE_C_SIZEOF_DATA_PTR} STREQUAL "4" AND ${CPU_STR} STREQUAL "ppc" AND ${ABI_STR} STREQUAL "sysv" AND ${BF_STR} STREQUAL "xcoff")
- set(JUMP_SRC "asm/jump_ppc32_sysv_xcoff_gas.S")
- set(MAKE_SRC "asm/make_ppc32_sysv_xcoff_gas.S")
- # POWERPC_64/SYSV/ELF
- elseif(${CMAKE_C_SIZEOF_DATA_PTR} STREQUAL "8" AND ${CPU_STR} STREQUAL "ppc" AND ${ABI_STR} STREQUAL "sysv" AND ${BF_STR} STREQUAL "elf")
- set(JUMP_SRC "asm/jump_ppc64_sysv_elf_gas.S")
- set(MAKE_SRC "asm/make_ppc64_sysv_elf_gas.S")
- # POWERPC_64/SYSV/MACH-O
- elseif(${CMAKE_C_SIZEOF_DATA_PTR} STREQUAL "8" AND ${CPU_STR} STREQUAL "ppc" AND ${ABI_STR} STREQUAL "sysv" AND ${BF_STR} STREQUAL "macho")
- set(JUMP_SRC "asm/jump_ppc64_sysv_macho_gas.S")
- set(MAKE_SRC "asm/make_ppc64_sysv_macho_gas.S")
- # POWERPC_64/SYSV/XCOFF(to do 32_64)
- elseif(${CMAKE_C_SIZEOF_DATA_PTR} STREQUAL "8" AND ${CPU_STR} STREQUAL "ppc" AND ${ABI_STR} STREQUAL "sysv" AND ${BF_STR} STREQUAL "macho")
- set(JUMP_SRC "asm/jump_ppc32_ppc64_sysv_macho_gas.S")
- set(MAKE_SRC "asm/make_ppc32_ppc64_sysv_macho_gas.S")
- # X86/SYSV/ELF
- elseif(${CMAKE_C_SIZEOF_DATA_PTR} STREQUAL "4" AND ${CPU_STR} STREQUAL "i386" AND ${ABI_STR} STREQUAL "sysv" AND ${BF_STR} STREQUAL "elf")
- set(JUMP_SRC "asm/jump_i386_sysv_elf_gas.S")
- set(MAKE_SRC "asm/make_i386_sysv_elf_gas.S")
- # X86/SYSV/MACH-O
- elseif(${CMAKE_C_SIZEOF_DATA_PTR} STREQUAL "4" AND ${CPU_STR} STREQUAL "i386" AND ${ABI_STR} STREQUAL "sysv" AND ${BF_STR} STREQUAL "macho")
- set(JUMP_SRC "asm/jump_i386_sysv_macho_gas.S")
- set(MAKE_SRC "asm/make_i386_sysv_macho_gas.S")
- # X86/MS/PE
- elseif(${CMAKE_C_SIZEOF_DATA_PTR} STREQUAL "4" AND ${CPU_STR} STREQUAL "i386" AND ${ABI_STR} STREQUAL "ms" AND ${BF_STR} STREQUAL "pe")
- if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang")
- set(JUMP_SRC "asm/jump_i386_ms_pe_gas.asm")
- set(MAKE_SRC "asm/make_i386_ms_pe_gas.asm")
- else()
- set(JUMP_SRC "asm/jump_i386_ms_pe_masm.asm")
- set(MAKE_SRC "asm/make_i386_ms_pe_masm.asm")
- endif()
- # X86_64/SYSV/ELF
- elseif((${CMAKE_C_SIZEOF_DATA_PTR} STREQUAL "8") AND (${CPU_STR} STREQUAL "x86_64") AND (${ABI_STR} STREQUAL "sysv") AND (${BF_STR} STREQUAL "elf"))
- set(JUMP_SRC "asm/jump_x86_64_sysv_elf_gas.S")
- set(MAKE_SRC "asm/make_x86_64_sysv_elf_gas.S")
- # X86_64/SYSV/MACH-O
- elseif(${CMAKE_C_SIZEOF_DATA_PTR} STREQUAL "4" AND ${CPU_STR} STREQUAL "x86_64" AND ${ABI_STR} STREQUAL "sysv" AND ${BF_STR} STREQUAL "macho")
- set(JUMP_SRC "asm/jump_x86_64_sysv_macho_gas.S")
- set(MAKE_SRC "asm/make_x86_64_sysv_macho_gas.S")
- # X86_64/MS/PE
- elseif(${CMAKE_C_SIZEOF_DATA_PTR} STREQUAL "8" AND ${CPU_STR} STREQUAL "x86_64" AND ${ABI_STR} STREQUAL "ms" AND ${BF_STR} STREQUAL "pe")
- if((${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU") OR (${CMAKE_CXX_COMPILER_ID} STREQUAL "AppleClang"))
- set(JUMP_SRC "asm/jump_x86_64_ms_pe_gas.asm")
- set(MAKE_SRC "asm/make_x86_64_ms_pe_gas.asm")
- else()
- set(JUMP_SRC "asm/jump_x86_64_ms_pe_masm.asm")
- set(MAKE_SRC "asm/make_x86_64_ms_pe_masm.asm")
- endif()
- # X86_64/SYSV/X32
- elseif(${CMAKE_C_SIZEOF_DATA_PTR} STREQUAL "8" AND ${CPU_STR} STREQUAL "x86_64" AND ${ABI_STR} STREQUAL "sysv" AND ${BF_STR} STREQUAL "macho")
- set(JUMP_SRC "asm/jump_x86_64_sysv_macho_gas.S")
- set(MAKE_SRC "asm/make_x86_64_sysv_macho_gas.S")
- # X86 universal
- elseif(${CMAKE_C_SIZEOF_DATA_PTR} STREQUAL "8" AND ${CPU_STR} STREQUAL "universal" AND ${ABI_STR} STREQUAL "sysv" AND ${BF_STR} STREQUAL "macho")
- set(JUMP_SRC "asm/jump_i386_x86_64_sysv_macho_gas.S")
- set(MAKE_SRC "asm/make_i386_x86_64_sysv_macho_gas.S")
- # COMBINED
- elseif(${CMAKE_C_SIZEOF_DATA_PTR} STREQUAL "8" AND ${CPU_STR} STREQUAL "combined" AND ${ABI_STR} STREQUAL "sysv" AND ${BF_STR} STREQUAL "macho")
- set(JUMP_SRC "asm/jump_combined_sysv_macho_gas.S")
- set(MAKE_SRC "asm/make_combined_sysv_macho_gas.S")
- endif()
- endmacro ()
|