source: orange/source/orangeqt/setup.py @ 10783:dd5db2fb6c28

Revision 10783:dd5db2fb6c28, 3.7 KB checked in by Ales Erjavec <ales.erjavec@…>, 2 years ago (diff)

Also add -F ... to compiler flags.

Line 
1#!usr/bin/env python
2
3import os, sys
4
5try:
6    from setuptools import setup
7    have_setuptools = True
8except ImportError:
9    from distutils.core import setup
10    have_setuptools = False
11
12from distutils.core import Extension
13
14import subprocess
15
16
17NAME                = 'orangeqt-qt'
18DESCRIPTION         = 'orangeqt ploting library'
19URL                 = "http://orange.biolab.si"
20LICENSE             = 'GNU General Public License (GPL)'
21AUTHOR              = "Bioinformatics Laboratory, FRI UL"
22AUTHOR_EMAIL        = "orange@fri.uni-lj.si"
23VERSION             = '0.0.1a'
24
25import numpy
26
27import glob
28
29import PyQt4.QtCore
30from PyQt4 import pyqtconfig
31
32cfg = pyqtconfig.Configuration()
33
34pyqt_sip_dir = cfg.pyqt_sip_dir
35
36import sipdistutils
37
38extra_compile_args = []
39extra_link_args = []
40
41if sys.platform == "darwin":
42    sip_plaftorm_tag = "WS_MACX"
43elif sys.platform == "win32":
44    sip_plaftorm_tag = "WS_WIN"
45elif sys.platform.startswith("linux"):
46    sip_plaftorm_tag = "WS_X11"
47else:
48    sip_plaftorm_tag = ""
49
50class my_build_ext(sipdistutils.build_ext):
51    def finalize_options(self):
52        sipdistutils.build_ext.finalize_options(self)
53        self.sip_opts = self.sip_opts + ["-k", "-j", "1", "-t", 
54                        sip_plaftorm_tag, "-t",
55                        "Qt_" + PyQt4.QtCore.QT_VERSION_STR.replace('.', '_')]
56
57    def build_extension(self, ext):
58        cppsources = [source for source in ext.sources if source.endswith(".cpp")]
59        if not os.path.exists(self.build_temp):
60            os.makedirs(self.build_temp)
61        for source in cppsources:
62            header = source.replace(".cpp", ".h")
63            if os.path.exists(header):
64                moc_file = header.split('/')[-1].replace(".h", ".moc")
65                try:
66                    subprocess.call(["moc", "-o" + os.path.join(self.build_temp, moc_file), header])
67                except OSError:
68                    raise OSError("Could not locate 'moc' executable.")
69        ext.extra_compile_args = ext.extra_compile_args + ["-I" + self.build_temp]
70        sipdistutils.build_ext.build_extension(self, ext)
71
72    def _sip_sipfiles_dir(self):
73        return pyqt_sip_dir
74
75def get_source_files(path, ext="cpp", exclude=[]):
76    files = glob.glob(os.path.join(path, "*." + ext))
77    files = [file for file in files if os.path.basename(file) not in exclude]
78    return files
79
80qt_libs = ["QtCore", "QtGui", "QtOpenGL"]
81
82if cfg.qt_framework:
83    extra_includes = ["-F%s" % cfg.qt_lib_dir]
84    extra_link_args = ["-F%s" % cfg.qt_lib_dir]
85    for lib in qt_libs:
86        extra_includes += ["-I" + os.path.join(cfg.qt_lib_dir,
87                                        lib + ".framework", "Headers")]
88        extra_link_args += ["-framework", lib]
89    qt_libs = []
90else:
91    extra_includes = ["-I" + cfg.qt_inc_dir] \
92            + ["-I" + os.path.join(cfg.qt_inc_dir, lib) for lib in qt_libs]
93    extra_link_args = ["-L%s" % cfg.qt_lib_dir]
94
95extra_includes += ["-I" + numpy.get_include()] + ["-I./"]
96
97orangeqt_ext = Extension("orangeqt",
98                        ["orangeqt.sip"] + get_source_files("", "cpp"),
99                        extra_compile_args = extra_compile_args
100                                            + ["-DORANGEQT_EXPORTS"]
101                                            + extra_includes,
102                        extra_link_args = extra_link_args,
103                        libraries = qt_libs
104                        )
105
106def setup_package():
107    setup(name = NAME,
108          description = DESCRIPTION,
109          version = VERSION,
110          author = AUTHOR,
111          author_email = AUTHOR_EMAIL,
112          url = URL,
113          license = LICENSE,
114          ext_modules = [orangeqt_ext],
115          cmdclass={"build_ext": my_build_ext},
116          )
117
118if __name__ == '__main__':
119    setup_package()
Note: See TracBrowser for help on using the repository browser.