Update control/rules to support CMake

This commit is contained in:
Sylvestre Ledru 2016-01-04 12:46:28 +00:00
parent 0ba0844df3
commit 08f5bc9767
3 changed files with 116 additions and 12 deletions

1
debian/changelog vendored
View File

@ -10,6 +10,7 @@ llvm-toolchain-snapshot (1:3.8~svn256489-1~exp1) experimental; urgency=medium
- Remove autotools-specific artifacts from packages. - Remove autotools-specific artifacts from packages.
- Remove "dummy" documentation artifacts from llvm-X.Y-docs - Remove "dummy" documentation artifacts from llvm-X.Y-docs
package. Not built/installed by CMake, not useful. package. Not built/installed by CMake, not useful.
- Update control/rules to support CMake
-- Sylvestre Ledru <sylvestre@debian.org> Mon, 28 Dec 2015 09:31:25 +0100 -- Sylvestre Ledru <sylvestre@debian.org> Mon, 28 Dec 2015 09:31:25 +0100

3
debian/control vendored
View File

@ -4,8 +4,7 @@ Priority: optional
Maintainer: LLVM Packaging Team <pkg-llvm-team@lists.alioth.debian.org> Maintainer: LLVM Packaging Team <pkg-llvm-team@lists.alioth.debian.org>
Uploaders: Sylvestre Ledru <sylvestre@debian.org> Uploaders: Sylvestre Ledru <sylvestre@debian.org>
Build-Depends: debhelper (>= 9.0), flex, bison, dejagnu, tcl, expect, Build-Depends: debhelper (>= 9.0), flex, bison, dejagnu, tcl, expect,
autoconf, automake, perl, libtool, chrpath, texinfo, cmake, perl, libtool, chrpath, texinfo, sharutils, libffi-dev (>= 3.0.9),
sharutils, autotools-dev (>= 20060702.1), libffi-dev (>= 3.0.9),
lsb-release, patchutils, diffstat, xz-utils, python-dev, lsb-release, patchutils, diffstat, xz-utils, python-dev,
libedit-dev, swig, python-sphinx, ocaml-nox, binutils-dev, libedit-dev, swig, python-sphinx, ocaml-nox, binutils-dev,
libjsoncpp-dev, libjsoncpp-dev,

124
debian/rules vendored
View File

@ -17,8 +17,10 @@ endif
VENDOR=$(shell lsb_release -is) VENDOR=$(shell lsb_release -is)
AUTOCONF_BUILD=yes AUTOCONF_BUILD=no
ifeq (${AUTOCONF_BUILD},yes)
BUILD_DIR=Release BUILD_DIR=Release
endif
DEB_HOST_MULTIARCH = $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) DEB_HOST_MULTIARCH = $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
DEB_HOST_GNU_TYPE = $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) DEB_HOST_GNU_TYPE = $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
@ -30,6 +32,7 @@ OCAML_STDLIB_DIR ?= $(shell ocamlc -where)
LDFLAGS_EXTRA = LDFLAGS_EXTRA =
CXXFLAGS_EXTRA = -std=c++0x CXXFLAGS_EXTRA = -std=c++0x
CONFIGURE_EXTRA = CONFIGURE_EXTRA =
CMAKE_EXTRA =
ifneq (,$(filter $(DEB_HOST_ARCH),powerpc powerpcspe)) ifneq (,$(filter $(DEB_HOST_ARCH),powerpc powerpcspe))
LDFLAGS_EXTRA += -latomic LDFLAGS_EXTRA += -latomic
@ -97,6 +100,7 @@ ifneq (,$(filter scan-build,$(DEB_BUILD_OPTIONS)))
# no need to run tests in this case # no need to run tests in this case
DEB_BUILD_OPTIONS+=" nocheck" DEB_BUILD_OPTIONS+=" nocheck"
CONFIGURE_EXTRA += --enable-assertions CONFIGURE_EXTRA += --enable-assertions
CMAKE_EXTRA += -DLLVM_ENABLE_ASSERTIONS=ON
endif endif
ifneq (,$(filter coverity,$(DEB_BUILD_OPTIONS))) ifneq (,$(filter coverity,$(DEB_BUILD_OPTIONS)))
@ -109,6 +113,7 @@ ifneq (,$(filter coverity,$(DEB_BUILD_OPTIONS)))
PRE_PROCESS_CONF= PRE_PROCESS_CONF=
COVERITY_ENABLE=1 COVERITY_ENABLE=1
CONFIGURE_EXTRA += --enable-assertions CONFIGURE_EXTRA += --enable-assertions
CMAKE_EXTRA += -DLLVM_ENABLE_ASSERTIONS=ON
# no need to run tests in this case # no need to run tests in this case
DEB_BUILD_OPTIONS+=" nocheck" DEB_BUILD_OPTIONS+=" nocheck"
else else
@ -196,8 +201,12 @@ override_dh_auto_configure: preconfigure
fi) fi)
# Due to bug upstream, no symlink here # Due to bug upstream, no symlink here
rm -fr tools/clang/tools/extra
cp -R -H clang-tools-extra tools/clang/tools/extra cp -R -H clang-tools-extra tools/clang/tools/extra
# TODO(axw) specify build type for CMake
# TODO(axw) pass compiler flags, etc.
if test $(AUTOCONF_BUILD) = yes; then \ if test $(AUTOCONF_BUILD) = yes; then \
cd $(TARGET_BUILD); \ cd $(TARGET_BUILD); \
$(PRE_PROCESS_CONF) \ $(PRE_PROCESS_CONF) \
@ -223,22 +232,30 @@ override_dh_auto_configure: preconfigure
cd $(TARGET_BUILD) && \ cd $(TARGET_BUILD) && \
cmake ../ \ cmake ../ \
-DCMAKE_INSTALL_PREFIX=/usr/lib/llvm-$(LLVM_VERSION) \ -DCMAKE_INSTALL_PREFIX=/usr/lib/llvm-$(LLVM_VERSION) \
-DCMAKE_VERBOSE_MAKEFILE=ON -DBUILD_SHARED_LIBS=on; \ -DCMAKE_VERBOSE_MAKEFILE=ON \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_CXX_FLAGS=$(CXXFLAGS_EXTRA) \
-DLLVM_LINK_LLVM_DYLIB=ON \
-DLLVM_VERSION_SUFFIX= \
-DLLVM_ENABLE_SPHINX=ON \
-DLLVM_ENABLE_RTTI=ON \
-DLLVM_ENABLE_FFI=ON \
$(CMAKE_EXTRA) \
-DLIBCLANG_LIBRARY_VERSION=$(SONAME_EXT); \
fi fi
# cd $(TARGET_BUILD) && cmake ../ -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_VERBOSE_MAKEFILE=ON
# mkdir build-compiler-rt && cd build-compiler-rt && cmake ../compiler-rt
# --with-ocaml-libdir=/usr/lib/ocaml/llvm-$(LLVM_VERSION) \
override_dh_auto_build: override_dh_auto_build:
$(PRE_PROCESS) $(MAKE) $(NJOBS) -C $(TARGET_BUILD) VERBOSE=1 CLANG_VENDOR=$(VENDOR) CXXFLAGS="$(CXXFLAGS_EXTRA)" LDFLAGS="$(LDFLAGS_EXTRA)" REQUIRES_RTTI=1 DEBUGMAKE=1 $(PRE_PROCESS) $(MAKE) $(NJOBS) -C $(TARGET_BUILD) VERBOSE=1 CLANG_VENDOR=$(VENDOR) CXXFLAGS="$(CXXFLAGS_EXTRA)" LDFLAGS="$(LDFLAGS_EXTRA)" REQUIRES_RTTI=1 DEBUGMAKE=1
ifeq (${AUTOCONF_BUILD},yes)
# We run the build with the Asserts, new directory, make a symlink to make # We run the build with the Asserts, new directory, make a symlink to make
# sure the rest still work # sure the rest still work
cd $(TARGET_BUILD) \ cd $(TARGET_BUILD) \
if test -d Release+Asserts -a ! -e Release; then \ if test -d Release+Asserts -a ! -e Release; then \
ln -s Release+Asserts Release; \ ln -s Release+Asserts Release; \
fi fi
endif
override_dh_prep: build_doc override_dh_prep: build_doc
@ -265,7 +282,7 @@ build_doc:
help2man --version-string=$(LLVM_VERSION) clang/tools/scan-view/bin/scan-view > debian/man/scan-view-$(LLVM_VERSION).1 help2man --version-string=$(LLVM_VERSION) clang/tools/scan-view/bin/scan-view > debian/man/scan-view-$(LLVM_VERSION).1
help2man --version-string=$(LLVM_VERSION) clang/tools/clang-format/clang-format-diff.py > debian/man/clang-format-diff-$(LLVM_VERSION).1 help2man --version-string=$(LLVM_VERSION) clang/tools/clang-format/clang-format-diff.py > debian/man/clang-format-diff-$(LLVM_VERSION).1
CMDS="llvm-dwarfdump llvm-mc llvm-mcmarkup llvm-objdump llvm-rtdyld llvm-size llvm-tblgen llvm-ranlib lldb clang-format clang clang-tblgen clang-check clang-tidy clang-apply-replacements pp-trace sancov"; \ CMDS="llvm-dwarfdump llvm-mc llvm-mcmarkup llvm-objdump llvm-rtdyld llvm-size llvm-ranlib lldb clang-format clang clang-tblgen clang-check clang-tidy clang-apply-replacements pp-trace sancov"; \
for f in $$CMDS; do \ for f in $$CMDS; do \
echo "Generating manpage of $$f"; \ echo "Generating manpage of $$f"; \
LD_LIBRARY_PATH=$(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/:/usr/lib/*/libfakeroot help2man --no-discard-stderr --version-string=$(LLVM_VERSION) $(TARGET_BUILD)/$(BUILD_DIR)/bin/$$f > debian/man/$$f-$(LLVM_VERSION).1; \ LD_LIBRARY_PATH=$(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/:/usr/lib/*/libfakeroot help2man --no-discard-stderr --version-string=$(LLVM_VERSION) $(TARGET_BUILD)/$(BUILD_DIR)/bin/$$f > debian/man/$$f-$(LLVM_VERSION).1; \
@ -274,14 +291,20 @@ build_doc:
override_dh_auto_install: override_dh_auto_install:
$(MAKE) -C $(TARGET_BUILD) VERBOSE=1 install DESTDIR=$(DEB_INST)/ $(MAKE) -C $(TARGET_BUILD) VERBOSE=1 install DESTDIR=$(DEB_INST)/
chrpath -d $(TARGET_BUILD)/$(BUILD_DIR)/bin/clang # Not used on Linux.
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/argdumper
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/share/clang/clang-format-bbedit.applescript
ifneq (${AUTOCONF_BUILD},yes)
cp $(TARGET_BUILD)/bin/clang-query $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin
endif
# Only run on executable, not script # Only run on executable, not script
chrpath -d `find $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/ -type f -executable -exec file -i '{}' \; | grep 'x-executable; charset=binary'|cut -d: -f1` chrpath -d `find $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/ -type f -executable -exec file -i '{}' \; | grep 'x-executable; charset=binary'|cut -d: -f1`
# Add the trailing soname # Add the trailing soname
mv $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/libLLVM-$(LLVM_VERSION).so $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/libLLVM-$(LLVM_VERSION).so.$(SONAME_EXT) ifeq (${AUTOCONF_BUILD},yes)
cd debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib/ && \ cd debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib/ && \
mv libclang.so libclang-$(LLVM_VERSION).so.$(SONAME_EXT) && \ mv libclang.so libclang-$(LLVM_VERSION).so.$(SONAME_EXT) && \
ln -s libclang-$(LLVM_VERSION).so.$(SONAME_EXT) libclang.so.$(SONAME_EXT); \ ln -s libclang-$(LLVM_VERSION).so.$(SONAME_EXT) libclang.so.$(SONAME_EXT); \
@ -291,6 +314,7 @@ override_dh_auto_install:
ln -s liblldb-$(LLVM_VERSION).so.$(SONAME_EXT) liblldb.so.$(SONAME_EXT); \ ln -s liblldb-$(LLVM_VERSION).so.$(SONAME_EXT) liblldb.so.$(SONAME_EXT); \
fi; \ fi; \
rm -f libLLVM-$(LLVM_VERSION_FULL).so rm -f libLLVM-$(LLVM_VERSION_FULL).so
endif
# Remove artefact (where compiler-rt is built) # Remove artefact (where compiler-rt is built)
if test -d $(TARGET_BUILD)/tools/clang/runtime/compiler-rt/clang_linux; then \ if test -d $(TARGET_BUILD)/tools/clang/runtime/compiler-rt/clang_linux; then \
@ -311,6 +335,61 @@ override_dh_auto_install:
# idem for the lldb python binding # idem for the lldb python binding
mkdir -p $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/python2.7/site-packages/lldb/ mkdir -p $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/python2.7/site-packages/lldb/
# Copy things that are installed by CMake but not autoconf,
# and remove things that are installed by autoconf but are
# not intended for distribution.
ifeq (${AUTOCONF_BUILD},yes)
cp clang/tools/clang-format/git-clang-format $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin
cp clang/tools/clang-format/clang-format-diff.py $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/share/clang
cp clang/tools/clang-format/clang-format.py $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/share/clang
cp clang/tools/clang-format/clang-format.el $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/share/clang
cp clang/tools/clang-format/clang-format-sublime.py $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/share/clang
mv $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/libLLVM-$(LLVM_VERSION).so $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/libLLVM-$(LLVM_VERSION).so.1
endif
# Remove things that CMake or autoconf install but which aren't packaged yet,
# or are packaged from the source or build tree.
ifneq (${AUTOCONF_BUILD},yes)
mv $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/clang-$(LLVM_VERSION) \
$(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/clang
endif
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/clang-cl
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/scan-build
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/scan-view
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/c-index-test
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/clang-tblgen
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/pp-trace
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/count
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/not
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/FileCheck
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/Reporter.py
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/ScanView.py
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/startfile.py
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/lli-child-target
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/lldb-argdumper
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/lldb-$(LLVM_VERSION_FULL)
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/lldb-mi-$(LLVM_VERSION_FULL)
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/lldb-server-$(LLVM_VERSION_FULL)
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/bin/modularize
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/libexec/c++-analyzer
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/libexec/ccc-analyzer
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/libclang*.so
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/libLLVM*.so
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/liblldb*.so
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/libclang.so.1
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/liblldb.so.1
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/libPolly.a
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/libPollyISL.a
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/clang/$(LLVM_VERSION_FULL)/*.txt
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/python2.7/site-packages/six.py
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/share/man/man1/scan-build.1
rm -fr $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/share/clang/cmake/
rm -fr $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/share/scan-view/
rm -fr $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/docs/llvm/html/
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/docs/llvm/html.tar.gz
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/share/scan-build/scanview.css
rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/share/scan-build/sorttable.js
# Rename binaries # Rename binaries
mkdir -p $(DEB_INST)/usr/bin/ mkdir -p $(DEB_INST)/usr/bin/
cd $(DEB_INST)/usr/bin/; rm -f *; \ cd $(DEB_INST)/usr/bin/; rm -f *; \
@ -402,8 +481,33 @@ override_dh_installdeb:
ifeq (,$(filter nocheck, $(DEB_BUILD_OPTIONS))) ifeq (,$(filter nocheck, $(DEB_BUILD_OPTIONS)))
# List of the archs we know we have 100 % tests working # List of the archs we know we have 100 % tests working
ARCH_LLVM_TEST_OK := amd64 i386 ARCH_LLVM_TEST_OK := amd64 i386
override_dh_auto_test: override_dh_auto_test:
ifneq (${AUTOCONF_BUILD},yes)
# LLVM tests (CMake)
ifneq (,$(findstring $(DEB_HOST_ARCH),$(ARCH_LLVM_TEST_OK)))
$(MAKE) $(NJOBS) -C $(TARGET_BUILD) check-llvm
else
$(MAKE) $(NJOBS) -C $(TARGET_BUILD) check-llvm || true
endif
# Clang tests (CMake)
$(MAKE) $(NJOBS) -C $(TARGET_BUILD) check-clang || true
# LLDB tests (CMake)
ifeq (,$(filter $(DEB_HOST_ARCH), $(LLDB_DISABLE_ARCHS) armhf armel))
$(MAKE) $(NJOBS) -C $(TARGET_BUILD) check-lldb || true
endif
# Polly tests (CMake)
ifeq (${POLLY_ENABLE},yes)
$(MAKE) $(NJOBS) -C $(TARGET_BUILD) check-polly || true
endif
else # Autoconf build
# LLVM tests # LLVM tests
ifneq (,$(findstring $(DEB_HOST_ARCH),$(ARCH_LLVM_TEST_OK))) ifneq (,$(findstring $(DEB_HOST_ARCH),$(ARCH_LLVM_TEST_OK)))
# Fail the build if the test fails # Fail the build if the test fails
@ -458,7 +562,7 @@ endif
lcov --remove $$REPORT "/usr*" -o $$REPORT; \ lcov --remove $$REPORT "/usr*" -o $$REPORT; \
genhtml -o reports/coverage --show-details --highlight --legend $$REPORT; \ genhtml -o reports/coverage --show-details --highlight --legend $$REPORT; \
fi fi
else endif
override_dh_auto_test: override_dh_auto_test:
endif endif