aafe169f |
1 | # This is a project template file defining an OCCT Toolkit. |
2 | # This project should be included with predefined OCC_TOOLKIT_NAME variable. |
3 | |
4 | TEMPLATE = lib |
5 | !exists(../../src/$$OCC_TOOLKIT_NAME/PACKAGES) { |
6 | TEMPLATE = app |
7 | CONFIG += console |
8 | } |
9 | win32 { |
10 | # do not append version to DLL name |
11 | CONFIG += skip_target_version_ext |
12 | } |
13 | |
14 | include(OccCppConfig.pri) |
15 | |
16 | aSrcRoot = $$OccGitRoot/src |
17 | aHxxRoot = $$OccGitRoot/inc |
18 | INCLUDEPATH += $$aHxxRoot |
19 | |
20 | # CSF variables |
21 | CSF_FREETYPE = -lfreetype |
22 | CSF_TclLibs = -ltcl8.6 |
23 | CSF_TclTkLibs = -ltk8.6 |
24 | HAVE_FREEIMAGE { CSF_FreeImagePlus = -lfreeimage } else:win32 { CSF_FreeImagePlus = -lwindowscodecs -lole32 } |
25 | HAVE_FFMPEG { CSF_FFmpeg = -lavcodec -lavformat -lswscale -lavutil } |
26 | HAVE_TBB { CSF_TBB = -ltbb -ltbbmalloc } |
27 | HAVE_ZLIB { CSF_ZLIB = -lzlib } |
28 | HAVE_LIBLZMA { CSF_LIBLZMA = -lliblzma } |
29 | win32 { |
30 | CSF_kernel32 = -lkernel32 |
31 | CSF_advapi32 = -ladvapi32 |
32 | CSF_gdi32 = -lgdi32 |
33 | CSF_user32 = -luser32 -lcomdlg32 |
34 | CSF_shell32 = -lShell32 |
35 | CSF_opengl32 = -lopengl32 |
36 | CSF_wsock32 = -lwsock32 |
37 | CSF_netapi32 = -lnetapi32 |
38 | CSF_OpenGlLibs = -lopengl32 |
39 | HAVE_GLES2 { CSF_OpenGlLibs = -llibEGL -llibGLESv2 } |
40 | CSF_psapi = -lPsapi |
41 | CSF_d3d9 = -ld3d9 |
42 | CSF_TclLibs = -ltcl86 |
43 | CSF_TclTkLibs = -ltk86 |
44 | CSF_TBB = |
45 | } else:mac { |
46 | CSF_dl = -ldl |
47 | CSF_objc = -lobjc |
48 | CSF_Appkit = -framework AppKit |
49 | CSF_IOKit = -framework IOKit |
50 | CSF_OpenGlLibs = -framework OpenGL |
51 | CSF_TclLibs = -framework Tcl |
52 | CSF_TclTkLibs = -framework Tk |
53 | } else { |
54 | CSF_dl = -ldl |
55 | CSF_ThreadLibs = -lpthread -lrt |
56 | CSF_OpenGlLibs = -lGL |
57 | CSF_TclTkLibs = -lX11 -ltk8.6 |
58 | CSF_XwLibs = -lX11 -lXext -lXmu -lXi |
59 | CSF_MotifLibs = -lX11 |
60 | HAVE_GLES2 { CSF_OpenGlLibs = -lEGL -lGLESv2 } |
61 | } |
62 | |
63 | for (aCfgIter, CONFIG) { |
64 | aRes = $$find(aCfgIter, "^HAVE_") |
65 | count(aRes, 1) { |
66 | DEFINES += $$aCfgIter |
67 | } |
68 | } |
69 | |
70 | # Define the list of standard OCCT file extensions |
71 | aHxxRegex = ^.*\.(hxx|h|lxx|gxx)$ |
72 | aPxxRegex = ^.*\.(pxx)$ |
73 | aCxxRegex = ^.*\.(cxx|c)$ |
74 | mac { aCxxRegex = ^.*\.(cxx|c|m|mm)$ } |
75 | |
76 | # Auxiliary function for probing file extension |
77 | defineTest (occCheckExtension) { |
78 | aProbe = $$find(1, "$$2") |
79 | count(aProbe, 1) { return(true) } else { return(false) } |
80 | } |
81 | |
82 | # Auxiliary function for probing compilable files |
83 | defineTest (occIsCxxFile) { occCheckExtension ($$1, $$aCxxRegex) { return(true) } else { return(false) } } |
84 | |
85 | # Auxiliary function for probing header files |
86 | defineTest (occIsHxxFile) { occCheckExtension ($$1, $$aHxxRegex) { return(true) } else { return(false) } } |
87 | |
88 | aTkFiles = $$cat($$aSrcRoot/$$OCC_TOOLKIT_NAME/FILES, lines) |
89 | aTkFiles += CMakeLists.txt |
90 | aPackages = $$cat($$aSrcRoot/$$OCC_TOOLKIT_NAME/PACKAGES, lines) |
91 | anExternLibs = $$cat($$aSrcRoot/$$OCC_TOOLKIT_NAME/EXTERNLIB, lines) |
92 | |
93 | for (aTkFileIter, aTkFiles) { OTHER_FILES += $$aSrcRoot/$$OCC_TOOLKIT_NAME/$$aTkFileIter } |
94 | for (anExternLib, anExternLibs) { |
95 | hasCsf = $$find(anExternLib, CSF_) |
96 | count(hasCsf, 1) { |
97 | aList = $$split($$anExternLib, "\n") |
98 | LIBS += $$aList |
99 | } else { |
100 | LIBS += -l$$anExternLib |
101 | } |
102 | } |
103 | |
104 | # Iterate over Packages and add compilable files into this project |
105 | isEmpty (aPackages) { aPackages = $$OCC_TOOLKIT_NAME } |
106 | for (aPackage, aPackages) { |
107 | aPackageFolder = $$aSrcRoot/$$OCC_TOOLKIT_NAME/$$aPackage |
108 | aPackageFiles = $$cat($$aSrcRoot/$$aPackage/FILES, lines) |
109 | for (aFileIter, aPackageFiles) { |
110 | occIsCxxFile($$aFileIter) { |
111 | SOURCES += $$aSrcRoot/$$aPackage/$$aFileIter |
112 | } |
113 | } |
114 | } |
115 | |
116 | # extend clean with versioned .so files |
117 | !win32 { |
118 | aVerList = $$split(VERSION, ".") |
119 | aVerMaj = $$member(aVerList, 0) |
120 | aVerMin = $$member(aVerList, 1) |
121 | aVerMic = $$member(aVerList, 2) |
122 | equals(TEMPLATE, app) { |
123 | QMAKE_CLEAN += $$DESTDIR/$${TARGET} |
124 | } else { |
125 | mac { |
126 | QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.dylib |
127 | QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.$${aVerMaj}.dylib |
128 | QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.$${aVerMaj}.$${aVerMin}.dylib |
129 | QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.$${aVerMaj}.$${aVerMin}.$${aVerMic}.dylib |
130 | } else { |
131 | QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.so |
132 | QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.so.$${aVerMaj} |
133 | QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.so.$${aVerMaj}.$${aVerMin} |
134 | QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.so.$${aVerMaj}.$${aVerMin}.$${aVerMic} |
135 | } |
136 | } |
137 | } |