Switch to autotools.

This commit is contained in:
Kyle Isom 2017-12-18 20:59:29 -08:00
parent a35b54f308
commit 06d3db4370
7 changed files with 61 additions and 94 deletions

View File

@ -1,64 +0,0 @@
SET(MAKE_VERBOSE_MAKEFILE ON)
SET(CMAKE_BUILD_TYPE Debug CACHE STRING "default to debug" FORCE)
set(CXX_EXTENSIONS OFF)
# Basic project setup.
cmake_minimum_required(VERSION 3.5) # Xenial's CMake version.
project(ods)
set (${PROJECT_NAME}_VERSION_MAJOR 0)
set (${PROJECT_NAME}_VERSION_MINOR 1)
# Require clang.
set(CC clang)
set(CXX clang++)
# Set C++ compile flags for all builds.
add_compile_options(-Wall -Wextra -pedantic -Wshadow -Wpointer-arith)
add_compile_options(-Wcast-align -Wwrite-strings -Wmissing-declarations)
add_compile_options(-Werror -Wunused-variable -fno-elide-constructors)
# These might be contentious.
add_compile_options(-Weffc++)
# add_compile_options(-std=c++14)
if(CMAKE_BUILD_TYPE MATCHES DEBUG)
add_compile_options(-O0)
endif()
if (CMAKE_BUILD_TYPE MATCHES RELEASE)
add_compile_options(-O2)
endif()
if(CMAKE_GENERATOR MATCHES "Unix Makefiles")
SET(CMAKE_COLOR_MAKEFILE ON)
SET(CMAKE_VERBOSE_MAKEFILE ON)
endif()
file(GLOB_RECURSE SOURCES src/*.cc src/*.cpp)
file(GLOB_RECURSE HEADERS include/*.h)
file(GLOB HEADIRS include/*) # ha ha ha
include_directories(include test/include)
# Build shared library that can be reloaded while testing.
add_library(${PROJECT_NAME} SHARED ${SOURCES})
# Add static library for inclusion in final builds.
add_library(${PROJECT_NAME}-static STATIC ${SOURCES})
# Require C++14.
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14)
set_property(TARGET ${PROJECT_NAME}-static PROPERTY CXX_STANDARD 14)
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD_REQUIRED ON)
set_property(TARGET ${PROJECT_NAME}-static PROPERTY CXX_STANDARD_REQUIRED ON)
# Set up the library installation target.
install(TARGETS ${PROJECT_NAME} DESTINATION lib/${PROJECT_NAME})
install(TARGETS ${PROJECT_NAME}-static DESTINATION lib/${PROJECT_NAME})
# Install the headers.
install(DIRECTORY ${HEADIRS} DESTINATION include/${PROJECT_NAME})
# include(CMakeTests.txt)
# include(CMakePack.txt)

View File

@ -1,18 +0,0 @@
# build a CPack driven installer package
include(InstallRequiredSystemLibraries)
set(CPACK_RESOURCE_FILE_LICENSE
"${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt")
set(CPACK_PACKAGE_VERSION_MAJOR "${${PROJECT_NAME}_VERSION_MAJOR}")
set(CPACK_PACKAGE_VERSION_MINOR "${${PROJECT_NAME}_VERSION_MINOR}")
# Debian settings
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "K. Isom")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "library of data structures")
set(CPACK_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION})
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc++1 (>= 3.7.0-1)")
# set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
set(CPACK_DEBIAN_PACKAGE_SECTION devel)
# actually do the thing
set(CPACK_GENERATOR DEB)
include (CPack)

View File

@ -1,12 +0,0 @@
# Set up tests.
enable_testing()
# sctest tests
add_executable(simple_suite_example test/test/simple_suite_example.cpp)
target_link_libraries(simple_suite_example ${PROJECT_NAME}-static)
add_test(SimpleSuite_example, simple_suite_example)
# math tests
add_executable(geom2d_test test/math/geom2d_test.cpp)
target_link_libraries(geom2d_test ${PROJECT_NAME}-static)
add_test(geom2d_test geom2d_test)

2
Makefile.am Normal file
View File

@ -0,0 +1,2 @@
ACLOCAL_AMFLAGS = -I m4
SUBDIRS = src

29
autobuild Normal file
View File

@ -0,0 +1,29 @@
#!/bin/sh
set -eux
command -v clang 2>&1 > /dev/null && CXX=clang++
CXX=${CXX:-g++}
CONFOPTS="CXX=$CXX"
SILENT="${SILENT:-yes}"
if [ "${SILENT}" = "yes" ]
then
CONFOPTS="$CONFOPTS --enable-silent-rules"
fi
[ -d m4 ] || mkdir m4
if [ "$(uname -o)" = "Android" ]
then
SRCDIR="$(pwd)"
BUILDDIR=$HOME/build/ods
[ -d "$BUILDDIR" ] && rm -rf $BUILDDIR
mkdir -p $BUILDDIR && cd $BUILDDIR
autoreconf -i $SRCDIR
bash $SRCDIR/configure $CONFOPTS
else
autoreconf -i
./configure $CONFOPTS
fi
pwd
make

23
configure.ac Normal file
View File

@ -0,0 +1,23 @@
# autoconf version 2.68 and automake version 1.11 seem to be the latest
# versions that can be used with Travis right now.
AC_PREREQ([2.68])
AC_INIT([ods],
[0.1.0],
[coder@kyleisom.net],
[ods],
[https://github.com/kisom/ods/])
AM_INIT_AUTOMAKE([1.11 foreign])
AC_CONFIG_SRCDIR([src/ch01ex01.cc])
AC_CONFIG_FILES([Makefile src/Makefile])
AC_CONFIG_MACRO_DIR([m4])
PKG_PROG_PKG_CONFIG
AC_CHECK_HEADERS
LT_INIT
AC_PROG_CXX
AC_PROG_INSTALL
AC_PROG_CC_C_O
AC_OUTPUT

7
src/Makefile.am Normal file
View File

@ -0,0 +1,7 @@
AM_CPPFLAGS = -Wall -Wextra -pedantic -Wshadow -Wpointer-arith -Wcast-align
AM_CPPFLAGS += -Wwrite-strings -Wmissing-declarations -Wno-long-long -Werror
AM_CPPFLAGS += -Wunused-variable -std=c++14 -D_XOPEN_SOURCE -O0 -g -I.
AM_CPPFLAGS += -fno-elide-constructors -Weffc++
bin_PROGRAMS := ch01ex01
ch01ex01_SOURCES := ch01ex01.cc