From b2cc25e9258e5e2114f34723afe90f139174d014 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benedikt=20B=C3=B6hm?= Date: Sun, 19 Sep 2010 18:26:42 +0200 Subject: [PATCH] add autoconf stuff from corec --- Makefile.am | 79 +++++++++++++++++++++++++++++++++++++++++++ configure.ac | 46 +++++++++++++++++++++++++ libraw.pc.in | 11 ++++++ libraw_r.pc.in | 11 ++++++ m4/ax_openmp.m4 | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 246 insertions(+), 0 deletions(-) create mode 100644 Makefile.am create mode 100644 configure.ac create mode 100644 libraw.pc.in create mode 100644 libraw_r.pc.in create mode 100644 m4/ax_openmp.m4 diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..5d4db98 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,79 @@ +# autoconf macros +ACLOCAL_AMFLAGS = -I m4 + +# Headers +nobase_include_HEADERS = libraw/libraw.h \ + libraw/libraw_alloc.h \ + libraw/libraw_const.h \ + libraw/libraw_datastream.h \ + libraw/libraw_internal.h \ + libraw/libraw_types.h \ + libraw/libraw_version.h + +# Docs +doc_DATA = COPYRIGHT \ + LICENSE.CDDL \ + LICENSE.LGPL \ + LICENSE.LibRaw.pdf \ + Changelog.txt + +# pkg-config .pc files +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = libraw.pc libraw_r.pc + +# Libraries +lib_LIBRARIES = libraw.a libraw_r.a + +libraw_a_CPPFLAGS = -DLIBRAW_NOTHREADS +libraw_a_SOURCES = internal/dcraw_common.cpp \ + internal/dcraw_fileio.cpp \ + src/libraw_cxx.cpp \ + src/libraw_c_api.cpp + +libraw_r_a_CXXFLAGS = -pthread +libraw_r_a_SOURCES = $(libraw_a_SOURCES) + + +# Sample binaries +if EXAMPLES +bin_PROGRAMS = raw-identify \ + unprocessed_raw \ + 4channels \ + simple_dcraw \ + mem_image \ + dcraw_half \ + half_mt \ + dcraw_emu +endif + +raw_identify_SOURCES = samples/raw-identify.cpp +raw_identify_CPPFLAGS = $(libraw_a_CPPFLAGS) +raw_identify_LDADD = libraw.a -lm -lraw $(LCMS_LIBS) + +unprocessed_raw_SOURCES = samples/unprocessed_raw.cpp +unprocessed_raw_CPPFLAGS = $(libraw_a_CPPFLAGS) +unprocessed_raw_LDADD = libraw.a -lm -lraw $(LCMS_LIBS) + +4channels_SOURCES = samples/4channels.cpp +4channels_CPPFLAGS = $(libraw_a_CPPFLAGS) +4channels_LDADD = libraw.a -lm -lraw $(LCMS_LIBS) + +simple_dcraw_SOURCES = samples/simple_dcraw.cpp +simple_dcraw_CPPFLAGS = $(libraw_a_CPPFLAGS) +simple_dcraw_LDADD = libraw.a -lm -lraw $(LCMS_LIBS) + +mem_image_SOURCES = samples/mem_image.cpp +mem_image_CPPFLAGS = $(libraw_a_CPPFLAGS) +mem_image_LDADD = libraw.a -lm -lraw $(LCMS_LIBS) + +dcraw_half_SOURCES = samples/dcraw_half.c +dcraw_half_CPPFLAGS = $(libraw_a_CPPFLAGS) +dcraw_half_LDADD = libraw.a -lm -lraw -lstdc++ $(LCMS_LIBS) + +half_mt_SOURCES = samples/half_mt.c +half_mt_CFLAGS = $(libraw_r_a_CXXFLAGS) +half_mt_LDADD = libraw_r.a -lm -lraw_r -lstdc++ $(LCMS_LIBS) + +dcraw_emu_SOURCES = samples/dcraw_emu.cpp +dcraw_emu_CPPFLAGS = $(libraw_a_CPPFLAGS) +dcraw_emu_LDADD = libraw.a -lm -lraw $(LCMS_LIBS) diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..ba4ce0e --- /dev/null +++ b/configure.ac @@ -0,0 +1,46 @@ +# Initialization +AC_INIT([LibRaw], [@@VERSION@@], [info@libraw.org], [], [http://www.libraw.org]) +AM_INIT_AUTOMAKE([foreign no-define]) +AM_SILENT_RULES([yes]) + +# Tools to use +AC_PROG_CXX +AC_PROG_CC +AC_PROG_RANLIB + +# Config files to generate +AC_CONFIG_FILES([ + Makefile + libraw.pc + libraw_r.pc +]) + +# check if we want OpenMP support +AC_ARG_ENABLE([openmp], [AS_HELP_STRING([--disable-openmp], [Enable OpenMP support (default: yes)])]) + +if test x$enable_openmp != xno ; then + AX_OPENMP([ + CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS" + CFLAGS="$CFLAGS $OPENMP_CFLAGS" + AC_SUBST([PC_OPENMP],[" $OPENMP_CFLAGS"]) + ],[ + AC_MSG_ERROR([OpenMP support cannot be enabled because your system does not support it.]) + ]) +fi + +# check if we want LCMS support +AC_ARG_ENABLE([lcms], [AS_HELP_STRING([--disable-lcms], [Enable LCMS support (default: yes)])]) + +if test x$enable_lcms != xno ; then + PKG_CHECK_MODULES([LCMS], [lcms], [ + CPPFLAGS="$CPPFLAGS -DUSE_LCMS" + ],[ + AC_MSG_ERROR([LCMS support cannot be enabled because: '$LCMS_PKG_ERRORS']) + ]) +fi + +# check if we want build examples +AC_ARG_ENABLE([examples], [AS_HELP_STRING([--enable-examples], [Enable building of examples (default: no)])]) +AM_CONDITIONAL([EXAMPLES], [test x$enable_examples = xyes]) + +AC_OUTPUT diff --git a/libraw.pc.in b/libraw.pc.in new file mode 100644 index 0000000..dafe9b6 --- /dev/null +++ b/libraw.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: @PACKAGE_NAME@ +Description: Raw image decoder library (non-thread-safe) +Requires: lcms +Version: @PACKAGE_VERSION@ +Libs: -L${libdir} -lraw -lstdc++ @LCMS_LIBS@ +Cflags: -I${includedir}/libraw@PC_OPENMP@ diff --git a/libraw_r.pc.in b/libraw_r.pc.in new file mode 100644 index 0000000..0cc1585 --- /dev/null +++ b/libraw_r.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: @PACKAGE_NAME@ +Description: Raw image decoder library (thread-safe) +Requires: lcms +Version: @PACKAGE_VERSION@ +Libs: -L${libdir} -lraw_r -lstdc++ @LCMS_LIBS@ +Cflags: -I${includedir}/libraw@PC_OPENMP@ diff --git a/m4/ax_openmp.m4 b/m4/ax_openmp.m4 new file mode 100644 index 0000000..7ea794b --- /dev/null +++ b/m4/ax_openmp.m4 @@ -0,0 +1,99 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_openmp.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_OPENMP([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) +# +# DESCRIPTION +# +# This macro tries to find out how to compile programs that use OpenMP a +# standard API and set of compiler directives for parallel programming +# (see http://www-unix.mcs/) +# +# On success, it sets the OPENMP_CFLAGS/OPENMP_CXXFLAGS/OPENMP_F77FLAGS +# output variable to the flag (e.g. -omp) used both to compile *and* link +# OpenMP programs in the current language. +# +# NOTE: You are assumed to not only compile your program with these flags, +# but also link it with them as well. +# +# If you want to compile everything with OpenMP, you should set: +# +# CFLAGS="$CFLAGS $OPENMP_CFLAGS" +# #OR# CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS" +# #OR# FFLAGS="$FFLAGS $OPENMP_FFLAGS" +# +# (depending on the selected language). +# +# The user can override the default choice by setting the corresponding +# environment variable (e.g. OPENMP_CFLAGS). +# +# ACTION-IF-FOUND is a list of shell commands to run if an OpenMP flag is +# found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it is +# not found. If ACTION-IF-FOUND is not specified, the default action will +# define HAVE_OPENMP. +# +# LICENSE +# +# Copyright (c) 2008 Steven G. Johnson +# +# 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 . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 8 + +AC_DEFUN([AX_OPENMP], [ +AC_PREREQ(2.59) dnl for _AC_LANG_PREFIX + +AC_CACHE_CHECK([for OpenMP flag of _AC_LANG compiler], ax_cv_[]_AC_LANG_ABBREV[]_openmp, [save[]_AC_LANG_PREFIX[]FLAGS=$[]_AC_LANG_PREFIX[]FLAGS +ax_cv_[]_AC_LANG_ABBREV[]_openmp=unknown +# Flags to try: -fopenmp (gcc), -openmp (icc), -mp (SGI & PGI), +# -xopenmp (Sun), -omp (Tru64), -qsmp=omp (AIX), none +ax_openmp_flags="-fopenmp -openmp -mp -xopenmp -omp -qsmp=omp none" +if test "x$OPENMP_[]_AC_LANG_PREFIX[]FLAGS" != x; then + ax_openmp_flags="$OPENMP_[]_AC_LANG_PREFIX[]FLAGS $ax_openmp_flags" +fi +for ax_openmp_flag in $ax_openmp_flags; do + case $ax_openmp_flag in + none) []_AC_LANG_PREFIX[]FLAGS=$save[]_AC_LANG_PREFIX[] ;; + *) []_AC_LANG_PREFIX[]FLAGS="$save[]_AC_LANG_PREFIX[]FLAGS $ax_openmp_flag" ;; + esac + AC_TRY_LINK_FUNC(omp_set_num_threads, + [ax_cv_[]_AC_LANG_ABBREV[]_openmp=$ax_openmp_flag; break]) +done +[]_AC_LANG_PREFIX[]FLAGS=$save[]_AC_LANG_PREFIX[]FLAGS +]) +if test "x$ax_cv_[]_AC_LANG_ABBREV[]_openmp" = "xunknown"; then + m4_default([$2],:) +else + if test "x$ax_cv_[]_AC_LANG_ABBREV[]_openmp" != "xnone"; then + OPENMP_[]_AC_LANG_PREFIX[]FLAGS=$ax_cv_[]_AC_LANG_ABBREV[]_openmp + fi + m4_default([$1], [AC_DEFINE(HAVE_OPENMP,1,[Define if OpenMP is enabled])]) +fi +])dnl AX_OPENMP -- 1.7.2.3