Switch to autoconf to find libraries.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 3 Feb 2013 12:25:32 +0000 (13:25 +0100)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 3 Feb 2013 12:25:32 +0000 (13:25 +0100)
Also, make a rudimentary make install command.

We don't use anything fancy from autoconf yet (in particular,
no config.h file), and we don't use automake or libtool.
Most likely, this will happen later.

.gitignore
Makefile [deleted file]
Makefile.in [new file with mode: 0644]
autogen.sh [new file with mode: 0755]
configure.ac [new file with mode: 0644]

index a80bde9..35695ac 100644 (file)
@@ -32,3 +32,10 @@ ycbcr_input_test
 chain-*.frag
 movit.info
 coverage/
+aclocal.m4
+autogen.sh
+autom4te.cache/
+config.h.in
+config.log
+config.status
+configure
diff --git a/Makefile b/Makefile
deleted file mode 100644 (file)
index 02d1980..0000000
--- a/Makefile
+++ /dev/null
@@ -1,148 +0,0 @@
-GTEST_DIR ?= /usr/src/gtest
-
-EIGEN_CXXFLAGS := $(shell pkg-config --cflags eigen3)
-ifeq ($(EIGEN_CXXFLAGS),)
-$(error Empty EIGEN_CXXFLAGS. You probably need to install Eigen3)
-endif
-
-GLEW_CXXFLAGS := $(shell pkg-config --cflags glew)
-ifeq ($(GLEW_CXXFLAGS),)
-$(error Empty GLEW_CXXFLAGS. You probably need to install GLEW)
-endif
-
-GLEW_LIBS := $(shell pkg-config --libs glew)
-ifeq ($(GLEW_LIBS),)
-$(error Empty GLEW_LIBS. You probably need to install GLEW)
-endif
-
-SDL_CXXFLAGS := $(shell sdl-config --cflags)
-ifeq ($(SDL_CXXFLAGS),)
-$(error Empty SDL_CXXFLAGS. You probably need to install SDL)
-endif
-
-SDL_LIBS := $(shell sdl-config --libs)
-ifeq ($(SDL_LIBS),)
-$(error Empty SDL_LIBS. You probably need to install SDL)
-endif
-
-CC=gcc
-CXX=g++
-CXXFLAGS=-Wall -g -I$(GTEST_DIR)/include $(EIGEN_CXXFLAGS) $(GLEW_CXXFLAGS)
-LDFLAGS=$(GLEW_LIBS) $(SDL_LIBS)
-DEMO_LDFLAGS=-lSDL_image -lrt -lpthread -lpng
-RANLIB=ranlib
-
-ifeq ($(COVERAGE),1)
-CXXFLAGS += -fprofile-arcs -ftest-coverage
-LDFLAGS += -fprofile-arcs -ftest-coverage
-endif
-
-DEMO_OBJS=demo.o
-
-# Unit tests.
-TESTS=effect_chain_test
-TESTS += mix_effect_test
-TESTS += overlay_effect_test
-TESTS += gamma_expansion_effect_test
-TESTS += gamma_compression_effect_test
-TESTS += colorspace_conversion_effect_test
-TESTS += alpha_multiplication_effect_test
-TESTS += alpha_division_effect_test
-TESTS += saturation_effect_test
-TESTS += deconvolution_sharpen_effect_test
-TESTS += blur_effect_test
-TESTS += unsharp_mask_effect_test
-TESTS += glow_effect_test
-TESTS += diffusion_effect_test
-TESTS += white_balance_effect_test
-TESTS += lift_gamma_gain_effect_test
-TESTS += resample_effect_test
-TESTS += padding_effect_test
-TESTS += dither_effect_test
-TESTS += flat_input_test
-TESTS += ycbcr_input_test
-
-# Core.
-LIB_OBJS=effect_util.o util.o widgets.o effect.o effect_chain.o init.o
-
-# Inputs.
-LIB_OBJS += flat_input.o
-LIB_OBJS += ycbcr_input.o
-
-# Effects.
-LIB_OBJS += lift_gamma_gain_effect.o
-LIB_OBJS += white_balance_effect.o
-LIB_OBJS += gamma_expansion_effect.o
-LIB_OBJS += gamma_compression_effect.o
-LIB_OBJS += colorspace_conversion_effect.o
-LIB_OBJS += alpha_multiplication_effect.o
-LIB_OBJS += alpha_division_effect.o
-LIB_OBJS += saturation_effect.o
-LIB_OBJS += vignette_effect.o
-LIB_OBJS += mirror_effect.o
-LIB_OBJS += blur_effect.o
-LIB_OBJS += diffusion_effect.o
-LIB_OBJS += glow_effect.o
-LIB_OBJS += unsharp_mask_effect.o
-LIB_OBJS += mix_effect.o
-LIB_OBJS += overlay_effect.o
-LIB_OBJS += resize_effect.o
-LIB_OBJS += padding_effect.o
-LIB_OBJS += resample_effect.o
-LIB_OBJS += dither_effect.o
-LIB_OBJS += deconvolution_sharpen_effect.o
-LIB_OBJS += sandbox_effect.o
-
-# Default target:
-all: $(TESTS) demo
-
-# Google Test and other test library functions.
-TEST_OBJS = gtest-all.o gtest_sdl_main.o test_util.o
-
-gtest-all.o: $(GTEST_DIR)/src/gtest-all.cc
-       $(CXX) -MMD $(CPPFLAGS) -I$(GTEST_DIR) $(CXXFLAGS) -c $< -o $@
-gtest_sdl_main.o: gtest_sdl_main.cpp
-       $(CXX) -MMD $(CPPFLAGS) -I$(GTEST_DIR) $(CXXFLAGS) -c $< -o $@
-
-# Unit tests.
-$(TESTS): %: %.o $(TEST_OBJS) libmovit.a
-       $(CXX) -o $@ $^ $(LDFLAGS)
-
-OBJS=$(DEMO_OBJS) $(LIB_OBJS) $(TEST_OBJS) $(TESTS:=.o)
-
-# A small demo program.
-demo: libmovit.a $(DEMO_OBJS)
-       $(CXX) -o demo $(DEMO_OBJS) libmovit.a $(LDFLAGS) $(DEMO_LDFLAGS)
-
-# The library itself.
-libmovit.a: $(LIB_OBJS)
-       $(AR) rc $@ $(LIB_OBJS)
-       $(RANLIB) $@
-
-%.o: %.cpp
-       $(CXX) -MMD -MP $(CPPFLAGS) $(CXXFLAGS) -o $@ -c $<
-
-DEPS=$(OBJS:.o=.d)
--include $(DEPS)
-
-clean:
-       $(RM) demo $(TESTS) libmovit.a $(OBJS) $(OBJS:.o=.gcno) $(OBJS:.o=.gcda) $(DEPS) step-*.dot
-       $(RM) -r movit.info coverage/
-
-check: $(TESTS)
-       FAILED_TESTS=""; \
-       for TEST in $(TESTS); do \
-           ./$$TEST || FAILED_TESTS="$$TEST $$FAILED_TESTS"; \
-       done; \
-       if [ "$$FAILED_TESTS" ]; then \
-               echo Failed tests: $$FAILED_TESTS; \
-               exit 1; \
-       fi
-
-# You need to build with COVERAGE=1 to use this target.
-coverage: check
-       lcov -d . -c -o movit.info
-       lcov --remove movit.info '*_test.cpp' '*/test_util.{cpp,h}' -o movit.info
-       genhtml -o coverage movit.info
-
-.PHONY: coverage clean check all
diff --git a/Makefile.in b/Makefile.in
new file mode 100644 (file)
index 0000000..ce216f5
--- /dev/null
@@ -0,0 +1,137 @@
+GTEST_DIR ?= /usr/src/gtest
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+includedir = @includedir@
+libdir = @libdir@
+datarootdir = @datarootdir@
+datadir = @datadir@
+
+CC=gcc
+CXX=g++
+CXXFLAGS=-Wall -g -I$(GTEST_DIR)/include @Eigen3_CFLAGS@ @GLEW_CFLAGS@
+LDFLAGS=@GLEW_LIBS@ @SDL_LIBS@
+DEMO_LDFLAGS=@SDL_image_LIBS@ -lrt -lpthread @libpng_LIBS@
+RANLIB=ranlib
+INSTALL=install
+MKDIR=mkdir
+
+ifeq ($(COVERAGE),1)
+CXXFLAGS += -fprofile-arcs -ftest-coverage
+LDFLAGS += -fprofile-arcs -ftest-coverage
+endif
+
+DEMO_OBJS=demo.o
+
+# Inputs.
+TESTED_INPUTS = flat_input
+TESTED_INPUTS += ycbcr_input
+
+INPUTS = $(TESTED_INPUTS) $(UNTESTED_INPUTS)
+
+# Effects.
+TESTED_EFFECTS = lift_gamma_gain_effect
+TESTED_EFFECTS += white_balance_effect
+TESTED_EFFECTS += gamma_expansion_effect
+TESTED_EFFECTS += gamma_compression_effect
+TESTED_EFFECTS += colorspace_conversion_effect
+TESTED_EFFECTS += alpha_multiplication_effect
+TESTED_EFFECTS += alpha_division_effect
+TESTED_EFFECTS += saturation_effect
+TESTED_EFFECTS += blur_effect
+TESTED_EFFECTS += diffusion_effect
+TESTED_EFFECTS += glow_effect
+TESTED_EFFECTS += unsharp_mask_effect
+TESTED_EFFECTS += mix_effect
+TESTED_EFFECTS += overlay_effect
+TESTED_EFFECTS += padding_effect
+TESTED_EFFECTS += resample_effect
+TESTED_EFFECTS += dither_effect
+TESTED_EFFECTS += deconvolution_sharpen_effect
+
+UNTESTED_EFFECTS = sandbox_effect
+UNTESTED_EFFECTS += mirror_effect
+UNTESTED_EFFECTS += resize_effect
+UNTESTED_EFFECTS += vignette_effect
+
+EFFECTS = $(TESTED_EFFECTS) $(UNTESTED_EFFECTS)
+
+# Unit tests.
+TESTS=effect_chain_test $(TESTED_INPUTS:=_test) $(TESTED_EFFECTS:=_test)
+
+LIB_OBJS=effect_util.o util.o widgets.o effect.o effect_chain.o init.o $(INPUTS:=.o) $(EFFECTS:=.o)
+
+# Default target:
+all: $(TESTS) demo
+
+# Google Test and other test library functions.
+TEST_OBJS = gtest-all.o gtest_sdl_main.o test_util.o
+
+gtest-all.o: $(GTEST_DIR)/src/gtest-all.cc
+       $(CXX) -MMD $(CPPFLAGS) -I$(GTEST_DIR) $(CXXFLAGS) -c $< -o $@
+gtest_sdl_main.o: gtest_sdl_main.cpp
+       $(CXX) -MMD $(CPPFLAGS) -I$(GTEST_DIR) $(CXXFLAGS) -c $< -o $@
+
+# Unit tests.
+$(TESTS): %: %.o $(TEST_OBJS) libmovit.a
+       $(CXX) -o $@ $^ $(LDFLAGS)
+
+OBJS=$(DEMO_OBJS) $(LIB_OBJS) $(TEST_OBJS) $(TESTS:=.o)
+
+# A small demo program.
+demo: libmovit.a $(DEMO_OBJS)
+       $(CXX) -o demo $(DEMO_OBJS) libmovit.a $(LDFLAGS) $(DEMO_LDFLAGS)
+
+# The library itself.
+libmovit.a: $(LIB_OBJS)
+       $(AR) rc $@ $(LIB_OBJS)
+       $(RANLIB) $@
+
+%.o: %.cpp
+       $(CXX) -MMD -MP $(CPPFLAGS) $(CXXFLAGS) -o $@ -c $<
+
+DEPS=$(OBJS:.o=.d)
+-include $(DEPS)
+
+clean:
+       $(RM) demo $(TESTS) libmovit.a $(OBJS) $(OBJS:.o=.gcno) $(OBJS:.o=.gcda) $(DEPS) step-*.dot
+       $(RM) -r movit.info coverage/
+
+check: $(TESTS)
+       FAILED_TESTS=""; \
+       for TEST in $(TESTS); do \
+           ./$$TEST || FAILED_TESTS="$$TEST $$FAILED_TESTS"; \
+       done; \
+       if [ "$$FAILED_TESTS" ]; then \
+               echo Failed tests: $$FAILED_TESTS; \
+               exit 1; \
+       fi
+
+# You need to build with COVERAGE=1 to use this target.
+coverage: check
+       lcov -d . -c -o movit.info
+       lcov --remove movit.info '*_test.cpp' '*/test_util.{cpp,h}' -o movit.info
+       genhtml -o coverage movit.info
+
+HDRS = effect_chain.h effect.h input.h image_format.h init.h util.h
+HDRS += $(INPUTS:=.h)
+HDRS += $(EFFECTS:=.h)
+
+SHADERS = vs.vert header.frag footer.frag
+SHADERS += $(INPUTS:=.frag)
+SHADERS += $(EFFECTS:=.frag)
+SHADERS += highlight_cutoff_effect.frag
+SHADERS += overlay_matte_effect.frag
+
+# These purposefully do not exist.
+MISSING_SHADERS = diffusion_effect.frag glow_effect.frag unsharp_mask_effect.frag resize_effect.frag
+SHADERS := $(filter-out $(MISSING_SHADERS),$(SHADERS))
+
+install: libmovit.a
+       $(INSTALL) -m 0644 libmovit.a $(libdir)/
+       $(MKDIR) -p $(includedir)/movit/
+       $(INSTALL) -m 0644 $(HDRS) $(includedir)/movit/
+       $(MKDIR) -p $(datadir)/movit/
+       $(INSTALL) -m 0644 $(SHADERS) $(datadir)/movit/
+
+.PHONY: coverage clean check all install
diff --git a/autogen.sh b/autogen.sh
new file mode 100755 (executable)
index 0000000..0f10881
--- /dev/null
@@ -0,0 +1,5 @@
+#! /bin/sh
+aclocal
+autoheader
+autoconf
+./configure "$@"
diff --git a/configure.ac b/configure.ac
new file mode 100644 (file)
index 0000000..5a8afa7
--- /dev/null
@@ -0,0 +1,15 @@
+AC_INIT(movit, git)
+
+AC_CONFIG_SRCDIR(effect.cpp)
+
+AC_PROG_CXX
+PKG_CHECK_MODULES([Eigen3], [eigen3])
+PKG_CHECK_MODULES([GLEW], [glew])
+
+# These are only needed for the demo app.
+PKG_CHECK_MODULES([SDL], [sdl])
+PKG_CHECK_MODULES([SDL_image], [SDL_image])
+PKG_CHECK_MODULES([libpng], [libpng12])
+
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT