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 |
5c9493b3 |
21 | HAVE_FREETYPE { CSF_FREETYPE = -lfreetype } |
aafe169f |
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 } |
e77bcb6b |
29 | HAVE_DRACO { CSF_Draco = -ldraco } |
aafe169f |
30 | win32 { |
31 | CSF_kernel32 = -lkernel32 |
32 | CSF_advapi32 = -ladvapi32 |
33 | CSF_gdi32 = -lgdi32 |
34 | CSF_user32 = -luser32 -lcomdlg32 |
35 | CSF_shell32 = -lShell32 |
36 | CSF_opengl32 = -lopengl32 |
37 | CSF_wsock32 = -lwsock32 |
38 | CSF_netapi32 = -lnetapi32 |
39 | CSF_OpenGlLibs = -lopengl32 |
b8ef513c |
40 | CSF_OpenGlesLibs = -llibEGL -llibGLESv2 |
aafe169f |
41 | CSF_psapi = -lPsapi |
2506cf29 |
42 | CSF_winmm = -lwinmm |
aafe169f |
43 | CSF_d3d9 = -ld3d9 |
44 | CSF_TclLibs = -ltcl86 |
45 | CSF_TclTkLibs = -ltk86 |
46 | CSF_TBB = |
47 | } else:mac { |
48 | CSF_dl = -ldl |
49 | CSF_objc = -lobjc |
b8ef513c |
50 | CSF_OpenGlLibs = -framework OpenGL |
51 | CSF_OpenGlesLibs = -framework OpenGLES |
48ba1811 |
52 | iphoneos { |
53 | CSF_Appkit = -framework UIKit |
48ba1811 |
54 | } else { |
55 | CSF_Appkit = -framework AppKit |
48ba1811 |
56 | } |
aafe169f |
57 | CSF_IOKit = -framework IOKit |
aafe169f |
58 | CSF_TclLibs = -framework Tcl |
59 | CSF_TclTkLibs = -framework Tk |
60 | } else { |
61 | CSF_dl = -ldl |
62 | CSF_ThreadLibs = -lpthread -lrt |
b8ef513c |
63 | CSF_OpenGlesLibs = -lEGL -lGLESv2 |
b69e576a |
64 | CSF_TclTkLibs = -ltk8.6 |
65 | HAVE_XLIB { |
66 | CSF_OpenGlLibs = -lGL |
342bb7fd |
67 | CSF_XwLibs = -lX11 |
b69e576a |
68 | } else { |
69 | CSF_OpenGlLibs = -lGL -lEGL |
70 | } |
5c9493b3 |
71 | HAVE_FREETYPE { CSF_fontconfig = -lfontconfig } |
aafe169f |
72 | } |
73 | |
74 | for (aCfgIter, CONFIG) { |
75 | aRes = $$find(aCfgIter, "^HAVE_") |
b8ef513c |
76 | !equals(aCfgIter, "HAVE_GLES2") { |
77 | count(aRes, 1) { |
78 | DEFINES += $$aCfgIter |
79 | } |
aafe169f |
80 | } |
81 | } |
82 | |
83 | # Define the list of standard OCCT file extensions |
84 | aHxxRegex = ^.*\.(hxx|h|lxx|gxx)$ |
85 | aPxxRegex = ^.*\.(pxx)$ |
a8b9d7eb |
86 | aCxxRegex = ^.*\.(cxx|cpp|c)$ |
87 | mac { aCxxRegex = ^.*\.(cxx|cpp|c|m|mm)$ } |
aafe169f |
88 | |
89 | # Auxiliary function for probing file extension |
90 | defineTest (occCheckExtension) { |
91 | aProbe = $$find(1, "$$2") |
92 | count(aProbe, 1) { return(true) } else { return(false) } |
93 | } |
94 | |
95 | # Auxiliary function for probing compilable files |
96 | defineTest (occIsCxxFile) { occCheckExtension ($$1, $$aCxxRegex) { return(true) } else { return(false) } } |
97 | |
98 | # Auxiliary function for probing header files |
99 | defineTest (occIsHxxFile) { occCheckExtension ($$1, $$aHxxRegex) { return(true) } else { return(false) } } |
100 | |
101 | aTkFiles = $$cat($$aSrcRoot/$$OCC_TOOLKIT_NAME/FILES, lines) |
102 | aTkFiles += CMakeLists.txt |
103 | aPackages = $$cat($$aSrcRoot/$$OCC_TOOLKIT_NAME/PACKAGES, lines) |
104 | anExternLibs = $$cat($$aSrcRoot/$$OCC_TOOLKIT_NAME/EXTERNLIB, lines) |
105 | |
106 | for (aTkFileIter, aTkFiles) { OTHER_FILES += $$aSrcRoot/$$OCC_TOOLKIT_NAME/$$aTkFileIter } |
107 | for (anExternLib, anExternLibs) { |
108 | hasCsf = $$find(anExternLib, CSF_) |
109 | count(hasCsf, 1) { |
110 | aList = $$split($$anExternLib, "\n") |
111 | LIBS += $$aList |
b8ef513c |
112 | equals(anExternLib, "CSF_OpenGlLibs") { |
113 | DEFINES += "HAVE_OPENGL" |
114 | } |
115 | equals(anExternLib, "CSF_OpenGlesLibs") { |
116 | DEFINES += "HAVE_GLES2" |
117 | } |
aafe169f |
118 | } else { |
119 | LIBS += -l$$anExternLib |
120 | } |
121 | } |
122 | |
123 | # Iterate over Packages and add compilable files into this project |
124 | isEmpty (aPackages) { aPackages = $$OCC_TOOLKIT_NAME } |
125 | for (aPackage, aPackages) { |
126 | aPackageFolder = $$aSrcRoot/$$OCC_TOOLKIT_NAME/$$aPackage |
127 | aPackageFiles = $$cat($$aSrcRoot/$$aPackage/FILES, lines) |
128 | for (aFileIter, aPackageFiles) { |
129 | occIsCxxFile($$aFileIter) { |
130 | SOURCES += $$aSrcRoot/$$aPackage/$$aFileIter |
131 | } |
132 | } |
133 | } |
134 | |
aafe169f |
135 | !win32 { |
136 | aVerList = $$split(VERSION, ".") |
137 | aVerMaj = $$member(aVerList, 0) |
138 | aVerMin = $$member(aVerList, 1) |
139 | aVerMic = $$member(aVerList, 2) |
75e2ba16 |
140 | |
aafe169f |
141 | equals(TEMPLATE, app) { |
142 | QMAKE_CLEAN += $$DESTDIR/$${TARGET} |
143 | } else { |
144 | mac { |
75e2ba16 |
145 | # override qmake soname versionong logic |
146 | QMAKE_LFLAGS_SONAME = |
147 | QMAKE_LFLAGS += -Wl,-soname=lib$${TARGET}.dylib.$${aVerMaj}.$${aVerMin} |
148 | |
149 | # extend clean with versioned .dylib files |
aafe169f |
150 | QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.dylib |
151 | QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.$${aVerMaj}.dylib |
152 | QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.$${aVerMaj}.$${aVerMin}.dylib |
153 | QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.$${aVerMaj}.$${aVerMin}.$${aVerMic}.dylib |
154 | } else { |
75e2ba16 |
155 | # override qmake soname versionong logic |
156 | QMAKE_LFLAGS_SONAME = |
157 | QMAKE_LFLAGS += -Wl,-soname=lib$${TARGET}.so.$${aVerMaj}.$${aVerMin} |
158 | |
159 | # extend clean with versioned .so files |
aafe169f |
160 | QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.so |
161 | QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.so.$${aVerMaj} |
162 | QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.so.$${aVerMaj}.$${aVerMin} |
163 | QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.so.$${aVerMaj}.$${aVerMin}.$${aVerMic} |
164 | } |
165 | } |
166 | } |