1# Process this file with autoconf to create configure.
2
3AC_PREREQ([2.65])
4
5# ====================
6# Version informations
7# ====================
8m4_define([libgltf_version_major],[0])
9m4_define([libgltf_version_minor],[0])
10m4_define([libgltf_version_micro],[2])
11m4_define([libgltf_version],[libgltf_version_major.libgltf_version_minor.libgltf_version_micro])
12
13# =============
14# Automake init
15# =============
16AC_INIT([libgltf],[libgltf_version])
17AC_CONFIG_MACRO_DIR([m4])
18AC_CONFIG_HEADERS([config.h])
19AM_INIT_AUTOMAKE([1.11 foreign dist-xz dist-bzip2])
20AM_SILENT_RULES([yes])
21AC_LANG([C++])
22
23# ===========================
24# Find required base packages
25# ===========================
26AC_PROG_CXX
27AC_PROG_CXXCPP
28AC_PROG_INSTALL
29AC_PROG_LN_S
30AC_PROG_MAKE_SET
31LT_INIT([disable-static pic-only])
32PKG_PROG_PKG_CONFIG([0.20])
33
34# =========
35# Find boost
36# =========
37save_CPPFLAGS=$CPPFLAGS
38CPPFLAGS="$CPPFLAGS $BOOST_CFLAGS"
39AC_CHECK_HEADERS(
40 boost/property_tree/ptree.hpp \
41 boost/property_tree/json_parser.hpp \
42 boost/foreach.hpp,
43 [],
44 [AC_MSG_ERROR(Required boost headers not found. Install boost >= 1.41.0)],
45 [])
46CPPFLAGS=$save_CPPFLAGS
47AC_SUBST([BOOST_CFLAGS])
48
49# =========
50# Find glew
51# =========
52save_CPPFLAGS=$CPPFLAGS
53CPPFLAGS="$CPPFLAGS $GLEW_CFLAGS"
54PKG_CHECK_MODULES(GLEW, [glew >= 1.8.0], [] [
55 AC_CHECK_HEADER(GL/glew.h, [],
56 [AC_MSG_ERROR(GL/glew.h not found. install glew)], [])
57])
58CPPFLAGS=$save_CPPFLAGS
59AC_SUBST([GLEW_CFLAGS])
60AC_SUBST([GLEW_LIBS])
61
62# =========
63# Find glm
64# =========
65AC_LANG_PUSH([C++])
66save_CPPFLAGS=$CPPFLAGS
67CPPFLAGS="$CPPFLAGS $GLM_CFLAGS"
68AC_CHECK_HEADERS(
69 glm/glm.hpp \
70 glm/gtc/matrix_inverse.hpp \
71 glm/gtc/matrix_transform.hpp \
72 glm/gtc/quaternion.hpp \
73 glm/gtc/type_ptr.hpp \
74 glm/gtx/quaternion.hpp \
75 glm/gtx/rotate_vector.hpp \
76 glm/gtx/transform.hpp,
77 [],
78 [AC_MSG_ERROR([Required glm headers not found. Install glm >= 0.9.0.0])],
79 [])
80AC_LANG_POP([C++])
81CPPFLAGS=$save_CPPFLAGS
82AC_SUBST([GLM_CFLAGS])
83
84# =============================
85# Check the needed time header
86# =============================
87
88AC_CHECK_HEADERS(
89 sys/time.h,
90 [],
91 [AC_MSG_ERROR([Required sys/time.h not found.])],
92 [])
93
94AC_CHECK_FUNCS(
95 gettimeofday,
96 [],
97 [AC_MSG_ERROR([Required gettimeofday() method is not found.])]
98 )
99
100# =================================
101# Libtool/Version Makefile settings
102# =================================
103AC_SUBST(GLTF_MAJOR_VERSION, [libgltf_version_major])
104AC_SUBST(GLTF_MINOR_VERSION, [libgltf_version_minor])
105AC_SUBST(GLTF_MICRO_VERSION, [libgltf_version_micro])
106AC_SUBST(GLTF_VERSION, [libgltf_version])
107LT_CURRENT=`expr 100 '*' libgltf_version_major + libgltf_version_minor`
108LT_AGE=0
109AC_SUBST(LT_CURRENT)
110AC_SUBST(LT_REVISION, [libgltf_version_micro])
111AC_SUBST(LT_AGE)
112
113
114# ================
115# Check for cflags
116# ================
117AC_ARG_ENABLE([werror],
118 [AS_HELP_STRING([--disable-werror], [Treat all warnings as errors, usefull for development])],
119 [enable_werror="$enableval"],
120 [enable_werror=yes]
121)
122AS_IF([test x"$enable_werror" != "xno"], [
123 LIBGLTF_CXXFLAGS="$LIBGLTF_CXXFLAGS -Werror"
124])
125AS_IF([test x"$GCC" = xyes], [
126# Be tough with warnings and produce less careless code
127 LIBGLTF_CXXFLAGS="$LIBGLTF_CXXFLAGS -Wall -pedantic -Wextra -Weffc++ -Wshadow -Wendif-labels -Wundef -Wunused-macros"
128])
129
130AC_SUBST(LIBGLTF_CXXFLAGS)
131
132# ============
133# Debug switch
134# ============
135AC_ARG_ENABLE([debug],
136 [AS_HELP_STRING([--enable-debug], [Turn on debugging])],
137 [enable_debug="$enableval"],
138 [enable_debug=no]
139)
140AS_IF([test "x$enable_debug" = "xyes"], [
141 DEBUG_CXXFLAGS="-DDEBUG -g"
142], [
143 DEBUG_CXXFLAGS="-DNDEBUG"
144])
145
146AC_SUBST(DEBUG_CXXFLAGS)
147
148# ==========
149# Unit tests
150# ==========
151if test "$host_os" = "linux-gnu"; then
152
153AC_ARG_ENABLE([tests],
154 [AS_HELP_STRING([--enable-tests], [Build and run unit tests])],
155 [enable_tests="$enableval"],
156 [enable_tests=no]
157)
158AS_IF([test "x$enable_tests" = "xyes"], [
159 PKG_CHECK_MODULES([CPPUNIT], [cppunit])
160], [])
161AC_SUBST([CPPUNIT_CFLAGS])
162AC_SUBST([CPPUNIT_LIBS])
163
164AS_IF([test "x$enable_tests" = "xyes"], [
165 PKG_CHECK_MODULES([X11], [x11])
166], [])
167AC_SUBST([X11_CFLAGS])
168AC_SUBST([X11_LIBS])
169
170AS_IF([test "x$enable_tests" = "xyes"], [
171 PKG_CHECK_MODULES([GL], [gl])
172], [])
173AC_SUBST([GL_CFLAGS])
174AC_SUBST([GL_LIBS])
175
176AS_IF([test "x$enable_tests" = "xyes"], [
177 PKG_CHECK_MODULES([LIBPNG], [libpng])
178], [])
179AC_SUBST([LIBPNG_CFLAGS])
180AC_SUBST([LIBPNG_LIBS])
181
182fi
183
184AM_CONDITIONAL(TESTS, [test "x$enable_tests" = "xyes"])
185
186# =====================
187# Prepare all .in files
188# =====================
189AC_CONFIG_FILES([
190Makefile
191src/Makefile
192inc/Makefile
193build/Makefile
194build/win32/Makefile
195libgltf-$GLTF_MAJOR_VERSION.$GLTF_MINOR_VERSION.pc:libgltf.pc.in
196qa/Makefile
197qa/data/Makefile
198qa/data/duck_model/Makefile
199qa/data/duck_model/buffers/Makefile
200qa/data/duck_model/shaders/Makefile
201qa/data/duck_model/textures/Makefile
202qa/helper/Makefile
203qa/test/Makefile
204])
205AC_OUTPUT
206
207# ==============================================
208# Display final informations about configuration
209# ==============================================
210AC_MSG_NOTICE([
211==============================================================================
212Build configuration:
213 debug: ${enable_debug}
214 werror: ${enable_werror}
215 tests: ${enable_tests}
216==============================================================================
217])
218
219
220