Skip to content

Commit b1e2004

Browse files
committed
Add sw build system script (future cppan replacement).
1 parent def7cdd commit b1e2004

File tree

2 files changed

+191
-1
lines changed

2 files changed

+191
-1
lines changed

sw.cpp

+190
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,190 @@
1+
void build(Solution &s)
2+
{
3+
auto &tess = s.addProject("google.tesseract", "master");
4+
tess += Git("https://github.com/tesseract-ocr/tesseract", "", "{v}");
5+
6+
auto &libtesseract = tess.addTarget<LibraryTarget>("libtesseract");
7+
{
8+
libtesseract.setChecks("libtesseract");
9+
10+
libtesseract.ExportAllSymbols = true;
11+
libtesseract.PackageDefinitions = true;
12+
libtesseract +=
13+
"src/api/.*\\.cpp"_rr,
14+
"src/api/.*\\.h"_rr,
15+
"src/api/tess_version.h.in",
16+
"src/arch/.*\\.cpp"_rr,
17+
"src/arch/.*\\.h"_rr,
18+
"src/ccmain/.*\\.cpp"_rr,
19+
"src/ccmain/.*\\.h"_rr,
20+
"src/ccstruct/.*\\.cpp"_rr,
21+
"src/ccstruct/.*\\.h"_rr,
22+
"src/ccutil/.*\\.cpp"_rr,
23+
"src/ccutil/.*\\.h"_rr,
24+
"src/classify/.*\\.cpp"_rr,
25+
"src/classify/.*\\.h"_rr,
26+
"src/cutil/.*\\.cpp"_rr,
27+
"src/cutil/.*\\.h"_rr,
28+
"src/dict/.*\\.cpp"_rr,
29+
"src/dict/.*\\.h"_rr,
30+
"src/lstm/.*\\.cpp"_rr,
31+
"src/lstm/.*\\.h"_rr,
32+
"src/opencl/.*\\.cpp"_rr,
33+
"src/opencl/.*\\.h"_rr,
34+
"src/textord/.*\\.cpp"_rr,
35+
"src/textord/.*\\.h"_rr,
36+
"src/viewer/.*\\.cpp"_rr,
37+
"src/viewer/.*\\.h"_rr,
38+
"src/vs2010/port/.*"_rr,
39+
"src/wordrec/.*\\.cpp"_rr,
40+
"src/wordrec/.*\\.h"_rr;
41+
42+
libtesseract -=
43+
"src/api/tesseractmain.cpp",
44+
"src/viewer/svpaint.cpp";
45+
46+
libtesseract.Public +=
47+
"src/vs2010/port"_id,
48+
"src/opencl"_id,
49+
"src/ccmain"_id,
50+
"src/api"_id,
51+
"src/dict"_id,
52+
"src/viewer"_id,
53+
"src/wordrec"_id,
54+
"src/ccstruct"_id,
55+
"src/cutil"_id,
56+
"src/textord"_id,
57+
"src/ccutil"_id,
58+
"src/lstm"_id,
59+
"src/classify"_id,
60+
"src/arch"_id;
61+
62+
libtesseract.Public += "HAVE_CONFIG_H"_d;
63+
libtesseract.Public += "WINDLLNAME=\"tesseract\""_d;
64+
libtesseract.Public += "_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS=1"_d;
65+
libtesseract.Interface += sw::Shared, "TESS_IMPORTS"_d;
66+
libtesseract.Private += sw::Shared, "TESS_EXPORTS"_d;
67+
68+
libtesseract.Public += "org.sw.demo.danbloomberg.leptonica-1"_dep;
69+
70+
if (s.Settings.TargetOS.Type == OSType::Windows)
71+
libtesseract.Public += "ws2_32.lib"_l;
72+
73+
libtesseract.Variables["TESSERACT_MAJOR_VERSION"] = libtesseract.Variables["PACKAGE_MAJOR_VERSION"];
74+
libtesseract.Variables["TESSERACT_MINOR_VERSION"] = libtesseract.Variables["PACKAGE_MINOR_VERSION"];
75+
libtesseract.Variables["TESSERACT_MICRO_VERSION"] = libtesseract.Variables["PACKAGE_PATCH_VERSION"];
76+
libtesseract.Variables["TESSERACT_VERSION_STR"] = "master";
77+
libtesseract.configureFile("src/api/tess_version.h.in", "tess_version.h");
78+
}
79+
80+
//
81+
auto &tesseract = tess.addExecutable("tesseract");
82+
tesseract += "src/api/tesseractmain.cpp";
83+
tesseract += libtesseract;
84+
85+
//
86+
auto &tessopt = tess.addStaticLibrary("tessopt");
87+
tessopt += "src/training/tessopt.*"_rr;
88+
tessopt.Public += "training"_id;
89+
tessopt.Public += libtesseract;
90+
91+
//
92+
auto &common_training = tess.addStaticLibrary("common_training");
93+
common_training +=
94+
"src/training/commandlineflags.cpp",
95+
"src/training/commandlineflags.h",
96+
"src/training/commontraining.cpp",
97+
"src/training/commontraining.h";
98+
common_training.Public += "training"_id;
99+
common_training.Public += tessopt;
100+
101+
//
102+
auto &unicharset_training = tess.addStaticLibrary("unicharset_training");
103+
unicharset_training +=
104+
"src/training/fileio.*"_rr,
105+
"src/training/icuerrorcode.*"_rr,
106+
"src/training/icuerrorcode.h",
107+
"src/training/lang_model_helpers.*"_rr,
108+
"src/training/lstmtester.*"_rr,
109+
"src/training/normstrngs.*"_rr,
110+
"src/training/unicharset_training_utils.*"_rr,
111+
"src/training/validat.*"_rr;
112+
unicharset_training.Public += "training"_id;
113+
unicharset_training.Public += common_training;
114+
unicharset_training.Public += "org.sw.demo.unicode.icu.i18n"_dep;
115+
116+
//
117+
#define ADD_EXE(n, ...) \
118+
auto &n = tess.addExecutable(#n); \
119+
n += "src/training/" #n ".*"_rr; \
120+
n.Public += __VA_ARGS__
121+
122+
ADD_EXE(ambiguous_words, libtesseract);
123+
ADD_EXE(classifier_tester, common_training);
124+
ADD_EXE(combine_lang_model, unicharset_training);
125+
ADD_EXE(combine_tessdata, libtesseract);
126+
ADD_EXE(cntraining, common_training);
127+
ADD_EXE(dawg2wordlist, libtesseract);
128+
ADD_EXE(mftraining, common_training);
129+
mftraining += "src/training/mergenf.*"_rr;
130+
ADD_EXE(shapeclustering, common_training);
131+
ADD_EXE(unicharset_extractor, unicharset_training);
132+
ADD_EXE(wordlist2dawg, libtesseract);
133+
ADD_EXE(lstmeval, unicharset_training);
134+
ADD_EXE(lstmtraining, unicharset_training);
135+
ADD_EXE(set_unicharset_properties, unicharset_training);
136+
137+
ADD_EXE(text2image, unicharset_training);
138+
text2image +=
139+
"src/training/boxchar.cpp",
140+
"src/training/boxchar.h",
141+
"src/training/degradeimage.cpp",
142+
"src/training/degradeimage.h",
143+
"src/training/icuerrorcode.h",
144+
"src/training/ligature_table.cpp",
145+
"src/training/ligature_table.h",
146+
"src/training/normstrngs.cpp",
147+
"src/training/normstrngs.h",
148+
"src/training/pango_font_info.cpp",
149+
"src/training/pango_font_info.h",
150+
"src/training/stringrenderer.cpp",
151+
"src/training/stringrenderer.h",
152+
"src/training/text2image.cpp",
153+
"src/training/tlog.cpp",
154+
"src/training/tlog.h",
155+
"src/training/util.h";
156+
text2image.Public += "org.sw.demo.gnome.pango.pangocairo-1"_dep;
157+
}
158+
159+
void check(Checker &c)
160+
{
161+
auto &s = c.addSet("libtesseract");
162+
s.checkFunctionExists("getline");
163+
s.checkIncludeExists("dlfcn.h");
164+
s.checkIncludeExists("inttypes.h");
165+
s.checkIncludeExists("limits.h");
166+
s.checkIncludeExists("malloc.h");
167+
s.checkIncludeExists("memory.h");
168+
s.checkIncludeExists("stdbool.h");
169+
s.checkIncludeExists("stdint.h");
170+
s.checkIncludeExists("stdlib.h");
171+
s.checkIncludeExists("string.h");
172+
s.checkIncludeExists("sys/ipc.h");
173+
s.checkIncludeExists("sys/shm.h");
174+
s.checkIncludeExists("sys/stat.h");
175+
s.checkIncludeExists("sys/types.h");
176+
s.checkIncludeExists("sys/wait.h");
177+
s.checkIncludeExists("tiffio.h");
178+
s.checkIncludeExists("unistd.h");
179+
s.checkTypeSize("long long int");
180+
s.checkTypeSize("mbstate_t");
181+
s.checkTypeSize("off_t");
182+
s.checkTypeSize("size_t");
183+
s.checkTypeSize("void *");
184+
s.checkTypeSize("wchar_t");
185+
s.checkTypeSize("_Bool");
186+
{
187+
auto &c = s.checkSymbolExists("snprintf");
188+
c.Parameters.Includes.push_back("stdio.h");
189+
}
190+
}

0 commit comments

Comments
 (0)