Opened 3 years ago
Closed 2 years ago
#64528 closed defect (fixed)
x265 fails to build for ppc on 10.6.8 (Rosetta): correct syntax for OVERRIDE_SYSTEM_PROCESSOR in Cmake?
Reported by: | barracuda156 | Owned by: | barracuda156 |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.7.1 |
Keywords: | powerpc, snowleopard, rosetta | Cc: | |
Port: | x265 |
Description
cc1plus: error: unrecognized command line option "-march=i686" cc1plus: error: unrecognized command line option "-march=i686" cc1plus: error: unrecognized command line option "-march=i686" make[2]: *** [common/CMakeFiles/common.dir/lowpassdct.cpp.o] Error 1 make[2]: *** [common/CMakeFiles/common.dir/pixel.cpp.o] Error 1 make[2]: *** [common/CMakeFiles/common.dir/dct.cpp.o] Error 1 make[2]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_multimedia_x265/x265/work/build' make[1]: *** [common/CMakeFiles/common.dir/all] Error 2 make[1]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_multimedia_x265/x265/work/build' make: *** [all] Error 2 make: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_multimedia_x265/x265/work/build' Command failed: cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_multimedia_x265/x265/work/build" && /usr/bin/make -j4 -w all VERBOSE=ON Exit code: 2 Error: Failed to build x265: command execution failed
Attachments (1)
Change History (7)
Changed 3 years ago by barracuda156
comment:1 Changed 3 years ago by barracuda156
comment:2 Changed 3 years ago by barracuda156
This looks problematic: no ppc32 option in POWER_ALIASES
, and this STREQUAL ""
with -m32
seems to result in a wrong flag.
# System architecture detection string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" SYSPROC) set(X86_ALIASES x86 i386 i686 x86_64 amd64) set(ARM_ALIASES armv6l armv7l aarch64) list(FIND X86_ALIASES "${SYSPROC}" X86MATCH) list(FIND ARM_ALIASES "${SYSPROC}" ARMMATCH) set(POWER_ALIASES ppc64 ppc64le) list(FIND POWER_ALIASES "${SYSPROC}" POWERMATCH) if("${SYSPROC}" STREQUAL "" OR X86MATCH GREATER "-1") set(X86 1) add_definitions(-DX265_ARCH_X86=1) if(CMAKE_CXX_FLAGS STREQUAL "-m32") message(STATUS "Detected x86 target processor") elseif("${CMAKE_SIZEOF_VOID_P}" MATCHES 8) set(X64 1) add_definitions(-DX86_64=1) message(STATUS "Detected x86_64 target processor") endif() elseif(POWERMATCH GREATER "-1") message(STATUS "Detected POWER target processor") set(POWER 1) add_definitions(-DX265_ARCH_POWER=1) if("${CMAKE_SIZEOF_VOID_P}" MATCHES 8) set(PPC64 1) add_definitions(-DPPC64=1) message(STATUS "Detected POWER PPC64 target processor") endif() elseif(ARMMATCH GREATER "-1") if(CROSS_COMPILE_ARM) message(STATUS "Cross compiling for ARM arch") else() set(CROSS_COMPILE_ARM 0) endif() set(ARM 1) if("${CMAKE_SIZEOF_VOID_P}" MATCHES 8) message(STATUS "Detected ARM64 target processor") set(ARM64 1) add_definitions(-DX265_ARCH_ARM=1 -DX265_ARCH_ARM64=1 -DHAVE_ARMV6=0) else() message(STATUS "Detected ARM target processor") add_definitions(-DX265_ARCH_ARM=1 -DX265_ARCH_ARM64=0 -DHAVE_ARMV6=1) endif() else() message(STATUS "CMAKE_SYSTEM_PROCESSOR value `${CMAKE_SYSTEM_PROCESSOR}` is unknown") message(STATUS "Please add this value near ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE}") endif()
comment:3 Changed 3 years ago by barracuda156
Does anyone know correct syntax for this?
if(DEFINED OVERRIDE_SYSTEM_PROCESSOR) set(CMAKE_SYSTEM_PROCESSOR ${OVERRIDE_SYSTEM_PROCESSOR}) endif()
On 10.6 PPC x265
just builds with no changes to port file. So the only problem is that on 10.6.8 X86 gets forced by Cmake.
Macports has this patch quoted above, however adding configure.env-append OVERRIDE_SYSTEM_PROCESSOR="POWER"
does not help.
comment:4 Changed 3 years ago by barracuda156
Summary: | x265 fails to build for ppc on 10.6.8 (Rosetta): error: unrecognized command line option "-march=i686" → x265 fails to build for ppc on 10.6.8 (Rosetta): correct syntax for OVERRIDE_SYSTEM_PROCESSOR in Cmake? |
---|
comment:5 Changed 2 years ago by barracuda156
Ok, this works:
platform darwin 10 { # https://trac.macports.org/ticket/64528 if {${build_arch} eq "ppc"} { configure.args-append -DOVERRIDE_SYSTEM_PROCESSOR="ppc" } }
But the build fails due to: https://trac.macports.org/ticket/64781
UPD. Fixed. PR: https://github.com/macports/macports-ports/pull/15586
comment:6 Changed 2 years ago by barracuda156
Owner: | set to barracuda156 |
---|---|
Resolution: | → fixed |
Status: | new → closed |
Note: See
TracTickets for help on using
tickets.
This is where those flags come from
/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_multimedia_x265/x265/work/x265-3.4/source/CMakeLists.txt
:And then CMake generates this in
/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_multimedia_x265/x265/work/build/encoder/CMakeFiles/encoder.dir/flags.make
:Which obviously fails.