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