Blame SOURCES/lshw-B.02.18-cmake.patch

8f735d
From a43ffe12212e1a4dd7b0038197b53798d7a3dfb1 Mon Sep 17 00:00:00 2001
8f735d
From: =?UTF-8?q?Terje=20R=C3=B8sten?= <terje.rosten@ntnu.no>
8f735d
Date: Mon, 2 Apr 2018 14:51:55 +0200
8f735d
Subject: [PATCH] cmakeify
8f735d
8f735d
---
8f735d
 CMakeLists.txt                                     |  42 ++++++
8f735d
 Makefile                                           |  20 ---
8f735d
 README.md                                          |  47 ++++---
8f735d
 lshw.spec.in                                       |  52 ++------
8f735d
 src/CMakeLists.txt                                 | 103 +++++++++++++++
8f735d
 src/Makefile                                       | 144 ---------------------
8f735d
 src/core/Makefile                                  |  80 ------------
8f735d
 src/core/{config.h => config.h.in}                 |  28 ++--
8f735d
 src/core/db.cc                                     |   8 ++
8f735d
 src/core/dump.cc                                   |   2 +-
8f735d
 src/core/version.h                                 |   2 +
8f735d
 src/gui/CMakeLists.txt                             |  67 ++++++++++
8f735d
 src/gui/Makefile                                   |  61 ---------
8f735d
 .../{gtk-lshw.desktop => gtk-lshw.desktop.in}      |   7 +-
8f735d
 src/gui/integration/lshw-gui.in                    |   5 +
8f735d
 src/gui/integration/org.ezix.lshw.gui.policy.in    |  20 +++
8f735d
 src/gui/stock.c                                    |   1 +
8f735d
 src/po/CMakeLists.txt                              |  16 +++
8f735d
 src/po/Makefile                                    |  23 ----
8f735d
 19 files changed, 317 insertions(+), 411 deletions(-)
8f735d
 create mode 100644 CMakeLists.txt
8f735d
 delete mode 100644 Makefile
8f735d
 create mode 100644 src/CMakeLists.txt
8f735d
 delete mode 100644 src/Makefile
8f735d
 delete mode 100644 src/core/Makefile
8f735d
 rename src/core/{config.h => config.h.in} (50%)
8f735d
 create mode 100644 src/gui/CMakeLists.txt
8f735d
 delete mode 100644 src/gui/Makefile
8f735d
 rename src/gui/integration/{gtk-lshw.desktop => gtk-lshw.desktop.in} (51%)
8f735d
 create mode 100644 src/gui/integration/lshw-gui.in
8f735d
 create mode 100644 src/gui/integration/org.ezix.lshw.gui.policy.in
8f735d
 create mode 100644 src/po/CMakeLists.txt
8f735d
 delete mode 100644 src/po/Makefile
8f735d
8f735d
diff --git a/CMakeLists.txt b/CMakeLists.txt
8f735d
new file mode 100644
8f735d
index 0000000..6c69c37
8f735d
--- /dev/null
8f735d
+++ b/CMakeLists.txt
8f735d
@@ -0,0 +1,42 @@
8f735d
+cmake_minimum_required(VERSION 3.0)
8f735d
+
8f735d
+project(lshw)
8f735d
+set(VERSION "B.012.18")
8f735d
+
8f735d
+IF(EXISTS "${PROJECT_SOURCE_DIR}/.git")
8f735d
+  find_package(Git)
8f735d
+  if(GIT_FOUND)
8f735d
+    execute_process(
8f735d
+      COMMAND ${GIT_EXECUTABLE} describe --tags
8f735d
+      OUTPUT_VARIABLE DESCRIBE_TAG
8f735d
+      OUTPUT_STRIP_TRAILING_WHITESPACE)
8f735d
+    string(REGEX MATCH "B.[0-9]+.[0-9]+[-][0-9]+" VERSION ${DESCRIBE_TAG})
8f735d
+    string(REPLACE "-" "." VERSION ${VERSION})
8f735d
+  endif()
8f735d
+endif()
8f735d
+
8f735d
+message("-- lshw: ${VERSION}")
8f735d
+
8f735d
+option(GUI "Enable GUI application (${PROJECT_NAME}-gtk)" ON)
8f735d
+option(HWDATA "Install hwdata files" ON)
8f735d
+option(SQLITE "Enable SQLite support" OFF)
8f735d
+option(ZLIB "Enable zlib support" OFF)
8f735d
+option(NOLOGO "Don't install vendor logos" OFF)
8f735d
+option(STATIC "Do a static (will disable other features)" OFF)
8f735d
+option(POLICYKIT "Install PolicyKit file and pfexec wrapper" OFF)
8f735d
+
8f735d
+include(GNUInstallDirs)
8f735d
+set(CMAKE_INSTALL_PREFIX "/usr/local" CACHE STRING "Install prefix")
8f735d
+set(DATADIR "${CMAKE_INSTALL_FULL_DATADIR}")
8f735d
+set(PROJECT_DATADIR "${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT_NAME}")
8f735d
+set(SBINDIR "${CMAKE_INSTALL_FULL_SBINDIR}")
8f735d
+set(MANDIR "${CMAKE_INSTALL_FULL_MANDIR}")
8f735d
+set(LOCALEDIR "${CMAKE_INSTALL_FULL_LOCALEDIR}")
8f735d
+
8f735d
+configure_file(
8f735d
+  "${PROJECT_SOURCE_DIR}/lshw.spec.in"
8f735d
+  "${PROJECT_BINARY_DIR}/lshw.spec")
8f735d
+
8f735d
+add_subdirectory(src)
8f735d
+add_subdirectory(src/po)
8f735d
+add_subdirectory(src/gui)
8f735d
diff --git a/Makefile b/Makefile
8f735d
deleted file mode 100644
8f735d
index 8fe665e..0000000
8f735d
--- a/Makefile
8f735d
+++ /dev/null
8f735d
@@ -1,20 +0,0 @@
8f735d
-PACKAGENAME = lshw
8f735d
-VERSION?= $(shell git describe --tags | cut -d - -f 1,2 | tr - .)
8f735d
-export PACKAGENAME
8f735d
-
8f735d
-all clean install snapshot gui install-gui:
8f735d
-	+$(MAKE) -C src $@
8f735d
-
8f735d
-version.cpe: .version
8f735d
-	echo -n cpe:/a:ezix:$(PACKAGENAME): > $@
8f735d
-	cat $^ >> $@
8f735d
-
8f735d
-.PHONY: $(PACKAGENAME).spec
8f735d
-
8f735d
-$(PACKAGENAME).spec: $(PACKAGENAME).spec.in
8f735d
-	cat $^ | sed -e s/\@VERSION\@/$(VERSION)/g > $@
8f735d
-
8f735d
-release: $(PACKAGENAME).spec
8f735d
-	git archive --prefix=$(PACKAGENAME)-$(VERSION)/ -o $(PACKAGENAME)-$(VERSION).tar HEAD
8f735d
-	tar --transform s!^!$(PACKAGENAME)-$(VERSION)/! -rf $(PACKAGENAME)-$(VERSION).tar $^
8f735d
-	gzip -f $(PACKAGENAME)-$(VERSION).tar
8f735d
diff --git a/README.md b/README.md
8f735d
index 7afcae6..393da0f 100644
8f735d
--- a/README.md
8f735d
+++ b/README.md
8f735d
@@ -15,27 +15,25 @@ Installation
8f735d
  1. Requirements
8f735d
    - Linux 2.4.x, 2.6.x, 3.x or 4.x (2.2.x might work, though)
8f735d
    - a PA-RISC-, Alpha-, IA-64- (Itanium-), PowerPC-, ARM- or x86- based machine
8f735d
+   - cmake, GNU make or Ninja
8f735d
    - an ANSI (or close enough to ANSI compliance) C++ compiler (tested with g++ 2.95.4 and 3.x)
8f735d
    - for the (optional) GTK+ graphical user interface, you will need a
8f735d
 	complete GTK+ development environment (gtk2-devel on RedHat/Fedora derivatives) 
8f735d
+   - for optional SQLite feature install SQLite
8f735d
+   - for optional zlib feature install zlib and gzip
8f735d
 
8f735d
- 2. To compile it, just use:
8f735d
+ 2. Use cmake options to adjust non default set:
8f735d
+     -DGUI=OFF, -DZLIB=ON, -DSQLITE=ON and/or -DNOLOGO=ON
8f735d
 
8f735d
-    	$ make
8f735d
+ 3. Do configuration and build by
8f735d
 
8f735d
-    To complile with zlib support (see below), use:
8f735d
-
8f735d
-    	$ make ZLIB=1
8f735d
-
8f735d
- 3. If you want to build the optional GUI, do:
8f735d
-
8f735d
-    	$ make
8f735d
-    	$ make gui
8f735d
+       $ mkdir build && cd build
8f735d
+       $ cmake .. -GNinja <options>
8f735d
+       $ ninja-build
8f735d
 
8f735d
  4. If you want to install the result, do:
8f735d
 
8f735d
-    	$ make install
8f735d
-    	$ make install-gui
8f735d
+       $ ninja-build install
8f735d
 
8f735d
 Getting help
8f735d
 ------------
8f735d
@@ -61,12 +59,27 @@ If compiled with zlib support, lshw will look for `file`.gz first, then for `fil
8f735d
 
8f735d
 Statically-linked and/or compressed binaries can be built by using
8f735d
 
8f735d
-    $ make static
8f735d
-
8f735d
+    $ mkdir build && cd build
8f735d
+    $ cmake .. -DSTATIC=ON
8f735d
+    $ ninja
8f735d
 or
8f735d
+    $ mkdir build && cd build
8f735d
+    $ cmake .. -GNinja
8f735d
+    $ ninja compressed
8f735d
 
8f735d
-    $ make compressed
8f735d
+Building compressed binaries requires `upx` (cf. https://upx.github.io/).
8f735d
 
8f735d
-in the `src/` directory
8f735d
+Release and maintenance
8f735d
+-----------------------
8f735d
 
8f735d
-Building compressed binaries requires `upx` (cf. https://upx.github.io/).
8f735d
+Create release tarball,
8f735d
+
8f735d
+ 1. Edit CMakeLists.txt to set version
8f735d
+ 2. Run
8f735d
+    $ mkdir build && cd build
8f735d
+    $ cmake .. -GNinja
8f735d
+    $ ninja release
8f735d
+
8f735d
+Update hwdata files:
8f735d
+
8f735d
+    $ ninja refresh_hwdata
8f735d
diff --git a/lshw.spec.in b/lshw.spec.in
8f735d
index c597379..a7655f5 100644
8f735d
--- a/lshw.spec.in
8f735d
+++ b/lshw.spec.in
8f735d
@@ -52,49 +52,17 @@ http://lshw.ezix.org/
8f735d
 %setup -q
8f735d
 
8f735d
 %build
8f735d
-%{__make} %{?_smp_mflags} \
8f735d
-  PREFIX="%{_prefix}" \
8f735d
-  SBINDIR="%{_sbindir}" \
8f735d
-  MANDIR="%{_mandir}" \
8f735d
-  DATADIR="%{_datadir}" \
8f735d
-  all
8f735d
-%if %{!?_without_gui:1}0
8f735d
-%{__make} %{?_smp_mflags} \
8f735d
-  PREFIX="%{_prefix}" \
8f735d
-  SBINDIR="%{_sbindir}" \
8f735d
-  MANDIR="%{_mandir}" \
8f735d
-  DATADIR="%{_datadir}" \
8f735d
-  gui
8f735d
-%endif
8f735d
+mkdir build && cd build
8f735d
+%cmake .. %{?_without_gui:-DGUI=OFF}
8f735d
+make %{?_smp_mflags} VERBOSE=1
8f735d
 
8f735d
 %install
8f735d
-%{__rm} -rf "%{buildroot}"
8f735d
-
8f735d
-%{__make} \
8f735d
-  DESTDIR="%{buildroot}" \
8f735d
-  PREFIX="%{_prefix}" \
8f735d
-  SBINDIR="%{_sbindir}" \
8f735d
-  MANDIR="%{_mandir}" \
8f735d
-  DATADIR="%{_datadir}" \
8f735d
-  INSTALL="%{__install} -p" \
8f735d
-  install
8f735d
-%if %{!?_without_gui:1}0
8f735d
-%{__make} \
8f735d
-  DESTDIR="%{buildroot}" \
8f735d
-  PREFIX="%{_prefix}" \
8f735d
-  SBINDIR="%{_sbindir}" \
8f735d
-  MANDIR="%{_mandir}" \
8f735d
-  DATADIR="%{_datadir}" \
8f735d
-  INSTALL="%{__install} -p" \
8f735d
-  install-gui
8f735d
-%endif
8f735d
-
8f735d
-%clean
8f735d
-%{__rm} -rf %{buildroot}
8f735d
+cd build
8f735d
+make install DESTDIR=%{buildroot}
8f735d
 
8f735d
 %files
8f735d
-%defattr(-,root,root, 0555)
8f735d
-%doc README.md COPYING docs/TODO docs/Changelog docs/lshw.xsd
8f735d
+%license COPYING
8f735d
+%doc COPYING docs/TODO docs/Changelog docs/lshw.xsd
8f735d
 %{_sbindir}/lshw
8f735d
 %doc %{_mandir}/man?/*
8f735d
 %{_datadir}/lshw/
8f735d
@@ -102,9 +70,11 @@ http://lshw.ezix.org/
8f735d
 
8f735d
 %if %{!?_without_gui:1}0
8f735d
 %files gui
8f735d
-%defattr(-,root,root, 0555)
8f735d
-%doc COPYING
8f735d
+%license COPYING
8f735d
 %{_sbindir}/gtk-lshw
8f735d
+%{_datadir}/appdata/gtk-lshw.appdata.xml
8f735d
+%{_datadir}/applications/gtk-lshw.desktop
8f735d
+%{_datadir}/pixmaps/gtk-lshw.svg
8f735d
 %endif
8f735d
 
8f735d
 %changelog
8f735d
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
8f735d
new file mode 100644
8f735d
index 0000000..ab559d9
8f735d
--- /dev/null
8f735d
+++ b/src/CMakeLists.txt
8f735d
@@ -0,0 +1,103 @@
8f735d
+if(STATIC)
8f735d
+ set(ZLIB OFF)
8f735d
+ set(SQLITE OFF)
8f735d
+endif()
8f735d
+
8f735d
+# SQLite support
8f735d
+if(SQLITE)
8f735d
+  pkg_check_modules(SQLITE3 sqlite3)
8f735d
+  if(SQLITE3_FOUND)
8f735d
+    message("-- Enabling SQLite support")
8f735d
+  else()
8f735d
+    message(FATAL_ERROR "SQLite not found, install lib or disable feature: -DSQLITE=OFF")
8f735d
+  endif()
8f735d
+else()
8f735d
+  message("-- SQLite support disabled")
8f735d
+endif()
8f735d
+
8f735d
+# zlib support
8f735d
+if(ZLIB)
8f735d
+  find_program(GZIP gzip "Path to gzip application")
8f735d
+  if(NOT GZIP)
8f735d
+    message(FATAL_ERROR "gzip program not found, install gzip or disable zlib support: -DZLIB=OFF")
8f735d
+  endif()
8f735d
+  pkg_check_modules(Z zlib)
8f735d
+  if(Z_FOUND)
8f735d
+    message("-- Enabling zlib support")
8f735d
+  else()
8f735d
+    message(FATAL_ERROR "zlib not found, install lib or disable feature: -DZLIB=OFF")
8f735d
+  endif()
8f735d
+else()
8f735d
+  message("-- zlib support disabled")
8f735d
+endif()
8f735d
+
8f735d
+if(ERROR)
8f735d
+  message(FATAL_ERROR "Configuration failed")
8f735d
+endif()
8f735d
+
8f735d
+# Some special targets, compress, refresh_hwdata and release
8f735d
+add_custom_target(compressed
8f735d
+  COMMAND upx -9 -o lshw-compress lshw
8f735d
+  COMMENT "Creating upx compressed binary")
8f735d
+add_dependencies(compressed lshw)
8f735d
+
8f735d
+add_custom_target(refresh_hwdata
8f735d
+  COMMAND wget -N http://pciids.sourceforge.net/pci.ids
8f735d
+  COMMAND wget -N http://www.linux-usb.org/usb.ids
8f735d
+  COMMAND wget -N http://standards-oui.ieee.org/oui/oui.txt
8f735d
+  COMMAND wget -O manuf.txt http://anonsvn.wireshark.org/wireshark/trunk/manuf
8f735d
+  COMMAND wget -N https://git.fedorahosted.org/cgit/hwdata.git/plain/pnp.ids
8f735d
+  COMMAND wget -N http://www-pc.uni-regensburg.de/hardware/TECHNIK/PCI_PNP/pnpid.txt
8f735d
+  WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/src"
8f735d
+  COMMENT "Updating hwdata files from upstream location")
8f735d
+
8f735d
+set(TARNAME ${PROJECT_NAME}-${VERSION})
8f735d
+add_custom_target(release
8f735d
+  COMMAND ${GIT_EXECUTABLE} archive --prefix=${TARNAME}/
8f735d
+    -o ${PROJECT_BINARY_DIR}/${TARNAME}.tar HEAD
8f735d
+  COMMAND mv ${PROJECT_BINARY_DIR}/lshw.spec ${PROJECT_SOURCE_DIR}/lshw.spec
8f735d
+  COMMAND tar --owner=0 --group=0
8f735d
+    --transform s,lshw.spec,${TARNAME}/lshw.spec,
8f735d
+    -rf ${PROJECT_BINARY_DIR}/${TARNAME}.tar lshw.spec
8f735d
+  COMMAND gzip ${PROJECT_BINARY_DIR}/${TARNAME}.tar
8f735d
+  COMMAND rm ${PROJECT_SOURCE_DIR}/lshw.spec
8f735d
+  WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
8f735d
+  COMMENT "Creating release tarball")
8f735d
+
8f735d
+configure_file(
8f735d
+  "${CMAKE_CURRENT_SOURCE_DIR}/core/config.h.in"
8f735d
+  "${PROJECT_BINARY_DIR}/config.h")
8f735d
+
8f735d
+include_directories("${PROJECT_BINARY_DIR}")
8f735d
+include_directories("${CMAKE_CURRENT_SOURCE_DIR}/core")
8f735d
+
8f735d
+file(GLOB DATAFILES "pci.ids" "pnp.ids" "usb.ids" "manuf.txt" "oui.txt" "pnpid.txt")
8f735d
+
8f735d
+file(GLOB SOURCES "core/*.cc")
8f735d
+add_library(core ${SOURCES})
8f735d
+add_executable(lshw lshw.cc)
8f735d
+
8f735d
+if(STATIC)
8f735d
+  set_target_properties(lshw PROPERTIES LINK_FLAGS "-static" )
8f735d
+endif()
8f735d
+
8f735d
+target_link_libraries(lshw ${SQLITE3_LIBRARIES} ${Z_LIBRARIES} resolv core)
8f735d
+
8f735d
+if(NOT ZLIB)
8f735d
+  if(HWDATA)
8f735d
+    install(FILES ${DATAFILES} DESTINATION ${PROJECT_DATADIR})
8f735d
+  endif()
8f735d
+else()
8f735d
+  foreach(DATAFILE ${DATAFILES})
8f735d
+    get_filename_component(FILE ${DATAFILE} NAME)
8f735d
+    add_custom_command(
8f735d
+      OUTPUT ${FILE}.gz
8f735d
+      COMMAND ${GZIP} -c ${DATAFILE} > ${FILE}.gz)
8f735d
+    add_custom_target(${FILE} ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${FILE}.gz)
8f735d
+    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${FILE}.gz DESTINATION ${PROJECT_DATADIR})
8f735d
+  endforeach()
8f735d
+endif()
8f735d
+
8f735d
+install(FILES lshw.1 DESTINATION ${MANDIR}/man1 COMPONENT doc)
8f735d
+install(TARGETS lshw DESTINATION sbin)
8f735d
+
8f735d
diff --git a/src/Makefile b/src/Makefile
8f735d
deleted file mode 100644
8f735d
index 917bf6b..0000000
8f735d
--- a/src/Makefile
8f735d
+++ /dev/null
8f735d
@@ -1,144 +0,0 @@
8f735d
-PACKAGENAME:=lshw
8f735d
-export PACKAGENAME
8f735d
-VERSION?= $(shell git describe --tags --long | cut -d - -f 1,2 | tr - .)
8f735d
-
8f735d
-SQLITE?=0
8f735d
-ZLIB?=0
8f735d
-
8f735d
-DESTDIR?=/
8f735d
-PREFIX?=/usr
8f735d
-SBINDIR=$(PREFIX)/sbin
8f735d
-MANDIR=$(PREFIX)/share/man
8f735d
-DATADIR=$(PREFIX)/share
8f735d
-INSTALL?=install -p
8f735d
-STRIP?=strip
8f735d
-export DESTDIR
8f735d
-export PREFIX
8f735d
-export SBINDIR
8f735d
-export MANDIR
8f735d
-export DATADIR
8f735d
-export SQLITE
8f735d
-export ZLIB
8f735d
-
8f735d
-CXX?=c++
8f735d
-INCLUDES=-I./core/
8f735d
-DEFINES=-DPREFIX=\"$(PREFIX)\" -DSBINDIR=\"$(SBINDIR)\" -DMANDIR=\"$(MANDIR)\" -DDATADIR=\"$(DATADIR)\" -DVERSION=\"$(VERSION)\"
8f735d
-CXXFLAGS=-g -Wall -g $(INCLUDES) $(DEFINES) $(RPM_OPT_FLAGS)
8f735d
-ifeq ($(SQLITE), 1)
8f735d
-	CXXFLAGS+= -DSQLITE $(shell pkg-config --cflags sqlite3)
8f735d
-endif
8f735d
-ifeq ($(ZLIB), 1)
8f735d
-	CXXFLAGS+= -DZLIB $(shell pkg-config --cflags zlib)
8f735d
-endif
8f735d
-LDFLAGS=-L./core/ -g
8f735d
-ifneq ($(shell $(LD) --help 2| grep -- --as-needed), )
8f735d
-	LDFLAGS+= -Wl,--as-needed
8f735d
-endif
8f735d
-LDSTATIC=-static
8f735d
-LIBS+=-llshw -lresolv
8f735d
-ifeq ($(SQLITE), 1)
8f735d
-	LIBS+= $(shell pkg-config --libs sqlite3)
8f735d
-endif
8f735d
-ifeq ($(ZLIB), 1)
8f735d
-	LIBS+= $(shell pkg-config --libs zlib)
8f735d
-endif
8f735d
-
8f735d
-export CXXFLAGS
8f735d
-export LIBS
8f735d
-export LDFLAGS
8f735d
-
8f735d
-ifeq ($(ZLIB), 1)
8f735d
-DATAFILES = pci.ids.gz usb.ids.gz oui.txt.gz manuf.txt.gz pnp.ids.gz pnpid.txt.gz
8f735d
-else
8f735d
-DATAFILES = pci.ids usb.ids oui.txt manuf.txt pnp.ids pnpid.txt
8f735d
-endif
8f735d
-
8f735d
-all: $(PACKAGENAME) $(PACKAGENAME).1 $(DATAFILES)
8f735d
-
8f735d
-.cc.o:
8f735d
-	$(CXX) $(CXXFLAGS) -c $< -o $@
8f735d
-
8f735d
-%.gz: %
8f735d
-	gzip -c $< > $@
8f735d
-
8f735d
-.PHONY: core
8f735d
-core:
8f735d
-	+make -C core all
8f735d
-
8f735d
-$(PACKAGENAME): core $(PACKAGENAME).o
8f735d
-	$(CXX) $(LDFLAGS) -o $@ $(PACKAGENAME).o $(LIBS)
8f735d
-
8f735d
-.PHONY: po
8f735d
-po:
8f735d
-	+make -C po all
8f735d
-
8f735d
-.PHONY: gui
8f735d
-gui: core
8f735d
-	+make -C gui all
8f735d
-
8f735d
-.PHONY: nologo
8f735d
-nologo:
8f735d
-	cp -f gui/artwork/nologo/* gui/artwork/
8f735d
-
8f735d
-.PHONY: static
8f735d
-static: $(PACKAGENAME)-static
8f735d
-
8f735d
-$(PACKAGENAME)-static: core core/lib$(PACKAGENAME).a $(PACKAGENAME).o
8f735d
-	$(CXX) $(LDSTATIC) $(LDFLAGS) -o $@ $(PACKAGENAME).o $(LIBS)
8f735d
-	$(STRIP) $@
8f735d
-
8f735d
-.PHONY: compressed
8f735d
-compressed: $(PACKAGENAME)-compressed
8f735d
-
8f735d
-$(PACKAGENAME)-compressed: $(PACKAGENAME)-static
8f735d
-	upx -9 -o $@ $<
8f735d
-
8f735d
-$(PACKAGENAME).1: $(PACKAGENAME).sgml
8f735d
-	docbook2man $<
8f735d
-
8f735d
-pci.ids:
8f735d
-	wget http://pciids.sourceforge.net/pci.ids
8f735d
-
8f735d
-usb.ids:
8f735d
-	wget http://www.linux-usb.org/usb.ids
8f735d
-
8f735d
-oui.txt:
8f735d
-	wget http://standards.ieee.org/regauth/oui/oui.txt
8f735d
-
8f735d
-manuf.txt:
8f735d
-	wget -O $@ http://anonsvn.wireshark.org/wireshark/trunk/manuf
8f735d
-
8f735d
-pnp.ids:
8f735d
-	wget https://git.fedorahosted.org/cgit/hwdata.git/plain/pnp.ids
8f735d
-
8f735d
-pnpid.txt:
8f735d
-	wget http://www-pc.uni-regensburg.de/hardware/TECHNIK/PCI_PNP/pnpid.txt
8f735d
-
8f735d
-install: all
8f735d
-	$(INSTALL) -d -m 0755 $(DESTDIR)/$(SBINDIR)
8f735d
-	$(INSTALL) -m 0755 $(PACKAGENAME) $(DESTDIR)/$(SBINDIR)
8f735d
-	$(INSTALL) -d -m 0755 $(DESTDIR)/$(MANDIR)/man1
8f735d
-	$(INSTALL) -m 0644 $(PACKAGENAME).1 $(DESTDIR)/$(MANDIR)/man1
8f735d
-	$(INSTALL) -d -m 0755 $(DESTDIR)/$(DATADIR)/$(PACKAGENAME)
8f735d
-	$(INSTALL) -m 0644 $(DATAFILES) $(DESTDIR)/$(DATADIR)/$(PACKAGENAME)
8f735d
-	make -C po install
8f735d
-
8f735d
-install-gui: gui
8f735d
-	$(INSTALL) -d -m 0755 $(DESTDIR)/$(SBINDIR)
8f735d
-	$(INSTALL) -m 0755 gui/gtk-$(PACKAGENAME) $(DESTDIR)/$(SBINDIR)
8f735d
-	$(INSTALL) -d -m 0755 $(DESTDIR)/$(DATADIR)/$(PACKAGENAME)/artwork
8f735d
-	$(INSTALL) -d -m 0755 $(DESTDIR)/$(DATADIR)/$(PACKAGENAME)/ui
8f735d
-	$(INSTALL) -m 0644 gui/*.ui $(DESTDIR)/$(DATADIR)/$(PACKAGENAME)/ui
8f735d
-	$(INSTALL) -m 0644 gui/artwork/*.svg $(DESTDIR)/$(DATADIR)/$(PACKAGENAME)/artwork
8f735d
-	
8f735d
-clean:
8f735d
-	rm -f $(PACKAGENAME).o $(PACKAGENAME) $(PACKAGENAME)-static $(PACKAGENAME)-compressed
8f735d
-	rm -f $(addsuffix .gz,$(DATAFILES))
8f735d
-	make -C core clean
8f735d
-	make -C gui clean
8f735d
-
8f735d
-depend:
8f735d
-	@makedepend -Y $(SRCS) 2> /dev/null > /dev/null
8f735d
-
8f735d
-
8f735d
-# DO NOT DELETE
8f735d
diff --git a/src/core/Makefile b/src/core/Makefile
8f735d
deleted file mode 100644
8f735d
index 884a963..0000000
8f735d
--- a/src/core/Makefile
8f735d
+++ /dev/null
8f735d
@@ -1,80 +0,0 @@
8f735d
-PACKAGENAME?=lshw
8f735d
-
8f735d
-CXX=c++
8f735d
-INCLUDES=
8f735d
-DEFINES=-DPREFIX=\"$(PREFIX)\" -DSBINDIR=\"$(SBINDIR)\" -DMANDIR=\"$(MANDIR)\" -DDATADIR=\"$(DATADIR)\"
8f735d
-CXXFLAGS?=-g -Wall $(INCLUDES) $(DEFINES) $(RPM_OPT_FLAGS)
8f735d
-LDFLAGS=
8f735d
-LDSTATIC=
8f735d
-LIBS=
8f735d
-
8f735d
-OBJS = hw.o main.o print.o mem.o dmi.o device-tree.o cpuinfo.o osutils.o pci.o version.o cpuid.o ide.o cdrom.o pcmcia-legacy.o scsi.o s390.o disk.o spd.o network.o isapnp.o pnp.o fb.o options.o usb.o sysfs.o display.o heuristics.o parisc.o cpufreq.o partitions.o blockio.o lvm.o ideraid.o pcmcia.o volumes.o mounts.o smp.o abi.o jedec.o dump.o fat.o virtio.o vio.o
8f735d
-ifeq ($(SQLITE), 1)
8f735d
-	OBJS+= db.o
8f735d
-endif
8f735d
-SRCS = $(OBJS:.o=.cc)
8f735d
-
8f735d
-all: lib$(PACKAGENAME).a
8f735d
-
8f735d
-.cc.o:
8f735d
-	$(CXX) $(CXXFLAGS) -c $< -o $@
8f735d
-
8f735d
-lib$(PACKAGENAME).a: $(OBJS)
8f735d
-	$(AR) rs $@ $^
8f735d
-
8f735d
-install: all
8f735d
-	
8f735d
-clean:
8f735d
-	rm -f $(OBJS) lib$(PACKAGENAME).a
8f735d
-
8f735d
-depend:
8f735d
-	@makedepend -Y $(SRCS) 2> /dev/null > /dev/null
8f735d
-
8f735d
-
8f735d
-# DO NOT DELETE
8f735d
-
8f735d
-hw.o: hw.h osutils.h version.h config.h options.h heuristics.h
8f735d
-main.o: hw.h print.h version.h options.h mem.h dmi.h cpuinfo.h cpuid.h
8f735d
-main.o: device-tree.h pci.h pcmcia.h pcmcia-legacy.h ide.h scsi.h spd.h
8f735d
-main.o: network.h isapnp.h fb.h usb.h sysfs.h display.h parisc.h cpufreq.h
8f735d
-main.o: ideraid.h mounts.h smp.h abi.h s390.h virtio.h pnp.h vio.h
8f735d
-print.o: print.h hw.h options.h version.h osutils.h config.h
8f735d
-mem.o: version.h config.h mem.h hw.h sysfs.h
8f735d
-dmi.o: version.h config.h dmi.h hw.h osutils.h
8f735d
-device-tree.o: version.h device-tree.h hw.h osutils.h
8f735d
-cpuinfo.o: version.h cpuinfo.h hw.h osutils.h
8f735d
-osutils.o: version.h osutils.h
8f735d
-pci.o: version.h config.h pci.h hw.h osutils.h options.h
8f735d
-version.o: version.h config.h
8f735d
-cpuid.o: version.h cpuid.h hw.h
8f735d
-ide.o: version.h cpuinfo.h hw.h osutils.h cdrom.h disk.h heuristics.h
8f735d
-cdrom.o: version.h cdrom.h hw.h partitions.h
8f735d
-pcmcia-legacy.o: version.h pcmcia-legacy.h hw.h osutils.h
8f735d
-scsi.o: version.h mem.h hw.h cdrom.h disk.h osutils.h heuristics.h sysfs.h
8f735d
-disk.o: version.h disk.h hw.h osutils.h heuristics.h partitions.h
8f735d
-spd.o: version.h spd.h hw.h osutils.h
8f735d
-network.o: version.h config.h network.h hw.h osutils.h sysfs.h options.h
8f735d
-network.o: heuristics.h
8f735d
-isapnp.o: version.h isapnp.h hw.h pnp.h
8f735d
-pnp.o: version.h pnp.h hw.h sysfs.h osutils.h
8f735d
-fb.o: version.h fb.h hw.h
8f735d
-options.o: version.h options.h osutils.h
8f735d
-usb.o: version.h usb.h hw.h osutils.h heuristics.h options.h
8f735d
-sysfs.o: version.h sysfs.h hw.h osutils.h
8f735d
-display.o: display.h hw.h
8f735d
-heuristics.o: version.h sysfs.h hw.h osutils.h
8f735d
-parisc.o: version.h device-tree.h hw.h osutils.h heuristics.h
8f735d
-cpufreq.o: version.h hw.h osutils.h
8f735d
-partitions.o: version.h partitions.h hw.h blockio.h lvm.h volumes.h osutils.h
8f735d
-blockio.o: version.h blockio.h osutils.h
8f735d
-lvm.o: version.h lvm.h hw.h blockio.h osutils.h
8f735d
-ideraid.o: version.h cpuinfo.h hw.h osutils.h cdrom.h disk.h heuristics.h
8f735d
-pcmcia.o: version.h pcmcia.h hw.h osutils.h sysfs.h
8f735d
-volumes.o: version.h volumes.h hw.h blockio.h lvm.h osutils.h
8f735d
-mounts.o: version.h mounts.h hw.h osutils.h
8f735d
-smp.o: version.h smp.h hw.h osutils.h
8f735d
-abi.o: version.h abi.h hw.h osutils.h
8f735d
-jedec.o: jedec.h
8f735d
-s390.o: hw.h sysfs.h disk.h s390.h
8f735d
-virtio.o: version.h hw.h sysfs.h disk.h virtio.h
8f735d
-vio.o: version.h hw.h sysfs.h vio.h
8f735d
diff --git a/src/core/config.h b/src/core/config.h.in
8f735d
similarity index 50%
8f735d
rename from src/core/config.h
8f735d
rename to src/core/config.h.in
8f735d
index 69023fd..ca25a5f 100644
8f735d
--- a/src/core/config.h
8f735d
+++ b/src/core/config.h.in
8f735d
@@ -13,27 +13,15 @@
8f735d
 #define N_(String) gettext_noop (String)
8f735d
 #endif
8f735d
 
8f735d
-#ifndef PACKAGE
8f735d
-#define PACKAGE "lshw"
8f735d
-#endif
8f735d
-
8f735d
-#ifndef PREFIX
8f735d
-#define PREFIX "/usr"
8f735d
-#endif
8f735d
-
8f735d
-#ifndef SBINDIR
8f735d
-#define SBINDIR PREFIX"/sbin"
8f735d
-#endif
8f735d
+#define PACKAGE "@PROJECT_NAME@"
8f735d
+#define VERSION "@VERSION@"
8f735d
 
8f735d
-#ifndef DATADIR
8f735d
-#define DATADIR PREFIX"/share/lshw"
8f735d
-#endif
8f735d
+#define SBINDIR "@SBINDIR@"
8f735d
+#define DATADIR "@DATADIR@"
8f735d
+#define MANDIR "@MANDIR@"
8f735d
+#define LOCALEDIR "@LOCALEDIR@"
8f735d
 
8f735d
-#ifndef MANDIR
8f735d
-#define MANDIR PREFIX"/share/man"
8f735d
-#endif
8f735d
+#cmakedefine SQLITE 1
8f735d
+#cmakedefine ZLIB 1
8f735d
 
8f735d
-#ifndef LOCALEDIR
8f735d
-#define LOCALEDIR PREFIX"/share/locale"
8f735d
-#endif
8f735d
 #endif
8f735d
diff --git a/src/core/db.cc b/src/core/db.cc
8f735d
index d080295..f85c85b 100644
8f735d
--- a/src/core/db.cc
8f735d
+++ b/src/core/db.cc
8f735d
@@ -1,6 +1,12 @@
8f735d
+
8f735d
 #include <string.h>
8f735d
 #include <string>
8f735d
 #include <stdexcept>
8f735d
+
8f735d
+#include "config.h"
8f735d
+
8f735d
+#ifdef SQLITE
8f735d
+
8f735d
 #include <sqlite3.h>
8f735d
 
8f735d
 #include "db.h"
8f735d
@@ -419,3 +425,5 @@ value statement::operator[](const string & i) const
8f735d
 {
8f735d
   return column(i);
8f735d
 }
8f735d
+
8f735d
+#endif /* SQLITE */
8f735d
diff --git a/src/core/dump.cc b/src/core/dump.cc
8f735d
index 6bc9674..f22f0fb 100644
8f735d
--- a/src/core/dump.cc
8f735d
+++ b/src/core/dump.cc
8f735d
@@ -1,5 +1,5 @@
8f735d
-#include "dump.h"
8f735d
 #include "version.h"
8f735d
+#include "dump.h"
8f735d
 #include "osutils.h"
8f735d
 
8f735d
 #include <time.h>
8f735d
diff --git a/src/core/version.h b/src/core/version.h
8f735d
index 91e039a..5cecdda 100644
8f735d
--- a/src/core/version.h
8f735d
+++ b/src/core/version.h
8f735d
@@ -1,6 +1,8 @@
8f735d
 #ifndef _VERSION_H_
8f735d
 #define _VERSION_H_
8f735d
 
8f735d
+#include "config.h"
8f735d
+
8f735d
 #if defined(__GNUC__) || defined(__INTEL_COMPILER)
8f735d
 #define __ID(string) __asm__(".ident\t\"" string "\"")
8f735d
 #else
8f735d
diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt
8f735d
new file mode 100644
8f735d
index 0000000..48bd3f5
8f735d
--- /dev/null
8f735d
+++ b/src/gui/CMakeLists.txt
8f735d
@@ -0,0 +1,67 @@
8f735d
+if(NOT GUI OR STATIC)
8f735d
+  message("-- gtk-${PROJECT_NAME} disabled")
8f735d
+  return()
8f735d
+endif()
8f735d
+
8f735d
+find_package(PkgConfig)
8f735d
+pkg_check_modules(GTK2 REQUIRED gtk+-2.0 gmodule-2.0)
8f735d
+
8f735d
+file(GLOB GTK_SOURCES "*.c*")
8f735d
+
8f735d
+include_directories("${PROJECT_BINARY_DIR}")
8f735d
+include_directories("${PROJECT_SOURCE_DIR}/src/core")
8f735d
+
8f735d
+include_directories("${GTK2_INCLUDE_DIRS}")
8f735d
+
8f735d
+add_executable(gtk-lshw ${GTK_SOURCES})
8f735d
+target_link_libraries(gtk-lshw ${SQLITE3_LIBRARIES} ${Z_LIBRARIES} ${GTK2_LIBRARIES} resolv core)
8f735d
+install(TARGETS gtk-lshw DESTINATION sbin)
8f735d
+
8f735d
+if(POLICYKIT)
8f735d
+  set(desktop_exec ${CMAKE_INSTALL_FULL_BINDIR}/lshw-gui)
8f735d
+  configure_file(
8f735d
+    "${CMAKE_CURRENT_SOURCE_DIR}/integration/org.ezix.lshw.gui.policy.in"
8f735d
+    "${CMAKE_CURRENT_BINARY_DIR}/org.ezix.lshw.gui.policy")
8f735d
+  configure_file(
8f735d
+    "${CMAKE_CURRENT_SOURCE_DIR}/integration/lshw-gui.in"
8f735d
+    "${CMAKE_CURRENT_BINARY_DIR}/lshw-gui")
8f735d
+else()
8f735d
+  set(desktop_exec ${CMAKE_INSTALL_FULL_SBINDIR}/gtk-lshw)
8f735d
+endif()
8f735d
+
8f735d
+configure_file(
8f735d
+  "${CMAKE_CURRENT_SOURCE_DIR}/integration/gtk-lshw.desktop.in"
8f735d
+  "${CMAKE_CURRENT_BINARY_DIR}/gtk-lshw.desktop")
8f735d
+configure_file(
8f735d
+  "${CMAKE_CURRENT_SOURCE_DIR}/artwork/logo.svg"
8f735d
+  "${CMAKE_CURRENT_BINARY_DIR}/gtk-lshw.svg")
8f735d
+
8f735d
+file(GLOB LOGOS "artwork/*.svg")
8f735d
+file(GLOB NOLOGOS "artwork/nologo/*.svg")
8f735d
+
8f735d
+if(NOLOGO)
8f735d
+  install(FILES ${NOLOGOS} DESTINATION ${PROJECT_DATADIR}/artwork)
8f735d
+  foreach(LOGO ${LOGOS})
8f735d
+    get_filename_component(BASENAME ${LOGO} NAME)
8f735d
+    if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/artwork/nologo/${BASENAME}")
8f735d
+      list(REMOVE_ITEM LOGOS ${LOGO})
8f735d
+    endif()
8f735d
+  endforeach()
8f735d
+endif()
8f735d
+
8f735d
+install(FILES ${LOGOS} DESTINATION ${PROJECT_DATADIR}/artwork)
8f735d
+install(FILES gtk-lshw.ui DESTINATION ${PROJECT_DATADIR}/ui)
8f735d
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/gtk-lshw.desktop 
8f735d
+  DESTINATION ${CMAKE_INSTALL_FULL_DATADIR}/applications)
8f735d
+install(FILES integration/gtk-lshw.appdata.xml DESTINATION
8f735d
+  ${CMAKE_INSTALL_FULL_DATADIR}/appdata)
8f735d
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/gtk-lshw.svg DESTINATION
8f735d
+  ${CMAKE_INSTALL_FULL_DATADIR}/pixmaps)
8f735d
+
8f735d
+
8f735d
+if(POLICYKIT)
8f735d
+  install(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.ezix.lshw.gui.policy
8f735d
+    DESTINATION ${CMAKE_INSTALL_FULL_DATADIR}/polkit-1/actions)
8f735d
+  install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/lshw-gui
8f735d
+    DESTINATION bin)
8f735d
+endif()
8f735d
diff --git a/src/gui/Makefile b/src/gui/Makefile
8f735d
deleted file mode 100644
8f735d
index 2526c18..0000000
8f735d
--- a/src/gui/Makefile
8f735d
+++ /dev/null
8f735d
@@ -1,61 +0,0 @@
8f735d
-PACKAGENAME?=lshw
8f735d
-
8f735d
-CXX?=c++
8f735d
-CC?=cc
8f735d
-STRIP?=strip
8f735d
-OBJCOPY?=objcopy
8f735d
-
8f735d
-DEFINES=-DPREFIX=\"$(PREFIX)\" -DSBINDIR=\"$(SBINDIR)\" -DMANDIR=\"$(MANDIR)\" -DDATADIR=\"$(DATADIR)\"
8f735d
-GTKINCLUDES=$(shell pkg-config gtk+-2.0 --cflags)
8f735d
-INCLUDES=-I../core $(GTKINCLUDES)
8f735d
-CXXFLAGS=-g -Wall $(INCLUDES) $(DEFINES) $(RPM_OPT_FLAGS)
8f735d
-ifeq ($(SQLITE), 1)
8f735d
-	CXXFLAGS+= -DSQLITE $(shell pkg-config --cflags sqlite3)
8f735d
-endif
8f735d
-CFLAGS=$(CXXFLAGS) $(DEFINES)
8f735d
-GTKLIBS=$(shell pkg-config gtk+-2.0 gmodule-2.0 --libs)
8f735d
-LIBS+=-L../core -llshw -lresolv $(GTKLIBS)
8f735d
-ifeq ($(SQLITE), 1)
8f735d
-	LIBS+= $(shell pkg-config --libs sqlite3)
8f735d
-endif
8f735d
-LDFLAGS=
8f735d
-ifneq ($(shell $(LD) --help 2| grep -- --as-needed), )
8f735d
-	LDFLAGS+= -Wl,--as-needed
8f735d
-endif
8f735d
-
8f735d
-OBJS = gtk-lshw.o callbacks.o engine.o print-gui.o stock.o
8f735d
-SRCS = $(OBJS:.o=.c)
8f735d
-
8f735d
-all: gtk-$(PACKAGENAME)
8f735d
-
8f735d
-.cc.o:
8f735d
-	$(CXX) $(CXXFLAGS) -c $< -o $@
8f735d
-
8f735d
-.c.o:
8f735d
-	$(CC) $(CFLAGS) -c $< -o $@
8f735d
-
8f735d
-.PHONY: icon
8f735d
-icon: gtk-$(PACKAGENAME) artwork/logo.svg
8f735d
-	$(OBJCOPY) --add-section .icon=artwork/logo.svg gtk-$(PACKAGENAME)
8f735d
-
8f735d
-interface.c: gtk-lshw.glade gtk-lshw.gladep
8f735d
-	glade-2 -w gtk-lshw.glade
8f735d
-
8f735d
-gtk-$(PACKAGENAME): $(OBJS) ../core/liblshw.a
8f735d
-	$(CXX) $(LDFLAGS) -o $@ $^ $(LIBS)
8f735d
-
8f735d
-install: all
8f735d
-	$(STRIP) gtk-$(PACKAGENAME)
8f735d
-	
8f735d
-clean:
8f735d
-	rm -f $(OBJS) gtk-$(PACKAGENAME) gtk-lshw.glade.bak gtk-lshw.gladep.bak callbacks.c.bak callbacks.h.bak Makefile.bak
8f735d
-
8f735d
-depend:
8f735d
-	@makedepend -Y $(SRCS) 2> /dev/null > /dev/null
8f735d
-
8f735d
-
8f735d
-# DO NOT DELETE
8f735d
-
8f735d
-gtk-lshw.o: stock.h engine.h
8f735d
-callbacks.o: callbacks.h support.h engine.h
8f735d
-stock.o: stock.h
8f735d
diff --git a/src/gui/integration/gtk-lshw.desktop b/src/gui/integration/gtk-lshw.desktop.in
8f735d
similarity index 51%
8f735d
rename from src/gui/integration/gtk-lshw.desktop
8f735d
rename to src/gui/integration/gtk-lshw.desktop.in
8f735d
index 4df1c7c..7124c27 100644
8f735d
--- a/src/gui/integration/gtk-lshw.desktop
8f735d
+++ b/src/gui/integration/gtk-lshw.desktop.in
8f735d
@@ -3,10 +3,9 @@ Name=LSHW
8f735d
 Comment=HardWare LiSter
8f735d
 Comment[fr]=Listeur de matériel
8f735d
 Comment[es]=Listar equipamiento
8f735d
-Categories=Application;System;X-Red-Hat-Base;X-Fedora;
8f735d
-Icon=/usr/share/lshw/artwork/logo.svg
8f735d
-Exec=/usr/bin/gtk-lshw
8f735d
+Categories=GTK;System;
8f735d
+Icon=gtk-lshw
8f735d
+Exec=@desktop_exec@
8f735d
 Type=Application
8f735d
 Terminal=false
8f735d
 Encoding=UTF-8
8f735d
-X-Desktop-File-Install-Version=0.10
8f735d
diff --git a/src/gui/integration/lshw-gui.in b/src/gui/integration/lshw-gui.in
8f735d
new file mode 100644
8f735d
index 0000000..ac0823b
8f735d
--- /dev/null
8f735d
+++ b/src/gui/integration/lshw-gui.in
8f735d
@@ -0,0 +1,5 @@
8f735d
+#! /bin/bash
8f735d
+
8f735d
+/usr/bin/pkexec @CMAKE_INSTALL_FULL_SBINDIR@/gtk-lshw
8f735d
+
8f735d
+
8f735d
diff --git a/src/gui/integration/org.ezix.lshw.gui.policy.in b/src/gui/integration/org.ezix.lshw.gui.policy.in
8f735d
new file mode 100644
8f735d
index 0000000..cba4189
8f735d
--- /dev/null
8f735d
+++ b/src/gui/integration/org.ezix.lshw.gui.policy.in
8f735d
@@ -0,0 +1,20 @@
8f735d
+
8f735d
+
8f735d
+"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
8f735d
+"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
8f735d
+<policyconfig>
8f735d
+ <vendor>lshw</vendor>
8f735d
+ <vendor_url>http://ezix.org/project/wiki/HardwareLiSter</vendor_url>
8f735d
+ <action id="org.ezix.lshw.gui.pkexec.run">
8f735d
+    <description>Hardware Lister (lshw) - list hardware information</description>
8f735d
+    <message>Authentication is required to run lshw-gui</message>
8f735d
+    <icon_name>lshw-gui</icon_name>
8f735d
+    <defaults>
8f735d
+     <allow_any>no</allow_any>
8f735d
+     <allow_inactive>no</allow_inactive>
8f735d
+     <allow_active>auth_admin_keep</allow_active>
8f735d
+    </defaults>
8f735d
+    <annotate key="org.freedesktop.policykit.exec.path">@CMAKE_INSTALL_FULL_SBINDIR@/gtk-lshw</annotate>
8f735d
+    <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
8f735d
+ </action>
8f735d
+</policyconfig>
8f735d
diff --git a/src/gui/stock.c b/src/gui/stock.c
8f735d
index 08675db..2f92332 100644
8f735d
--- a/src/gui/stock.c
8f735d
+++ b/src/gui/stock.c
8f735d
@@ -1,3 +1,4 @@
8f735d
+#include "config.h"
8f735d
 #include "stock.h"
8f735d
 #include <stdlib.h>
8f735d
 #include <string.h>
8f735d
diff --git a/src/po/CMakeLists.txt b/src/po/CMakeLists.txt
8f735d
new file mode 100644
8f735d
index 0000000..de2f5c8
8f735d
--- /dev/null
8f735d
+++ b/src/po/CMakeLists.txt
8f735d
@@ -0,0 +1,16 @@
8f735d
+include(FindGettext)
8f735d
+
8f735d
+if (GETTEXT_FOUND)
8f735d
+  file(GLOB POTFILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.po")
8f735d
+  string(REPLACE ".po" " " LANGS ${POTFILES})
8f735d
+  message(STATUS "gettext found: ${LANGS}")
8f735d
+  string(REPLACE " " ";" LANGS ${LANGS})
8f735d
+  foreach(LANG ${LANGS})
8f735d
+    GETTEXT_PROCESS_PO_FILES(${LANG} ALL PO_FILES ${LANG}.po)
8f735d
+    install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${LANG}.gmo"
8f735d
+      DESTINATION "${CMAKE_INSTALL_FULL_LOCALEDIR}/${LANG}/LC_MESSAGES"
8f735d
+      RENAME "${PROJECT_NAME}.mo")
8f735d
+  endforeach()
8f735d
+else()
8f735d
+  message("-- gettext not found")
8f735d
+endif()
8f735d
diff --git a/src/po/Makefile b/src/po/Makefile
8f735d
deleted file mode 100644
8f735d
index 36fbdb7..0000000
8f735d
--- a/src/po/Makefile
8f735d
+++ /dev/null
8f735d
@@ -1,23 +0,0 @@
8f735d
-PACKAGENAME?=lshw
8f735d
-
8f735d
-LANGUAGES = fr
8f735d
-SRCS = $(LANGUAGES:=.po)
8f735d
-CATALOGS = $(LANGUAGES:=.mo)
8f735d
-
8f735d
-all: $(PACKAGENAME).pot $(CATALOGS)
8f735d
-
8f735d
-POTFILES:
8f735d
-	find .. -name \*.cc > $@
8f735d
-	find .. -name \*.c >> $@
8f735d
-
8f735d
-$(PACKAGENAME).pot: POTFILES
8f735d
-	xgettext -F --no-wrap --indent --keyword=_ --keyword=N_ -d $(PACKAGENAME) -o $@ -f POTFILES
8f735d
-
8f735d
-%.mo: %.po
8f735d
-	msgfmt -v -o $@ $^
8f735d
-
8f735d
-install: $(CATALOGS)
8f735d
-	$(foreach i, $(LANGUAGES), install -D $(i).mo $(DESTDIR)/$(DATADIR)/locale/$(i)/LC_MESSAGES/$(PACKAGENAME).mo ;)
8f735d
-	
8f735d
-clean:
8f735d
-	rm -f $(CATALOGS) $(PACKAGENAME).pot
8f735d
-- 
8f735d
2.13.6
8f735d