[cmake] Another try on making sure feature testing is working (#691)
authorEbrahim Byagowi <ebrahim@gnu.org>
Wed, 10 Jan 2018 20:21:56 +0000 (23:51 +0330)
committerGitHub <noreply@github.com>
Wed, 10 Jan 2018 20:21:56 +0000 (23:51 +0330)
.circleci/config.yml
CMakeLists.txt

index 8c02624..43ddc4a 100644 (file)
@@ -2,26 +2,23 @@ version: 2
 
 jobs:
 
-  oracledeveloperstudio:
+  distcheck:
     docker:
-      - image: fedora
+      - image: dockcross/base
     steps:
       - checkout
-      - run: dnf install -y gcc ragel cmake make which glib2-devel freetype-devel cairo-devel libicu-devel graphite2-devel wget tar bzip2 python || true
-      - run: wget http://$ODSUSER:$ODSPASS@behdad.org/harfbuzz-private/OracleDeveloperStudio12.6-linux-x86-bin.tar.bz2 && tar xf OracleDeveloperStudio12.6-linux-x86-bin.tar.bz2 --owner root --group root --no-same-owner
-      - run: CC=/root/project/OracleDeveloperStudio12.6-linux-x86-bin/developerstudio12.6/bin/suncc CXX=/root/project/OracleDeveloperStudio12.6-linux-x86-bin/developerstudio12.6/bin/sunCC cmake -DHB_HAVE_GRAPHITE2=ON -DHB_BUILTIN_UCDN=ON -DHB_HAVE_GLIB=ON -DHB_HAVE_ICU=ON -DHB_HAVE_FREETYPE=ON -Bbuild -H.
-      - run: make -Cbuild
-      - run: make -Cbuild test
-      - run: make -Cbuild install
+      - run: apt update && apt install -y pkg-config ragel gtk-doc-tools libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev
+      - run: ./autogen.sh && make distcheck
+      - run: make distdir && cd harfbuzz-* && cmake -DDHB_CHECK=ON -Bbuild -H. -GNinja && ninja -Cbuild && CTEST_OUTPUT_ON_FAILURE=1 ninja -Cbuild test && ninja -Cbuild install
 
-  fedora-out-of-tree:
+  alpine:
     docker:
-      - image: fedora
+      - image: alpine
     steps:
       - checkout
-      - run: dnf install -y pkg-config ragel gcc gcc-c++ automake autoconf libtool make which glib2-devel freetype-devel cairo-devel libicu-devel gobject-introspection-devel graphite2-devel redhat-rpm-config || true
-      - run: NOCONFIGURE=1 ./autogen.sh --with-freetype --with-glib --with-gobject --with-cairo --with-icu --with-graphite2
-      - run: mkdir build && cd build && ../configure && make && make check
+      - run: apk update && apk add ragel make pkgconfig libtool autoconf automake gettext gcc g++ glib-dev freetype-dev cairo-dev
+      - run: ./autogen.sh
+      - run: make && make check
 
   archlinux:
     docker:
@@ -32,16 +29,16 @@ jobs:
       - run: ./autogen.sh --with-freetype --with-glib --with-gobject --with-cairo --with-icu --with-graphite2
       - run: make && make check
 
-  freebsd9:
+  fedora-outoftreebuild:
     docker:
-      - image: donbowman/freebsd-cross-build
+      - image: fedora
     steps:
       - checkout
-      - run: apt update && apt install -y pkg-config ragel
-      - run: ./autogen.sh --prefix=/freebsd --host=x86_64-pc-freebsd9
-      - run: make
+      - run: dnf install -y pkg-config ragel gcc gcc-c++ automake autoconf libtool make which glib2-devel freetype-devel cairo-devel libicu-devel gobject-introspection-devel graphite2-devel redhat-rpm-config || true
+      - run: NOCONFIGURE=1 ./autogen.sh --with-freetype --with-glib --with-gobject --with-cairo --with-icu --with-graphite2
+      - run: mkdir build && cd build && ../configure && make && make check
 
-  base:
+  cmake-gcc:
     docker:
       - image: dockcross/base
     steps:
@@ -52,16 +49,37 @@ jobs:
       - run: ninja -Cbuild test
       - run: ninja -Cbuild install
 
-  distcheck:
+  cmake-oracledeveloperstudio:
     docker:
-      - image: dockcross/base
+      - image: fedora
     steps:
       - checkout
-      - run: apt update && apt install -y pkg-config ragel gtk-doc-tools libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev
-      - run: ./autogen.sh && make distcheck
-      - run: make distdir && cd harfbuzz-* && cmake -DDHB_CHECK=ON -Bbuild -H. -GNinja && ninja -Cbuild && CTEST_OUTPUT_ON_FAILURE=1 ninja -Cbuild test && ninja -Cbuild install
+      - run: dnf install -y gcc ragel cmake make which glib2-devel freetype-devel cairo-devel libicu-devel graphite2-devel wget tar bzip2 python || true
+      - run: wget http://$ODSUSER:$ODSPASS@behdad.org/harfbuzz-private/OracleDeveloperStudio12.6-linux-x86-bin.tar.bz2 && tar xf OracleDeveloperStudio12.6-linux-x86-bin.tar.bz2 --owner root --group root --no-same-owner
+      - run: CC=/root/project/OracleDeveloperStudio12.6-linux-x86-bin/developerstudio12.6/bin/suncc CXX=/root/project/OracleDeveloperStudio12.6-linux-x86-bin/developerstudio12.6/bin/sunCC cmake -DHB_HAVE_GRAPHITE2=ON -DHB_BUILTIN_UCDN=ON -DHB_HAVE_GLIB=ON -DHB_HAVE_ICU=ON -DHB_HAVE_FREETYPE=ON -Bbuild -H.
+      - run: make -Cbuild
+      - run: make -Cbuild test
+      - run: make -Cbuild install
+
+  crosscompile-notest-djgpp:
+    docker:
+      - image: quay.io/ebraminio/djgpp
+    steps:
+      - checkout
+      - run: apt update && apt install -y ragel pkg-config libtool autoconf
+      - run: CFLAGS="-Wno-attributes" CXXFLAGS="-Wno-attributes" ./autogen.sh --prefix=/usr/local/djgpp --host=i586-pc-msdosdjgpp
+      - run: make
 
-  psvita:
+  crosscompile-notest-freebsd9:
+    docker:
+      - image: donbowman/freebsd-cross-build
+    steps:
+      - checkout
+      - run: apt update && apt install -y pkg-config ragel
+      - run: ./autogen.sh --prefix=/freebsd --host=x86_64-pc-freebsd9
+      - run: make
+
+  crosscompile-notest-psvita:
     docker:
       - image: dockcross/base
     steps:
@@ -71,7 +89,7 @@ jobs:
       - run: ./autogen.sh --prefix=/usr/local/vitasdk/arm-vita-eabi --host=arm-vita-eabi
       - run: make
 
-  android-arm:
+  crosscompile-cmake-notest-android-arm:
     docker:
       - image: dockcross/android-arm
     steps:
@@ -80,7 +98,7 @@ jobs:
       - run: cmake -Bbuild -H. -GNinja
       - run: ninja -Cbuild
 
-  browser-asmjs:
+  crosscompile-cmake-notest-browser-asmjs:
     docker:
       - image: dockcross/browser-asmjs
     steps:
@@ -89,7 +107,7 @@ jobs:
       - run: cmake -Bbuild -H. -GNinja
       - run: ninja -Cbuild
 
-  linux-arm64:
+  crosscompile-cmake-notest-linux-arm64:
     docker:
       - image: dockcross/linux-arm64
     steps:
@@ -98,7 +116,7 @@ jobs:
       - run: cmake -Bbuild -H. -GNinja
       - run: ninja -Cbuild
 
-  linux-mips:
+  crosscompile-cmake-notest-linux-mips:
     docker:
       - image: dockcross/linux-mips
     steps:
@@ -107,7 +125,7 @@ jobs:
       - run: cmake -Bbuild -H. -GNinja
       - run: ninja -Cbuild
 
-  windows-x64:
+  crosscompile-cmake-notest-windows-x64:
     docker:
       - image: dockcross/windows-x64
     steps:
@@ -116,39 +134,32 @@ jobs:
       - run: cmake -Bbuild -H. -GNinja
       - run: ninja -Cbuild
 
-  alpine:
-    docker:
-      - image: alpine
-    steps:
-      - checkout
-      - run: apk update && apk add ragel make pkgconfig libtool autoconf automake gettext gcc g++ glib-dev freetype-dev cairo-dev
-      - run: ./autogen.sh
-      - run: make && make check
-
-  dos:
-    docker:
-      - image: quay.io/ebraminio/djgpp
-    steps:
-      - checkout
-      - run: apt update && apt install -y ragel pkg-config libtool autoconf
-      - run: CFLAGS="-Wno-attributes" CXXFLAGS="-Wno-attributes" ./autogen.sh --prefix=/usr/local/djgpp --host=i586-pc-msdosdjgpp
-      - run: make
-
 workflows:
   version: 2
   build:
     jobs:
-      #- oracledeveloperstudio
-      #- fedora-out-of-tree
-      - archlinux
-      - freebsd9
-      - base
+      # both autotools and cmake
       - distcheck
-      - psvita
-      - android-arm
-      - browser-asmjs
-      - linux-arm64
-      - linux-mips
-      - windows-x64
+
+      # autotools based builds
       - alpine
-      - dos
+      - archlinux
+      - fedora-outoftreebuild
+
+      # cmake based builds
+      - cmake-gcc
+      - cmake-oracledeveloperstudio
+
+      # crosscompiles
+      # they can't be test thus are without tests
+      ## autotools
+      - crosscompile-notest-djgpp
+      - crosscompile-notest-freebsd9
+      - crosscompile-notest-psvita
+
+      ## cmake
+      - crosscompile-cmake-notest-android-arm
+      - crosscompile-cmake-notest-browser-asmjs
+      - crosscompile-cmake-notest-linux-arm64
+      - crosscompile-cmake-notest-linux-mips
+      - crosscompile-cmake-notest-windows-x64
index a2599b5..e45c5bc 100644 (file)
@@ -94,24 +94,23 @@ include (CheckFunctionExists)
 include (CheckIncludeFile)
 macro (check_funcs) # Similar to AC_CHECK_FUNCS of autotools
   foreach (func_name ${ARGN})
-    set (RESULT OFF)
-    check_function_exists(${func_name} RESULT)
-    if (${RESULT})
-      string(TOUPPER ${func_name} definiton_to_add)
+    string(TOUPPER ${func_name} definiton_to_add)
+    check_function_exists(${func_name} HAVE_${definiton_to_add})
+    if (${HAVE_${definiton_to_add}})
       add_definitions(-DHAVE_${definiton_to_add})
     endif ()
   endforeach ()
 endmacro ()
-check_funcs(atexit mprotect sysconf getpagesize mmap isatty newlocale strtod_l)
+check_funcs(atexit mprotect sysconf mmap strtod_l) #TODO: getpagesize newlocale isatty
 
 check_include_file(unistd.h HAVE_UNIST_H)
 if (${HAVE_UNIST_H})
   add_definitions(-DHAVE_UNIST_H)
 endif ()
-#check_include_file(sys/mman.h HAVE_SYS_MMAN_H) enable this sometime
-#if (${HAVE_SYS_MMAN_H})
-#  add_definitions(-DHAVE_SYS_MMAN_H)
-#endif ()
+check_include_file(sys/mman.h HAVE_SYS_MMAN_H)
+if (${HAVE_SYS_MMAN_H})
+  add_definitions(-DHAVE_SYS_MMAN_H)
+endif ()
 check_include_file(xlocale.h HAVE_XLOCALE_H)
 if (${HAVE_XLOCALE_H})
   add_definitions(-DHAVE_XLOCALE_H)