c4b11d9d6663ff5e4ca31d620e7975d93926bac5
[occt.git] / adm / qmake / OccToolkit.pri
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 HAVE_FREETYPE  { 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   CSF_OpenGlesLibs = -llibEGL -llibGLESv2
40   CSF_psapi      = -lPsapi
41   CSF_winmm      = -lwinmm
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_OpenGlLibs = -framework OpenGL
50   CSF_OpenGlesLibs = -framework OpenGLES
51   iphoneos {
52     CSF_Appkit     = -framework UIKit
53   } else {
54     CSF_Appkit     = -framework AppKit
55   }
56   CSF_IOKit      = -framework IOKit
57   CSF_TclLibs    = -framework Tcl
58   CSF_TclTkLibs  = -framework Tk
59 } else {
60   CSF_dl = -ldl
61   CSF_ThreadLibs = -lpthread -lrt
62   CSF_OpenGlesLibs = -lEGL -lGLESv2
63   CSF_TclTkLibs  = -ltk8.6
64   HAVE_XLIB {
65     CSF_OpenGlLibs = -lGL
66     CSF_XwLibs = -lX11 -lXext -lXmu -lXi
67     CSF_MotifLibs  = -lX11
68   } else {
69     CSF_OpenGlLibs = -lGL -lEGL
70   }
71   HAVE_FREETYPE  { CSF_fontconfig = -lfontconfig }
72 }
73
74 for (aCfgIter, CONFIG) {
75   aRes = $$find(aCfgIter, "^HAVE_")
76   !equals(aCfgIter, "HAVE_GLES2") {
77     count(aRes, 1) {
78       DEFINES += $$aCfgIter
79     }
80   }
81 }
82
83 # Define the list of standard OCCT file extensions
84 aHxxRegex = ^.*\.(hxx|h|lxx|gxx)$
85 aPxxRegex = ^.*\.(pxx)$
86 aCxxRegex = ^.*\.(cxx|cpp|c)$
87 mac { aCxxRegex = ^.*\.(cxx|cpp|c|m|mm)$ }
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
112     equals(anExternLib, "CSF_OpenGlLibs") {
113       DEFINES += "HAVE_OPENGL"
114     }
115     equals(anExternLib, "CSF_OpenGlesLibs") {
116       DEFINES += "HAVE_GLES2"
117     }
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
135 # extend clean with versioned .so files
136 !win32 {
137   aVerList = $$split(VERSION, ".")
138   aVerMaj = $$member(aVerList, 0)
139   aVerMin = $$member(aVerList, 1)
140   aVerMic = $$member(aVerList, 2)
141   equals(TEMPLATE, app) {
142     QMAKE_CLEAN += $$DESTDIR/$${TARGET}
143   } else {
144     mac {
145       QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.dylib
146       QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.$${aVerMaj}.dylib
147       QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.$${aVerMaj}.$${aVerMin}.dylib
148       QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.$${aVerMaj}.$${aVerMin}.$${aVerMic}.dylib
149     } else {
150       QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.so
151       QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.so.$${aVerMaj}
152       QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.so.$${aVerMaj}.$${aVerMin}
153       QMAKE_CLEAN += $$DESTDIR/lib$${TARGET}.so.$${aVerMaj}.$${aVerMin}.$${aVerMic}
154     }
155   }
156 }