OK. I wonder if this helps icu4c as well.

On 2016/01/27 16:57, David Coppa wrote:
> 
> With the diff below, I have a working cmake-3.4.3 package for arm.
> 
> One can say I lost the battle and gave up, but let's face reality:
> base libstdc++ on arm is FUBAR, there's not much we can do...
> 
> It is plagued by a plethora of bugs:
> 
> It forced us to use '-O1 -fno-stack-protector'.
> It broke CMake's built-in ELF parser.
> And finally ifstream is bugged when linking with -lpthread.
> 
> See my previous "std::ifstream is broken on arm" mail on bugs@.
> 
> If you want to play, you can install my packages with:
> 
> # export PKG_PATH=http://open.bsdgeek.it/arm/
> # pkg_add cmake ninja
> 
> It will save you some pain, since it took me ~1 day to build cmake
> on a BBB.
> 
> I've already built some cmake-based ports for testing purposes, and
> all seems good so far.
> 
> Comments?
> OKs?
> 
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/devel/cmake/Makefile,v
> retrieving revision 1.139
> diff -u -p -u -p -r1.139 Makefile
> --- Makefile  26 Jan 2016 08:44:07 -0000      1.139
> +++ Makefile  27 Jan 2016 13:10:03 -0000
> @@ -2,12 +2,6 @@
>  
>  DPB_PROPERTIES =parallel
>  
> -# avoid segfaults from binaries compiled and then used during the build
> -.if ${MACHINE_ARCH} == "arm"
> -CFLAGS +=    -O1 -fno-stack-protector
> -CXXFLAGS +=  -O1 -fno-stack-protector
> -.endif
> -
>  COMMENT =    portable build system
>  
>  VER =                3.4.3
> @@ -25,9 +19,14 @@ PERMIT_PACKAGE_CDROM =     Yes
>  
>  WANTLIB += archive c curl expat form jsoncpp m ncurses pthread stdc++ z
>  
> -# XXX: CMake's built-in ELF parser is broken on arm
> +# XXX: On arm libstdc++ from base (and especially iostream) seems
> +# to be broken, so use g++ from ports.
> +MODULES =            gcc4
> +MODGCC4_ARCHS =              arm
> +MODGCC4_LANGS =              c++
> +
>  # XXX: Ninja is broken on m88k
> -.if ${MACHINE_ARCH} != "arm" && ${MACHINE_ARCH} != "m88k"
> +.if ${MACHINE_ARCH} != "m88k"
>  BUILD_DEPENDS =              devel/ninja>=1.5.1
>  .endif
>  
> @@ -72,9 +71,8 @@ pre-configure:
>               ${WRKSRC}/Modules/FindSDL.cmake \
>               ${WRKSRC}/Modules/FindTCL.cmake
>  
> -# XXX: CMake's built-in ELF parser is broken on arm
>  # XXX: Ninja is broken on m88k
> -.if ${MACHINE_ARCH} != "arm" && ${MACHINE_ARCH} != "m88k"
> +.if ${MACHINE_ARCH} != "m88k"
>  do-build:
>       cd ${WRKBUILD} && exec ${SETENV} ${MAKE_ENV} ninja -v -j \
>               ${MAKE_JOBS} ${ALL_TARGET}
> Index: cmake.port.mk
> ===================================================================
> RCS file: /cvs/ports/devel/cmake/cmake.port.mk,v
> retrieving revision 1.52
> diff -u -p -u -p -r1.52 cmake.port.mk
> --- cmake.port.mk     26 Jan 2016 08:44:07 -0000      1.52
> +++ cmake.port.mk     27 Jan 2016 13:10:03 -0000
> @@ -9,9 +9,8 @@ MAKE_ENV+=LIB${_n}_VERSION=${_v}
>  
>  USE_NINJA ?= Yes
>  
> -# XXX: CMake's built-in ELF parser is broken on arm
>  # XXX: Ninja is broken on m88k
> -.if ${MACHINE_ARCH} == "arm" || ${MACHINE_ARCH} == "m88k"
> +.if ${MACHINE_ARCH} == "m88k"
>  USE_NINJA = No
>  .endif
>  
> Index: patches/patch-Source_CMakeLists_txt
> ===================================================================
> RCS file: patches/patch-Source_CMakeLists_txt
> diff -N patches/patch-Source_CMakeLists_txt
> --- patches/patch-Source_CMakeLists_txt       31 Dec 2014 11:06:02 -0000      
> 1.6
> +++ /dev/null 1 Jan 1970 00:00:00 -0000
> @@ -1,15 +0,0 @@
> -$OpenBSD: patch-Source_CMakeLists_txt,v 1.6 2014/12/31 11:06:02 dcoppa Exp $
> -
> -XXX: CMake's built-in ELF parser is broken on arm
> -
> ---- Source/CMakeLists.txt.orig       Mon Dec 15 14:07:43 2014
> -+++ Source/CMakeLists.txt    Thu Dec 18 05:37:12 2014
> -@@ -16,7 +16,7 @@ if(CMAKE_CXX_PLATFORM_ID MATCHES "OpenBSD")
> - else()
> -   CHECK_INCLUDE_FILE("elf.h" HAVE_ELF_H)
> - endif()
> --if(HAVE_ELF_H)
> -+if(HAVE_ELF_H AND NOT CMAKE_SYSTEM_PROCESSOR MATCHES "^arm")
> -   set(CMAKE_USE_ELF_PARSER 1)
> - elseif(HAIKU)
> -   # On Haiku, we need to include elf32.h from the private headers
> Index: patches/patch-bootstrap
> ===================================================================
> RCS file: /cvs/ports/devel/cmake/patches/patch-bootstrap,v
> retrieving revision 1.10
> diff -u -p -u -p -r1.10 patch-bootstrap
> --- patches/patch-bootstrap   8 Dec 2015 17:18:59 -0000       1.10
> +++ patches/patch-bootstrap   27 Jan 2016 13:10:03 -0000
> @@ -1,7 +1,7 @@
>  $OpenBSD: patch-bootstrap,v 1.10 2015/12/08 17:18:59 dcoppa Exp $
>  
>  Use Ninja to build CMake
> -XXX: broken on arm and m88k
> +XXX: broken on m88k
>  
>  --- bootstrap.orig   Thu Nov 12 16:39:53 2015
>  +++ bootstrap        Mon Nov 23 16:54:15 2015
> @@ -10,7 +10,7 @@ XXX: broken on arm and m88k
>   else
>     # Bootstrapping from a standard UNIX prompt.
>  -  cmake_bootstrap_generator="Unix Makefiles"
> -+  if arch -s | egrep -q '^arm|^m88k'; then
> ++  if arch -s | grep -q '^m88k'; then
>  +    cmake_bootstrap_generator="Unix Makefiles"
>  +  else
>  +    cmake_bootstrap_generator="Ninja"
> 

Reply via email to