Disable fixed-sized specializations for schur solver
[blender.git] / extern / libmv / third_party / ceres / bundle.sh
1 #!/bin/sh
2
3 if false; then
4 if [ "x$1" = "x--i-really-know-what-im-doing" ] ; then
5   echo Proceeding as requested by command line ...
6 else
7   echo "*** Please run again with --i-really-know-what-im-doing ..."
8   exit 1
9 fi
10
11 repo="https://code.google.com/p/ceres-solver/"
12 branch="windows"
13 tmp=`mktemp -d`
14
15 GIT="git --git-dir $tmp/ceres/.git --work-tree $tmp/ceres"
16
17 git clone $repo $tmp/ceres
18
19 if [ $branch != "master" ]; then
20     $GIT checkout -t remotes/origin/$branch
21 fi
22
23 $GIT log -n 50 > ChangeLog
24
25 for p in `cat ./patches/series`; do
26   echo "Applying patch $p..."
27   cat ./patches/$p | patch -d $tmp/ceres -p1
28 done
29
30 find include -type f -not -iwholename '*.svn*' -exec rm -rf {} \;
31 find internal -type f -not -iwholename '*.svn*' -exec rm -rf {} \;
32
33 cat "files.txt" | while read f; do
34   mkdir -p `dirname $f`
35   cp $tmp/ceres/$f $f
36 done
37
38 rm -rf $tmp
39
40 fi
41
42 sources=`find ./include ./internal -type f -iname '*.cc' -or -iname '*.cpp' -or -iname '*.c' | sed -r 's/^\.\//\t/' | grep -v -E 'schur_eliminator_[0-9]_[0-9]_[0-9d].cc' | sort -d`
43 generated_sources=`find ./include ./internal -type f -iname '*.cc' -or -iname '*.cpp' -or -iname '*.c' | sed -r 's/^\.\//#\t\t/' | grep -E 'schur_eliminator_[0-9]_[0-9]_[0-9d].cc' | sort -d`
44 headers=`find ./include ./internal -type f -iname '*.h' | sed -r 's/^\.\//\t/' | sort -d`
45
46 src_dir=`find ./internal -type f -iname '*.cc' -exec dirname {} \; -or -iname '*.cpp' -exec dirname {} \; -or -iname '*.c' -exec dirname {} \; | sed -r 's/^\.\//\t/' | sort -d | uniq`
47 src=""
48 for x in $src_dir $src_third_dir; do
49   t=""
50
51   if test  `echo "$x" | grep -c glog ` -eq 1; then
52     continue;
53   fi
54
55   if test  `echo "$x" | grep -c generated` -eq 1; then
56     continue;
57   fi
58
59   if stat $x/*.cpp > /dev/null 2>&1; then
60     t="src += env.Glob('`echo $x'/*.cpp'`')"
61   fi
62
63   if stat $x/*.c > /dev/null 2>&1; then
64     if [ -z "$t" ]; then
65       t="src += env.Glob('`echo $x'/*.c'`')"
66     else
67       t="$t + env.Glob('`echo $x'/*.c'`')"
68     fi
69   fi
70
71   if stat $x/*.cc > /dev/null 2>&1; then
72     if [ -z "$t" ]; then
73       t="src += env.Glob('`echo $x'/*.cc'`')"
74     else
75       t="$t + env.Glob('`echo $x'/*.cc'`')"
76     fi
77   fi
78
79   if [ -z "$src" ]; then
80     src=$t
81   else
82     src=`echo "$src\n$t"`
83   fi
84 done
85
86 cat > CMakeLists.txt << EOF
87 # ***** BEGIN GPL LICENSE BLOCK *****
88 #
89 # This program is free software; you can redistribute it and/or
90 # modify it under the terms of the GNU General Public License
91 # as published by the Free Software Foundation; either version 2
92 # of the License, or (at your option) any later version.
93 #
94 # This program is distributed in the hope that it will be useful,
95 # but WITHOUT ANY WARRANTY; without even the implied warranty of
96 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
97 # GNU General Public License for more details.
98 #
99 # You should have received a copy of the GNU General Public License
100 # along with this program; if not, write to the Free Software Foundation,
101 # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
102 #
103 # The Original Code is Copyright (C) 2012, Blender Foundation
104 # All rights reserved.
105 #
106 # Contributor(s): Blender Foundation,
107 #                 Sergey Sharybin
108 #
109 # ***** END GPL LICENSE BLOCK *****
110
111 # NOTE: This file is automatically generated by bundle.sh script
112 #       If you're doing changes in this file, please update template
113 #       in that script too
114
115 set(INC
116         .
117         ../../../Eigen3
118         include
119         internal
120         ../gflags
121 )
122
123 set(INC_SYS
124 )
125
126 set(SRC
127 ${sources}
128
129 ${headers}
130 )
131
132 #if(FALSE)
133 #       list(APPEND SRC
134 ${generated_sources}
135 #       )
136 #endif()
137
138 if(WIN32)
139         list(APPEND INC
140                 ../glog/src/windows
141         )
142
143         if(NOT MINGW)
144                 list(APPEND INC
145                         third_party/msinttypes
146                 )
147         endif()
148 else()
149         list(APPEND INC
150                 ../glog/src
151         )
152 endif()
153
154 add_definitions(
155         -DCERES_HAVE_PTHREAD
156         -D"CERES_HASH_NAMESPACE_START=namespace std { namespace tr1 {"
157         -D"CERES_HASH_NAMESPACE_END=}}"
158         -DCERES_NO_SUITESPARSE
159         -DCERES_DONT_HAVE_PROTOCOL_BUFFERS
160         -DCERES_RESTRICT_SCHUR_SPECIALIZATION
161 )
162
163 blender_add_lib(extern_ceres "\${SRC}" "\${INC}" "\${INC_SYS}")
164 EOF
165
166 cat > SConscript << EOF
167 #!/usr/bin/python
168
169 # NOTE: This file is automatically generated by bundle.sh script
170 #       If you're doing changes in this file, please update template
171 #       in that script too
172
173 import sys
174 import os
175
176 Import('env')
177
178 src = []
179 defs = []
180
181 $src
182 src += env.Glob('internal/ceres/generated/schur_eliminator_d_d_d.cc')
183 #src += env.Glob('internal/ceres/generated/*.cc')
184
185 defs.append('CERES_HAVE_PTHREAD')
186 defs.append('CERES_HASH_NAMESPACE_START=namespace std { namespace tr1 {')
187 defs.append('CERES_HASH_NAMESPACE_END=}}')
188 defs.append('CERES_NO_SUITESPARSE')
189 defs.append('CERES_DONT_HAVE_PROTOCOL_BUFFERS')
190 defs.append('CERES_RESTRICT_SCHUR_SPECIALIZATION')
191
192 incs = '. ../../ ../../../Eigen3 ./include ./internal ../gflags'
193
194 if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc', 'win64-mingw'):
195     if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'):
196         incs += ' ../msinttypes'
197
198     incs += ' ../glog/src/windows'
199 else:
200     incs += ' ../glog/src'
201
202 env.BlenderLib ( libname = 'extern_ceres', sources=src, includes=Split(incs), defines=defs, libtype=['extern', 'player'], priority=[20,137])
203 EOF