From: Steinar H. Gunderson Date: Sun, 3 Feb 2013 12:25:32 +0000 (+0100) Subject: Switch to autoconf to find libraries. X-Git-Tag: 1.0~133 X-Git-Url: https://git.sesse.net/?p=movit;a=commitdiff_plain;h=f40669de9c7e05e009e67e51a1a60773ac7e5156 Switch to autoconf to find libraries. 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. --- diff --git a/.gitignore b/.gitignore index a80bde9..35695ac 100644 --- a/.gitignore +++ b/.gitignore @@ -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 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 index 0000000..ce216f5 --- /dev/null +++ b/Makefile.in @@ -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 index 0000000..0f10881 --- /dev/null +++ b/autogen.sh @@ -0,0 +1,5 @@ +#! /bin/sh +aclocal +autoheader +autoconf +./configure "$@" diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..5a8afa7 --- /dev/null +++ b/configure.ac @@ -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