| 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_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_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 | |
| 64 | for (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 |
| 72 | aHxxRegex = ^.*\.(hxx|h|lxx|gxx)$ |
| 73 | aPxxRegex = ^.*\.(pxx)$ |
| 74 | aCxxRegex = ^.*\.(cxx|c)$ |
| 75 | mac { aCxxRegex = ^.*\.(cxx|c|m|mm)$ } |
| 76 | |
| 77 | # Auxiliary function for probing file extension |
| 78 | defineTest (occCheckExtension) { |
| 79 | aProbe = $$find(1, "$$2") |
| 80 | count(aProbe, 1) { return(true) } else { return(false) } |
| 81 | } |
| 82 | |
| 83 | # Auxiliary function for probing compilable files |
| 84 | defineTest (occIsCxxFile) { occCheckExtension ($$1, $$aCxxRegex) { return(true) } else { return(false) } } |
| 85 | |
| 86 | # Auxiliary function for probing header files |
| 87 | defineTest (occIsHxxFile) { occCheckExtension ($$1, $$aHxxRegex) { return(true) } else { return(false) } } |
| 88 | |
| 89 | aTkFiles = $$cat($$aSrcRoot/$$OCC_TOOLKIT_NAME/FILES, lines) |
| 90 | aTkFiles += CMakeLists.txt |
| 91 | aPackages = $$cat($$aSrcRoot/$$OCC_TOOLKIT_NAME/PACKAGES, lines) |
| 92 | anExternLibs = $$cat($$aSrcRoot/$$OCC_TOOLKIT_NAME/EXTERNLIB, lines) |
| 93 | |
| 94 | for (aTkFileIter, aTkFiles) { OTHER_FILES += $$aSrcRoot/$$OCC_TOOLKIT_NAME/$$aTkFileIter } |
| 95 | for (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 |
| 106 | isEmpty (aPackages) { aPackages = $$OCC_TOOLKIT_NAME } |
| 107 | for (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 | } |