cmake v_0
authorFrantišek Kučera <franta-hg@frantovo.cz>
Sun, 09 Dec 2018 18:23:25 +0100
branchv_0
changeset 9 c0b16e4bd773
parent 8 21b14ec0bc60
child 10 58cf7b021837
cmake
CMakeLists.txt
Makefile
nbproject/Makefile-Debug.mk
nbproject/Makefile-Release.mk
nbproject/Makefile-impl.mk
nbproject/Makefile-variables.mk
nbproject/Package-Debug.bash
nbproject/Package-Release.bash
nbproject/configurations.xml
nbproject/project.xml
relpipe-in-fstab.cpp
src/CMakeLists.txt
src/relpipe-in-fstab.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CMakeLists.txt	Sun Dec 09 18:23:25 2018 +0100
@@ -0,0 +1,19 @@
+# Relational pipes
+# Copyright © 2018 František Kučera (Frantovo.cz, GlobalCode.info)
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+project (relpipe-in-fstab.cpp)
+cmake_minimum_required(VERSION 2.8)
+add_subdirectory (src)
--- a/Makefile	Mon Dec 03 16:11:40 2018 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,128 +0,0 @@
-#
-#  There exist several targets which are by default empty and which can be 
-#  used for execution of your targets. These targets are usually executed 
-#  before and after some main targets. They are: 
-#
-#     .build-pre:              called before 'build' target
-#     .build-post:             called after 'build' target
-#     .clean-pre:              called before 'clean' target
-#     .clean-post:             called after 'clean' target
-#     .clobber-pre:            called before 'clobber' target
-#     .clobber-post:           called after 'clobber' target
-#     .all-pre:                called before 'all' target
-#     .all-post:               called after 'all' target
-#     .help-pre:               called before 'help' target
-#     .help-post:              called after 'help' target
-#
-#  Targets beginning with '.' are not intended to be called on their own.
-#
-#  Main targets can be executed directly, and they are:
-#  
-#     build                    build a specific configuration
-#     clean                    remove built files from a configuration
-#     clobber                  remove all built files
-#     all                      build all configurations
-#     help                     print help mesage
-#  
-#  Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and
-#  .help-impl are implemented in nbproject/makefile-impl.mk.
-#
-#  Available make variables:
-#
-#     CND_BASEDIR                base directory for relative paths
-#     CND_DISTDIR                default top distribution directory (build artifacts)
-#     CND_BUILDDIR               default top build directory (object files, ...)
-#     CONF                       name of current configuration
-#     CND_PLATFORM_${CONF}       platform name (current configuration)
-#     CND_ARTIFACT_DIR_${CONF}   directory of build artifact (current configuration)
-#     CND_ARTIFACT_NAME_${CONF}  name of build artifact (current configuration)
-#     CND_ARTIFACT_PATH_${CONF}  path to build artifact (current configuration)
-#     CND_PACKAGE_DIR_${CONF}    directory of package (current configuration)
-#     CND_PACKAGE_NAME_${CONF}   name of package (current configuration)
-#     CND_PACKAGE_PATH_${CONF}   path to package (current configuration)
-#
-# NOCDDL
-
-
-# Environment 
-MKDIR=mkdir
-CP=cp
-CCADMIN=CCadmin
-
-
-# build
-build: .build-post
-
-.build-pre:
-# Add your pre 'build' code here...
-
-.build-post: .build-impl
-# Add your post 'build' code here...
-
-
-# clean
-clean: .clean-post
-
-.clean-pre:
-# Add your pre 'clean' code here...
-
-.clean-post: .clean-impl
-# Add your post 'clean' code here...
-
-
-# clobber
-clobber: .clobber-post
-
-.clobber-pre:
-# Add your pre 'clobber' code here...
-
-.clobber-post: .clobber-impl
-# Add your post 'clobber' code here...
-
-
-# all
-all: .all-post
-
-.all-pre:
-# Add your pre 'all' code here...
-
-.all-post: .all-impl
-# Add your post 'all' code here...
-
-
-# build tests
-build-tests: .build-tests-post
-
-.build-tests-pre:
-# Add your pre 'build-tests' code here...
-
-.build-tests-post: .build-tests-impl
-# Add your post 'build-tests' code here...
-
-
-# run tests
-test: .test-post
-
-.test-pre: build-tests
-# Add your pre 'test' code here...
-
-.test-post: .test-impl
-# Add your post 'test' code here...
-
-
-# help
-help: .help-post
-
-.help-pre:
-# Add your pre 'help' code here...
-
-.help-post: .help-impl
-# Add your post 'help' code here...
-
-
-
-# include project implementation makefile
-include nbproject/Makefile-impl.mk
-
-# include project make variables
-include nbproject/Makefile-variables.mk
--- a/nbproject/Makefile-Debug.mk	Mon Dec 03 16:11:40 2018 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-#
-# Generated Makefile - do not edit!
-#
-# Edit the Makefile in the project folder instead (../Makefile). Each target
-# has a -pre and a -post target defined where you can add customized code.
-#
-# This makefile implements configuration specific macros and targets.
-
-
-# Environment
-MKDIR=mkdir
-CP=cp
-GREP=grep
-NM=nm
-CCADMIN=CCadmin
-RANLIB=ranlib
-CC=gcc
-CCC=g++
-CXX=g++
-FC=gfortran
-AS=as
-
-# Macros
-CND_PLATFORM=GNU-Linux
-CND_DLIB_EXT=so
-CND_CONF=Debug
-CND_DISTDIR=dist
-CND_BUILDDIR=build
-
-# Include project Makefile
-include Makefile
-
-# Object Directory
-OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}
-
-# Object Files
-OBJECTFILES= \
-	${OBJECTDIR}/relpipe-in-fstab.o
-
-
-# C Compiler Flags
-CFLAGS=
-
-# CC Compiler Flags
-CCFLAGS=-fsanitize=address
-CXXFLAGS=-fsanitize=address
-
-# Fortran Compiler Flags
-FFLAGS=
-
-# Assembler Flags
-ASFLAGS=
-
-# Link Libraries and Options
-LDLIBSOPTIONS=`pkg-config --libs relpipe-lib-writer.cpp` `pkg-config --libs relpipe-lib-cli.cpp`  
-
-# Build Targets
-.build-conf: ${BUILD_SUBPROJECTS}
-	"${MAKE}"  -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/relpipe-in-fstab.cpp
-
-${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/relpipe-in-fstab.cpp: ${OBJECTFILES}
-	${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}
-	${LINK.cc} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/relpipe-in-fstab.cpp ${OBJECTFILES} ${LDLIBSOPTIONS}
-
-${OBJECTDIR}/relpipe-in-fstab.o: relpipe-in-fstab.cpp
-	${MKDIR} -p ${OBJECTDIR}
-	${RM} "$@.d"
-	$(COMPILE.cc) -g `pkg-config --cflags relpipe-lib-writer.cpp` `pkg-config --cflags relpipe-lib-cli.cpp` -std=c++14  -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/relpipe-in-fstab.o relpipe-in-fstab.cpp
-
-# Subprojects
-.build-subprojects:
-
-# Clean Targets
-.clean-conf: ${CLEAN_SUBPROJECTS}
-	${RM} -r ${CND_BUILDDIR}/${CND_CONF}
-
-# Subprojects
-.clean-subprojects:
-
-# Enable dependency checking
-.dep.inc: .depcheck-impl
-
-include .dep.inc
--- a/nbproject/Makefile-Release.mk	Mon Dec 03 16:11:40 2018 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-#
-# Generated Makefile - do not edit!
-#
-# Edit the Makefile in the project folder instead (../Makefile). Each target
-# has a -pre and a -post target defined where you can add customized code.
-#
-# This makefile implements configuration specific macros and targets.
-
-
-# Environment
-MKDIR=mkdir
-CP=cp
-GREP=grep
-NM=nm
-CCADMIN=CCadmin
-RANLIB=ranlib
-CC=gcc
-CCC=g++
-CXX=g++
-FC=gfortran
-AS=as
-
-# Macros
-CND_PLATFORM=GNU-Linux
-CND_DLIB_EXT=so
-CND_CONF=Release
-CND_DISTDIR=dist
-CND_BUILDDIR=build
-
-# Include project Makefile
-include Makefile
-
-# Object Directory
-OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}
-
-# Object Files
-OBJECTFILES= \
-	${OBJECTDIR}/relpipe-in-fstab.o
-
-
-# C Compiler Flags
-CFLAGS=
-
-# CC Compiler Flags
-CCFLAGS=
-CXXFLAGS=
-
-# Fortran Compiler Flags
-FFLAGS=
-
-# Assembler Flags
-ASFLAGS=
-
-# Link Libraries and Options
-LDLIBSOPTIONS=`pkg-config --libs relpipe-lib-writer.cpp` `pkg-config --libs relpipe-lib-cli.cpp`  
-
-# Build Targets
-.build-conf: ${BUILD_SUBPROJECTS}
-	"${MAKE}"  -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/relpipe-in-fstab.cpp
-
-${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/relpipe-in-fstab.cpp: ${OBJECTFILES}
-	${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}
-	${LINK.cc} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/relpipe-in-fstab.cpp ${OBJECTFILES} ${LDLIBSOPTIONS}
-
-${OBJECTDIR}/relpipe-in-fstab.o: relpipe-in-fstab.cpp
-	${MKDIR} -p ${OBJECTDIR}
-	${RM} "$@.d"
-	$(COMPILE.cc) -O2 `pkg-config --cflags relpipe-lib-writer.cpp` `pkg-config --cflags relpipe-lib-cli.cpp`   -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/relpipe-in-fstab.o relpipe-in-fstab.cpp
-
-# Subprojects
-.build-subprojects:
-
-# Clean Targets
-.clean-conf: ${CLEAN_SUBPROJECTS}
-	${RM} -r ${CND_BUILDDIR}/${CND_CONF}
-
-# Subprojects
-.clean-subprojects:
-
-# Enable dependency checking
-.dep.inc: .depcheck-impl
-
-include .dep.inc
--- a/nbproject/Makefile-impl.mk	Mon Dec 03 16:11:40 2018 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,133 +0,0 @@
-# 
-# Generated Makefile - do not edit! 
-# 
-# Edit the Makefile in the project folder instead (../Makefile). Each target
-# has a pre- and a post- target defined where you can add customization code.
-#
-# This makefile implements macros and targets common to all configurations.
-#
-# NOCDDL
-
-
-# Building and Cleaning subprojects are done by default, but can be controlled with the SUB
-# macro. If SUB=no, subprojects will not be built or cleaned. The following macro
-# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf
-# and .clean-reqprojects-conf unless SUB has the value 'no'
-SUB_no=NO
-SUBPROJECTS=${SUB_${SUB}}
-BUILD_SUBPROJECTS_=.build-subprojects
-BUILD_SUBPROJECTS_NO=
-BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}}
-CLEAN_SUBPROJECTS_=.clean-subprojects
-CLEAN_SUBPROJECTS_NO=
-CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}}
-
-
-# Project Name
-PROJECTNAME=relpipe-in-fstab.cpp
-
-# Active Configuration
-DEFAULTCONF=Debug
-CONF=${DEFAULTCONF}
-
-# All Configurations
-ALLCONFS=Debug Release 
-
-
-# build
-.build-impl: .build-pre .validate-impl .depcheck-impl
-	@#echo "=> Running $@... Configuration=$(CONF)"
-	"${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf
-
-
-# clean
-.clean-impl: .clean-pre .validate-impl .depcheck-impl
-	@#echo "=> Running $@... Configuration=$(CONF)"
-	"${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf
-
-
-# clobber 
-.clobber-impl: .clobber-pre .depcheck-impl
-	@#echo "=> Running $@..."
-	for CONF in ${ALLCONFS}; \
-	do \
-	    "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf; \
-	done
-
-# all 
-.all-impl: .all-pre .depcheck-impl
-	@#echo "=> Running $@..."
-	for CONF in ${ALLCONFS}; \
-	do \
-	    "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf; \
-	done
-
-# build tests
-.build-tests-impl: .build-impl .build-tests-pre
-	@#echo "=> Running $@... Configuration=$(CONF)"
-	"${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-tests-conf
-
-# run tests
-.test-impl: .build-tests-impl .test-pre
-	@#echo "=> Running $@... Configuration=$(CONF)"
-	"${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .test-conf
-
-# dependency checking support
-.depcheck-impl:
-	@echo "# This code depends on make tool being used" >.dep.inc
-	@if [ -n "${MAKE_VERSION}" ]; then \
-	    echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES} \$${TESTOBJECTFILES}))" >>.dep.inc; \
-	    echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \
-	    echo "include \$${DEPFILES}" >>.dep.inc; \
-	    echo "endif" >>.dep.inc; \
-	else \
-	    echo ".KEEP_STATE:" >>.dep.inc; \
-	    echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \
-	fi
-
-# configuration validation
-.validate-impl:
-	@if [ ! -f nbproject/Makefile-${CONF}.mk ]; \
-	then \
-	    echo ""; \
-	    echo "Error: can not find the makefile for configuration '${CONF}' in project ${PROJECTNAME}"; \
-	    echo "See 'make help' for details."; \
-	    echo "Current directory: " `pwd`; \
-	    echo ""; \
-	fi
-	@if [ ! -f nbproject/Makefile-${CONF}.mk ]; \
-	then \
-	    exit 1; \
-	fi
-
-
-# help
-.help-impl: .help-pre
-	@echo "This makefile supports the following configurations:"
-	@echo "    ${ALLCONFS}"
-	@echo ""
-	@echo "and the following targets:"
-	@echo "    build  (default target)"
-	@echo "    clean"
-	@echo "    clobber"
-	@echo "    all"
-	@echo "    help"
-	@echo ""
-	@echo "Makefile Usage:"
-	@echo "    make [CONF=<CONFIGURATION>] [SUB=no] build"
-	@echo "    make [CONF=<CONFIGURATION>] [SUB=no] clean"
-	@echo "    make [SUB=no] clobber"
-	@echo "    make [SUB=no] all"
-	@echo "    make help"
-	@echo ""
-	@echo "Target 'build' will build a specific configuration and, unless 'SUB=no',"
-	@echo "    also build subprojects."
-	@echo "Target 'clean' will clean a specific configuration and, unless 'SUB=no',"
-	@echo "    also clean subprojects."
-	@echo "Target 'clobber' will remove all built files from all configurations and,"
-	@echo "    unless 'SUB=no', also from subprojects."
-	@echo "Target 'all' will will build all configurations and, unless 'SUB=no',"
-	@echo "    also build subprojects."
-	@echo "Target 'help' prints this message."
-	@echo ""
-
--- a/nbproject/Makefile-variables.mk	Mon Dec 03 16:11:40 2018 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-#
-# Generated - do not edit!
-#
-# NOCDDL
-#
-CND_BASEDIR=`pwd`
-CND_BUILDDIR=build
-CND_DISTDIR=dist
-# Debug configuration
-CND_PLATFORM_Debug=GNU-Linux
-CND_ARTIFACT_DIR_Debug=dist/Debug/GNU-Linux
-CND_ARTIFACT_NAME_Debug=relpipe-in-fstab.cpp
-CND_ARTIFACT_PATH_Debug=dist/Debug/GNU-Linux/relpipe-in-fstab.cpp
-CND_PACKAGE_DIR_Debug=dist/Debug/GNU-Linux/package
-CND_PACKAGE_NAME_Debug=relpipe-in-fstab.cpp.tar
-CND_PACKAGE_PATH_Debug=dist/Debug/GNU-Linux/package/relpipe-in-fstab.cpp.tar
-# Release configuration
-CND_PLATFORM_Release=GNU-Linux
-CND_ARTIFACT_DIR_Release=dist/Release/GNU-Linux
-CND_ARTIFACT_NAME_Release=relpipe-in-fstab.cpp
-CND_ARTIFACT_PATH_Release=dist/Release/GNU-Linux/relpipe-in-fstab.cpp
-CND_PACKAGE_DIR_Release=dist/Release/GNU-Linux/package
-CND_PACKAGE_NAME_Release=relpipe-in-fstab.cpp.tar
-CND_PACKAGE_PATH_Release=dist/Release/GNU-Linux/package/relpipe-in-fstab.cpp.tar
-#
-# include compiler specific variables
-#
-# dmake command
-ROOT:sh = test -f nbproject/private/Makefile-variables.mk || \
-	(mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk)
-#
-# gmake command
-.PHONY: $(shell test -f nbproject/private/Makefile-variables.mk || (mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk))
-#
-include nbproject/private/Makefile-variables.mk
--- a/nbproject/Package-Debug.bash	Mon Dec 03 16:11:40 2018 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-#!/bin/bash -x
-
-#
-# Generated - do not edit!
-#
-
-# Macros
-TOP=`pwd`
-CND_PLATFORM=GNU-Linux
-CND_CONF=Debug
-CND_DISTDIR=dist
-CND_BUILDDIR=build
-CND_DLIB_EXT=so
-NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging
-TMPDIRNAME=tmp-packaging
-OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/relpipe-in-fstab.cpp
-OUTPUT_BASENAME=relpipe-in-fstab.cpp
-PACKAGE_TOP_DIR=relpipe-in-fstab.cpp/
-
-# Functions
-function checkReturnCode
-{
-    rc=$?
-    if [ $rc != 0 ]
-    then
-        exit $rc
-    fi
-}
-function makeDirectory
-# $1 directory path
-# $2 permission (optional)
-{
-    mkdir -p "$1"
-    checkReturnCode
-    if [ "$2" != "" ]
-    then
-      chmod $2 "$1"
-      checkReturnCode
-    fi
-}
-function copyFileToTmpDir
-# $1 from-file path
-# $2 to-file path
-# $3 permission
-{
-    cp "$1" "$2"
-    checkReturnCode
-    if [ "$3" != "" ]
-    then
-        chmod $3 "$2"
-        checkReturnCode
-    fi
-}
-
-# Setup
-cd "${TOP}"
-mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package
-rm -rf ${NBTMPDIR}
-mkdir -p ${NBTMPDIR}
-
-# Copy files and create directories and links
-cd "${TOP}"
-makeDirectory "${NBTMPDIR}/relpipe-in-fstab.cpp/bin"
-copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755
-
-
-# Generate tar file
-cd "${TOP}"
-rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/relpipe-in-fstab.cpp.tar
-cd ${NBTMPDIR}
-tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/relpipe-in-fstab.cpp.tar *
-checkReturnCode
-
-# Cleanup
-cd "${TOP}"
-rm -rf ${NBTMPDIR}
--- a/nbproject/Package-Release.bash	Mon Dec 03 16:11:40 2018 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-#!/bin/bash -x
-
-#
-# Generated - do not edit!
-#
-
-# Macros
-TOP=`pwd`
-CND_PLATFORM=GNU-Linux
-CND_CONF=Release
-CND_DISTDIR=dist
-CND_BUILDDIR=build
-CND_DLIB_EXT=so
-NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging
-TMPDIRNAME=tmp-packaging
-OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/relpipe-in-fstab.cpp
-OUTPUT_BASENAME=relpipe-in-fstab.cpp
-PACKAGE_TOP_DIR=relpipe-in-fstab.cpp/
-
-# Functions
-function checkReturnCode
-{
-    rc=$?
-    if [ $rc != 0 ]
-    then
-        exit $rc
-    fi
-}
-function makeDirectory
-# $1 directory path
-# $2 permission (optional)
-{
-    mkdir -p "$1"
-    checkReturnCode
-    if [ "$2" != "" ]
-    then
-      chmod $2 "$1"
-      checkReturnCode
-    fi
-}
-function copyFileToTmpDir
-# $1 from-file path
-# $2 to-file path
-# $3 permission
-{
-    cp "$1" "$2"
-    checkReturnCode
-    if [ "$3" != "" ]
-    then
-        chmod $3 "$2"
-        checkReturnCode
-    fi
-}
-
-# Setup
-cd "${TOP}"
-mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package
-rm -rf ${NBTMPDIR}
-mkdir -p ${NBTMPDIR}
-
-# Copy files and create directories and links
-cd "${TOP}"
-makeDirectory "${NBTMPDIR}/relpipe-in-fstab.cpp/bin"
-copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755
-
-
-# Generate tar file
-cd "${TOP}"
-rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/relpipe-in-fstab.cpp.tar
-cd ${NBTMPDIR}
-tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/relpipe-in-fstab.cpp.tar *
-checkReturnCode
-
-# Cleanup
-cd "${TOP}"
-rm -rf ${NBTMPDIR}
--- a/nbproject/configurations.xml	Mon Dec 03 16:11:40 2018 +0100
+++ b/nbproject/configurations.xml	Sun Dec 09 18:23:25 2018 +0100
@@ -1,82 +1,130 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+Copyright (c) 2014, 2016 Oracle and/or its affiliates. All rights reserved.
+
+Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+Other names may be trademarks of their respective owners.
+
+The contents of this file are subject to the terms of either the GNU
+General Public License Version 2 only ("GPL") or the Common
+Development and Distribution License("CDDL") (collectively, the
+"License"). You may not use this file except in compliance with the
+License. You can obtain a copy of the License at
+http://www.netbeans.org/cddl-gplv2.html
+or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
+specific language governing permissions and limitations under the
+License.  When distributing the software, include this License Header
+Notice in each file and include the License file at
+nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
+particular file as subject to the "Classpath" exception as provided
+by Oracle in the GPL Version 2 section of the License file that
+accompanied this code. If applicable, add the following below the
+License Header, with the fields enclosed by brackets [] replaced by
+your own identifying information:
+"Portions Copyrighted [year] [name of copyright owner]"
+
+If you wish your version of this file to be governed by only the CDDL
+or only the GPL Version 2, indicate your decision by adding
+"[Contributor] elects to include this software in this distribution
+under the [CDDL or GPL Version 2] license." If you do not indicate a
+single choice of license, a recipient has the option to distribute
+your version of this file under either the CDDL, the GPL Version 2 or
+to extend the choice of license to its licensees as provided above.
+However, if you add GPL Version 2 code and therefore, elected the GPL
+Version 2 license, then the option applies only if the new code is
+made subject to such option by the copyright holder.
+
+Contributor(s):
+-->
 <configurationDescriptor version="100">
   <logicalFolder name="root" displayName="root" projectFiles="true" kind="ROOT">
-    <logicalFolder name="HeaderFiles"
-                   displayName="Header Files"
-                   projectFiles="true">
-    </logicalFolder>
-    <logicalFolder name="ResourceFiles"
-                   displayName="Resource Files"
-                   projectFiles="true">
-    </logicalFolder>
-    <logicalFolder name="SourceFiles"
-                   displayName="Source Files"
-                   projectFiles="true">
-      <itemPath>relpipe-in-fstab.cpp</itemPath>
-    </logicalFolder>
-    <logicalFolder name="TestFiles"
-                   displayName="Test Files"
-                   projectFiles="false"
-                   kind="TEST_LOGICAL_FOLDER">
-    </logicalFolder>
+    <df root="." name="0">
+      <df name="src">
+        <in>relpipe-in-fstab.cpp</in>
+      </df>
+    </df>
     <logicalFolder name="ExternalFiles"
                    displayName="Important Files"
                    projectFiles="false"
                    kind="IMPORTANT_FILES_FOLDER">
-      <itemPath>Makefile</itemPath>
+      <itemPath>CMakeLists.txt</itemPath>
+      <itemPath>build/Debug/Makefile</itemPath>
+      <itemPath>build/Release/Makefile</itemPath>
     </logicalFolder>
   </logicalFolder>
-  <projectmakefile>Makefile</projectmakefile>
+  <sourceFolderFilter>^(nbproject|build)$</sourceFolderFilter>
+  <sourceRootList>
+    <Elem>.</Elem>
+  </sourceRootList>
+  <projectmakefile>build/Debug/Makefile</projectmakefile>
   <confs>
-    <conf name="Debug" type="1">
+    <conf name="Debug" type="0">
       <toolsSet>
         <compilerSet>default</compilerSet>
-        <dependencyChecking>true</dependencyChecking>
+        <dependencyChecking>false</dependencyChecking>
         <rebuildPropChanged>false</rebuildPropChanged>
       </toolsSet>
-      <compileType>
-        <ccTool>
-          <standard>11</standard>
-          <commandLine>-fsanitize=address</commandLine>
+      <flagsDictionary>
+        <element flagsID="0" commonFlags="-fsanitize=address"/>
+      </flagsDictionary>
+      <codeAssistance>
+      </codeAssistance>
+      <makefileType>
+        <makeTool>
+          <buildCommandWorkingDir>build/Debug</buildCommandWorkingDir>
+          <buildCommand>${MAKE} -f Makefile</buildCommand>
+          <cleanCommand>${MAKE} -f Makefile clean</cleanCommand>
+          <executablePath>build/Debug/src/relpipe-in-fstab</executablePath>
+          <ccTool>
+            <incDir>
+              <pElem>../relpipe-lib-writer.cpp/include</pElem>
+              <pElem>../relpipe-lib-cli.cpp/include</pElem>
+              <pElem>build/Debug/src</pElem>
+            </incDir>
+          </ccTool>
+        </makeTool>
+        <preBuild>
+          <preBuildCommandWorkingDir>build/Debug</preBuildCommandWorkingDir>
+          <preBuildCommand>${CMAKE} -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=${IDE_CC} -DCMAKE_CXX_COMPILER=${IDE_CXX} -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ../..</preBuildCommand>
+          <preBuildFirst>true</preBuildFirst>
+        </preBuild>
+      </makefileType>
+      <item path="src/relpipe-in-fstab.cpp" ex="false" tool="1" flavor2="0">
+        <ccTool flags="0">
         </ccTool>
-        <linkerTool>
-          <linkerLibItems>
-            <linkerOptionItem>`pkg-config --libs relpipe-lib-writer.cpp`</linkerOptionItem>
-            <linkerOptionItem>`pkg-config --libs relpipe-lib-cli.cpp`</linkerOptionItem>
-          </linkerLibItems>
-        </linkerTool>
-      </compileType>
-      <item path="relpipe-in-fstab.cpp" ex="false" tool="1" flavor2="0">
       </item>
     </conf>
-    <conf name="Release" type="1">
+    <conf name="Release" type="0">
       <toolsSet>
         <compilerSet>default</compilerSet>
-        <dependencyChecking>true</dependencyChecking>
+        <dependencyChecking>false</dependencyChecking>
         <rebuildPropChanged>false</rebuildPropChanged>
       </toolsSet>
-      <compileType>
-        <cTool>
-          <developmentMode>5</developmentMode>
-        </cTool>
-        <ccTool>
-          <developmentMode>5</developmentMode>
-        </ccTool>
-        <fortranCompilerTool>
-          <developmentMode>5</developmentMode>
-        </fortranCompilerTool>
-        <asmTool>
-          <developmentMode>5</developmentMode>
-        </asmTool>
-        <linkerTool>
-          <linkerLibItems>
-            <linkerOptionItem>`pkg-config --libs relpipe-lib-writer.cpp`</linkerOptionItem>
-            <linkerOptionItem>`pkg-config --libs relpipe-lib-cli.cpp`</linkerOptionItem>
-          </linkerLibItems>
-        </linkerTool>
-      </compileType>
-      <item path="relpipe-in-fstab.cpp" ex="false" tool="1" flavor2="0">
-      </item>
+      <codeAssistance>
+      </codeAssistance>
+      <makefileType>
+        <makeTool>
+          <buildCommandWorkingDir>build/Release</buildCommandWorkingDir>
+          <buildCommand>${MAKE} -f Makefile</buildCommand>
+          <cleanCommand>${MAKE} -f Makefile clean</cleanCommand>
+          <executablePath>build/Release/src/welcome</executablePath>
+          <ccTool>
+            <incDir>
+              <pElem>src</pElem>
+            </incDir>
+            <preprocessorList>
+              <Elem>NDEBUG</Elem>
+            </preprocessorList>
+          </ccTool>
+        </makeTool>
+        <preBuild>
+          <preBuildCommandWorkingDir>build/Release</preBuildCommandWorkingDir>
+          <preBuildCommand>${CMAKE} -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=${IDE_CC} -DCMAKE_CXX_COMPILER=${IDE_CXX} -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ../..</preBuildCommand>
+          <preBuildFirst>true</preBuildFirst>
+        </preBuild>
+      </makefileType>
     </conf>
   </confs>
 </configurationDescriptor>
--- a/nbproject/project.xml	Mon Dec 03 16:11:40 2018 +0100
+++ b/nbproject/project.xml	Sun Dec 09 18:23:25 2018 +0100
@@ -9,15 +9,17 @@
             <header-extensions/>
             <sourceEncoding>UTF-8</sourceEncoding>
             <make-dep-projects/>
-            <sourceRootList/>
+            <sourceRootList>
+                <sourceRootElem>.</sourceRootElem>
+            </sourceRootList>
             <confList>
                 <confElem>
                     <name>Debug</name>
-                    <type>1</type>
+                    <type>0</type>
                 </confElem>
                 <confElem>
                     <name>Release</name>
-                    <type>1</type>
+                    <type>0</type>
                 </confElem>
             </confList>
             <formatting>
--- a/relpipe-in-fstab.cpp	Mon Dec 03 16:11:40 2018 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,125 +0,0 @@
-/**
- * Relational pipes
- * Copyright © 2018 František Kučera (Frantovo.cz, GlobalCode.info)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#include <cstdlib>
-#include <fstream>
-#include <memory>
-#include <regex>
-#include <algorithm>
-#include <unistd.h>
-
-#include <relpipe/writer/RelationalWriter.h>
-#include <relpipe/writer/RelpipeWriterException.h>
-#include <relpipe/writer/Factory.h>
-#include <relpipe/writer/TypeId.h>
-
-#include <relpipe/cli/CLI.h>
-
-using namespace relpipe::cli;
-using namespace relpipe::writer;
-
-/**
- * see https://hg.frantovo.cz/sql-api/file/tip/prototyp/prototyp.sql#l49
- */
-void processDataStream(ostream &output, istream* input) {
-	wregex devicePattern = wregex(L"(LABEL|UUID)=(.*)");
-	wregex linePattern = wregex(L"^([^\\s#]+)\\s+([^\\s]+)\\s+([^\\s]+)\\s+([^\\s]+)\\s+(\\d+)\\s+(\\d+)\\s*$");
-	wstring_convert < codecvt_utf8<wchar_t>> convertor; // TODO: support also other encodings.
-
-	std::shared_ptr<RelationalWriter> writer(Factory::create(output));
-
-	writer->startRelation(L"fstab",{
-		{L"scheme", TypeId::STRING},
-		{L"device", TypeId::STRING},
-		{L"mount_point", TypeId::STRING},
-		{L"type", TypeId::STRING},
-		// {L"types", TypeId::STRING}, // TODO: array
-		{L"options", TypeId::STRING}, // TODO: array
-		{L"dump", TypeId::INTEGER},
-		{L"pass", TypeId::INTEGER}
-	}, true);
-
-	string lineBytes;
-	while (getline(*input, lineBytes)) {
-
-		wstring line = convertor.from_bytes(lineBytes);
-		wsmatch lineMatch;
-		if (regex_search(line, lineMatch, linePattern) && lineMatch.size() > 0) {
-			int g = 1;
-			wstring device = lineMatch[g++];
-			wstring mountPoint = lineMatch[g++];
-			wstring type = lineMatch[g++];
-			wstring options = lineMatch[g++];
-			wstring dump = lineMatch[g++];
-			wstring pass = lineMatch[g++];
-
-			wsmatch deviceMatch;
-			if (regex_search(device, deviceMatch, devicePattern)) {
-				writer->writeAttribute(deviceMatch[1]);
-				writer->writeAttribute(deviceMatch[2]);
-			} else {
-				writer->writeAttribute(L""); // TODO: null (requires bitmap)
-				writer->writeAttribute(device);
-			}
-
-			if (mountPoint == L"none") mountPoint = L""; // TODO: null (requires bitmap)
-			writer->writeAttribute(mountPoint);
-			writer->writeAttribute(type);
-			writer->writeAttribute(options);
-			writer->writeAttribute(dump);
-			writer->writeAttribute(pass);
-		}
-	}
-
-}
-
-int main(int argc, char** argv) {
-	setlocale(LC_ALL, "");
-	CLI::untieStdIO();
-	//CLI cli(argc, argv);
-
-	int resultCode = CLI::EXIT_CODE_UNEXPECTED_ERROR;
-
-	try {
-		if (isatty(fileno(stdin))) {
-			/**
-			 * Our program is executed on TTY without input stream redirection → read from default file location.
-			 * e.g. $ relpipe-in-fstab | …
-			 * (we don't expect that user is writing the content of fstab by hand on the terminal)
-			 */
-			ifstream s("/etc/fstab");
-			processDataStream(cout, &s);
-		} else {
-			/**
-			 * Input stream comes from a file or is piped from other command → read it instead of default file.
-			 * e.g. $ cat /etc/fstab | grep '/mnt/' | relpipe-in-fstab | …
-			 * or $ relpipe-in-fstab < /etc/fstab | … # without UUoC
-			 * or $ ssh example.com cat /etc/fstab | relpipe-in-fstab | …
-			 * or $ cat | relpipe-in-fstab | … # user writes the fstab content by hand
-			 */
-			processDataStream(cout, &cin);
-		}
-		resultCode = CLI::EXIT_CODE_SUCCESS;
-
-	} catch (RelpipeWriterException e) {
-		fwprintf(stderr, L"Caught Writer exception: %ls\n", e.getMessge().c_str());
-		fwprintf(stderr, L"Debug: Input stream: eof=%ls, lastRead=%d\n", (cin.eof() ? L"true" : L"false"), cin.gcount());
-		resultCode = CLI::EXIT_CODE_DATA_ERROR;
-	}
-
-	return resultCode;
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/CMakeLists.txt	Sun Dec 09 18:23:25 2018 +0100
@@ -0,0 +1,37 @@
+# Relational pipes
+# Copyright © 2018 František Kučera (Frantovo.cz, GlobalCode.info)
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+set(EXECUTABLE_FILE "relpipe-in-fstab")
+
+# Relpipe libraries:
+INCLUDE(FindPkgConfig)
+pkg_check_modules (RELPIPE_LIBS relpipe-lib-writer.cpp relpipe-lib-cli.cpp)
+include_directories(${RELPIPE_LIBS_INCLUDE_DIRS})
+link_directories(${RELPIPE_LIBS_LIBRARY_DIRS})
+
+# Add ASan AddressSanitizer
+set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=address")
+set(CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=address")
+# From ASan wiki: "To get nicer stack traces in error messages add -fno-omit-frame-pointer."
+
+# Executable output:
+add_executable(
+	${EXECUTABLE_FILE}
+	relpipe-in-fstab.cpp
+)
+
+# Link libraries:
+target_link_libraries(${EXECUTABLE_FILE} ${RELPIPE_LIBS_LIBRARIES})
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/relpipe-in-fstab.cpp	Sun Dec 09 18:23:25 2018 +0100
@@ -0,0 +1,125 @@
+/**
+ * Relational pipes
+ * Copyright © 2018 František Kučera (Frantovo.cz, GlobalCode.info)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include <cstdlib>
+#include <fstream>
+#include <memory>
+#include <regex>
+#include <algorithm>
+#include <unistd.h>
+
+#include <relpipe/writer/RelationalWriter.h>
+#include <relpipe/writer/RelpipeWriterException.h>
+#include <relpipe/writer/Factory.h>
+#include <relpipe/writer/TypeId.h>
+
+#include <relpipe/cli/CLI.h>
+
+using namespace relpipe::cli;
+using namespace relpipe::writer;
+
+/**
+ * see https://hg.frantovo.cz/sql-api/file/tip/prototyp/prototyp.sql#l49
+ */
+void processDataStream(ostream &output, istream* input) {
+	wregex devicePattern = wregex(L"(LABEL|UUID)=(.*)");
+	wregex linePattern = wregex(L"^([^\\s#]+)\\s+([^\\s]+)\\s+([^\\s]+)\\s+([^\\s]+)\\s+(\\d+)\\s+(\\d+)\\s*$");
+	wstring_convert < codecvt_utf8<wchar_t>> convertor; // TODO: support also other encodings.
+
+	std::shared_ptr<RelationalWriter> writer(Factory::create(output));
+
+	writer->startRelation(L"fstab",{
+		{L"scheme", TypeId::STRING},
+		{L"device", TypeId::STRING},
+		{L"mount_point", TypeId::STRING},
+		{L"type", TypeId::STRING},
+		// {L"types", TypeId::STRING}, // TODO: array
+		{L"options", TypeId::STRING}, // TODO: array
+		{L"dump", TypeId::INTEGER},
+		{L"pass", TypeId::INTEGER}
+	}, true);
+
+	string lineBytes;
+	while (getline(*input, lineBytes)) {
+
+		wstring line = convertor.from_bytes(lineBytes);
+		wsmatch lineMatch;
+		if (regex_search(line, lineMatch, linePattern) && lineMatch.size() > 0) {
+			int g = 1;
+			wstring device = lineMatch[g++];
+			wstring mountPoint = lineMatch[g++];
+			wstring type = lineMatch[g++];
+			wstring options = lineMatch[g++];
+			wstring dump = lineMatch[g++];
+			wstring pass = lineMatch[g++];
+
+			wsmatch deviceMatch;
+			if (regex_search(device, deviceMatch, devicePattern)) {
+				writer->writeAttribute(deviceMatch[1]);
+				writer->writeAttribute(deviceMatch[2]);
+			} else {
+				writer->writeAttribute(L""); // TODO: null (requires bitmap)
+				writer->writeAttribute(device);
+			}
+
+			if (mountPoint == L"none") mountPoint = L""; // TODO: null (requires bitmap)
+			writer->writeAttribute(mountPoint);
+			writer->writeAttribute(type);
+			writer->writeAttribute(options);
+			writer->writeAttribute(dump);
+			writer->writeAttribute(pass);
+		}
+	}
+
+}
+
+int main(int argc, char** argv) {
+	setlocale(LC_ALL, "");
+	CLI::untieStdIO();
+	//CLI cli(argc, argv);
+
+	int resultCode = CLI::EXIT_CODE_UNEXPECTED_ERROR;
+
+	try {
+		if (isatty(fileno(stdin))) {
+			/**
+			 * Our program is executed on TTY without input stream redirection → read from default file location.
+			 * e.g. $ relpipe-in-fstab | …
+			 * (we don't expect that user is writing the content of fstab by hand on the terminal)
+			 */
+			ifstream s("/etc/fstab");
+			processDataStream(cout, &s);
+		} else {
+			/**
+			 * Input stream comes from a file or is piped from other command → read it instead of default file.
+			 * e.g. $ cat /etc/fstab | grep '/mnt/' | relpipe-in-fstab | …
+			 * or $ relpipe-in-fstab < /etc/fstab | … # without UUoC
+			 * or $ ssh example.com cat /etc/fstab | relpipe-in-fstab | …
+			 * or $ cat | relpipe-in-fstab | … # user writes the fstab content by hand
+			 */
+			processDataStream(cout, &cin);
+		}
+		resultCode = CLI::EXIT_CODE_SUCCESS;
+
+	} catch (RelpipeWriterException e) {
+		fwprintf(stderr, L"Caught Writer exception: %ls\n", e.getMessge().c_str());
+		fwprintf(stderr, L"Debug: Input stream: eof=%ls, lastRead=%d\n", (cin.eof() ? L"true" : L"false"), cin.gcount());
+		resultCode = CLI::EXIT_CODE_DATA_ERROR;
+	}
+
+	return resultCode;
+}