-
Notifications
You must be signed in to change notification settings - Fork 9.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Reapply: Add sw build system script (future cppan replacement).
- Loading branch information
Showing
1 changed file
with
190 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,190 @@ | ||
void build(Solution &s) | ||
{ | ||
auto &tess = s.addProject("google.tesseract", "master"); | ||
tess += Git("https://github.com/tesseract-ocr/tesseract", "", "{v}"); | ||
|
||
auto &libtesseract = tess.addTarget<LibraryTarget>("libtesseract"); | ||
{ | ||
libtesseract.setChecks("libtesseract"); | ||
|
||
libtesseract.ExportAllSymbols = true; | ||
libtesseract.PackageDefinitions = true; | ||
libtesseract += | ||
"src/api/.*\\.cpp"_rr, | ||
"src/api/.*\\.h"_rr, | ||
"src/api/tess_version.h.in", | ||
"src/arch/.*\\.cpp"_rr, | ||
"src/arch/.*\\.h"_rr, | ||
"src/ccmain/.*\\.cpp"_rr, | ||
"src/ccmain/.*\\.h"_rr, | ||
"src/ccstruct/.*\\.cpp"_rr, | ||
"src/ccstruct/.*\\.h"_rr, | ||
"src/ccutil/.*\\.cpp"_rr, | ||
"src/ccutil/.*\\.h"_rr, | ||
"src/classify/.*\\.cpp"_rr, | ||
"src/classify/.*\\.h"_rr, | ||
"src/cutil/.*\\.cpp"_rr, | ||
"src/cutil/.*\\.h"_rr, | ||
"src/dict/.*\\.cpp"_rr, | ||
"src/dict/.*\\.h"_rr, | ||
"src/lstm/.*\\.cpp"_rr, | ||
"src/lstm/.*\\.h"_rr, | ||
"src/opencl/.*\\.cpp"_rr, | ||
"src/opencl/.*\\.h"_rr, | ||
"src/textord/.*\\.cpp"_rr, | ||
"src/textord/.*\\.h"_rr, | ||
"src/viewer/.*\\.cpp"_rr, | ||
"src/viewer/.*\\.h"_rr, | ||
"src/vs2010/port/.*"_rr, | ||
"src/wordrec/.*\\.cpp"_rr, | ||
"src/wordrec/.*\\.h"_rr; | ||
|
||
libtesseract -= | ||
"src/api/tesseractmain.cpp", | ||
"src/viewer/svpaint.cpp"; | ||
|
||
libtesseract.Public += | ||
"src/vs2010/port"_id, | ||
"src/opencl"_id, | ||
"src/ccmain"_id, | ||
"src/api"_id, | ||
"src/dict"_id, | ||
"src/viewer"_id, | ||
"src/wordrec"_id, | ||
"src/ccstruct"_id, | ||
"src/cutil"_id, | ||
"src/textord"_id, | ||
"src/ccutil"_id, | ||
"src/lstm"_id, | ||
"src/classify"_id, | ||
"src/arch"_id; | ||
|
||
libtesseract.Public += "HAVE_CONFIG_H"_d; | ||
libtesseract.Public += "WINDLLNAME=\"tesseract\""_d; | ||
libtesseract.Public += "_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS=1"_d; | ||
libtesseract.Interface += sw::Shared, "TESS_IMPORTS"_d; | ||
libtesseract.Private += sw::Shared, "TESS_EXPORTS"_d; | ||
|
||
libtesseract.Public += "org.sw.demo.danbloomberg.leptonica-1"_dep; | ||
|
||
if (s.Settings.TargetOS.Type == OSType::Windows) | ||
libtesseract.Public += "ws2_32.lib"_l; | ||
|
||
libtesseract.Variables["TESSERACT_MAJOR_VERSION"] = libtesseract.Variables["PACKAGE_MAJOR_VERSION"]; | ||
libtesseract.Variables["TESSERACT_MINOR_VERSION"] = libtesseract.Variables["PACKAGE_MINOR_VERSION"]; | ||
libtesseract.Variables["TESSERACT_MICRO_VERSION"] = libtesseract.Variables["PACKAGE_PATCH_VERSION"]; | ||
libtesseract.Variables["TESSERACT_VERSION_STR"] = "master"; | ||
libtesseract.configureFile("src/api/tess_version.h.in", "tess_version.h"); | ||
} | ||
|
||
// | ||
auto &tesseract = tess.addExecutable("tesseract"); | ||
tesseract += "src/api/tesseractmain.cpp"; | ||
tesseract += libtesseract; | ||
|
||
// | ||
auto &tessopt = tess.addStaticLibrary("tessopt"); | ||
tessopt += "src/training/tessopt.*"_rr; | ||
tessopt.Public += "training"_id; | ||
tessopt.Public += libtesseract; | ||
|
||
// | ||
auto &common_training = tess.addStaticLibrary("common_training"); | ||
common_training += | ||
"src/training/commandlineflags.cpp", | ||
"src/training/commandlineflags.h", | ||
"src/training/commontraining.cpp", | ||
"src/training/commontraining.h"; | ||
common_training.Public += "training"_id; | ||
common_training.Public += tessopt; | ||
|
||
// | ||
auto &unicharset_training = tess.addStaticLibrary("unicharset_training"); | ||
unicharset_training += | ||
"src/training/fileio.*"_rr, | ||
"src/training/icuerrorcode.*"_rr, | ||
"src/training/icuerrorcode.h", | ||
"src/training/lang_model_helpers.*"_rr, | ||
"src/training/lstmtester.*"_rr, | ||
"src/training/normstrngs.*"_rr, | ||
"src/training/unicharset_training_utils.*"_rr, | ||
"src/training/validat.*"_rr; | ||
unicharset_training.Public += "training"_id; | ||
unicharset_training.Public += common_training; | ||
unicharset_training.Public += "org.sw.demo.unicode.icu.i18n"_dep; | ||
|
||
// | ||
#define ADD_EXE(n, ...) \ | ||
auto &n = tess.addExecutable(#n); \ | ||
n += "src/training/" #n ".*"_rr; \ | ||
n.Public += __VA_ARGS__ | ||
|
||
ADD_EXE(ambiguous_words, libtesseract); | ||
ADD_EXE(classifier_tester, common_training); | ||
ADD_EXE(combine_lang_model, unicharset_training); | ||
ADD_EXE(combine_tessdata, libtesseract); | ||
ADD_EXE(cntraining, common_training); | ||
ADD_EXE(dawg2wordlist, libtesseract); | ||
ADD_EXE(mftraining, common_training); | ||
mftraining += "src/training/mergenf.*"_rr; | ||
ADD_EXE(shapeclustering, common_training); | ||
ADD_EXE(unicharset_extractor, unicharset_training); | ||
ADD_EXE(wordlist2dawg, libtesseract); | ||
ADD_EXE(lstmeval, unicharset_training); | ||
ADD_EXE(lstmtraining, unicharset_training); | ||
ADD_EXE(set_unicharset_properties, unicharset_training); | ||
|
||
ADD_EXE(text2image, unicharset_training); | ||
text2image += | ||
"src/training/boxchar.cpp", | ||
"src/training/boxchar.h", | ||
"src/training/degradeimage.cpp", | ||
"src/training/degradeimage.h", | ||
"src/training/icuerrorcode.h", | ||
"src/training/ligature_table.cpp", | ||
"src/training/ligature_table.h", | ||
"src/training/normstrngs.cpp", | ||
"src/training/normstrngs.h", | ||
"src/training/pango_font_info.cpp", | ||
"src/training/pango_font_info.h", | ||
"src/training/stringrenderer.cpp", | ||
"src/training/stringrenderer.h", | ||
"src/training/text2image.cpp", | ||
"src/training/tlog.cpp", | ||
"src/training/tlog.h", | ||
"src/training/util.h"; | ||
text2image.Public += "org.sw.demo.gnome.pango.pangocairo-1"_dep; | ||
} | ||
|
||
void check(Checker &c) | ||
{ | ||
auto &s = c.addSet("libtesseract"); | ||
s.checkFunctionExists("getline"); | ||
s.checkIncludeExists("dlfcn.h"); | ||
s.checkIncludeExists("inttypes.h"); | ||
s.checkIncludeExists("limits.h"); | ||
s.checkIncludeExists("malloc.h"); | ||
s.checkIncludeExists("memory.h"); | ||
s.checkIncludeExists("stdbool.h"); | ||
s.checkIncludeExists("stdint.h"); | ||
s.checkIncludeExists("stdlib.h"); | ||
s.checkIncludeExists("string.h"); | ||
s.checkIncludeExists("sys/ipc.h"); | ||
s.checkIncludeExists("sys/shm.h"); | ||
s.checkIncludeExists("sys/stat.h"); | ||
s.checkIncludeExists("sys/types.h"); | ||
s.checkIncludeExists("sys/wait.h"); | ||
s.checkIncludeExists("tiffio.h"); | ||
s.checkIncludeExists("unistd.h"); | ||
s.checkTypeSize("long long int"); | ||
s.checkTypeSize("mbstate_t"); | ||
s.checkTypeSize("off_t"); | ||
s.checkTypeSize("size_t"); | ||
s.checkTypeSize("void *"); | ||
s.checkTypeSize("wchar_t"); | ||
s.checkTypeSize("_Bool"); | ||
{ | ||
auto &c = s.checkSymbolExists("snprintf"); | ||
c.Parameters.Includes.push_back("stdio.h"); | ||
} | ||
} |