CMakeLists.txt 6.47 KB
Newer Older
1
# Copy any changed stdlib files to the destination:
2 3
file(GLOB_RECURSE STDLIB_SRCS Lib/*.py)
file(GLOB_RECURSE STD_INCLUDES Include/*.h)
4
set(STDLIB_TARGETS "")
5 6 7
foreach(STDLIB_FILE ${STDLIB_SRCS})
    file(RELATIVE_PATH FN_REL ${CMAKE_SOURCE_DIR}/from_cpython/Lib ${STDLIB_FILE})
    set(TARGET ${CMAKE_BINARY_DIR}/lib/python2.7/${FN_REL})
8 9 10 11

    add_custom_command(OUTPUT ${TARGET} COMMAND
                       ${CMAKE_COMMAND} -E copy_if_different ${STDLIB_FILE} ${TARGET}
                       DEPENDS ${STDLIB_FILE}
12
                       COMMENT "Copying Python stdlib ${FN_REL}"
13 14
                       )
    set(STDLIB_TARGETS ${STDLIB_TARGETS} ${TARGET})
Kevin Modzelewski's avatar
Kevin Modzelewski committed
15 16

    get_filename_component(DIR ${FN_REL} DIRECTORY)
17 18 19 20 21 22 23 24 25
    install(FILES ${STDLIB_FILE} DESTINATION lib/python2.7/${DIR})
endforeach(STDLIB_FILE)
foreach(STDLIB_FILE ${STD_INCLUDES})
    file(RELATIVE_PATH FN_REL ${CMAKE_SOURCE_DIR}/from_cpython/Include ${STDLIB_FILE})
    set(TARGET ${CMAKE_BINARY_DIR}/include/python2.7/${FN_REL})

    add_custom_command(OUTPUT ${TARGET} COMMAND
                       ${CMAKE_COMMAND} -E copy_if_different ${STDLIB_FILE} ${TARGET}
                       DEPENDS ${STDLIB_FILE}
26
                       COMMENT "Copying Python header ${FN_REL}"
27 28 29 30 31
                       )
    set(STDLIB_TARGETS ${STDLIB_TARGETS} ${TARGET})

    get_filename_component(DIR ${FN_REL} DIRECTORY)
    install(FILES ${STDLIB_FILE} DESTINATION include/python2.7/${DIR})
32 33 34
endforeach(STDLIB_FILE)
add_custom_target(copy_stdlib ALL DEPENDS ${STDLIB_TARGETS})

35
# compile specified files in from_cpython/Modules
36
file(GLOB_RECURSE STDMODULE_SRCS Modules
Marius Wachtler's avatar
Marius Wachtler committed
37
    _bisectmodule.c
38 39 40 41 42
    _codecsmodule.c
    _collectionsmodule.c
    _csv.c
    _functoolsmodule.c
    _iomodule.c
43 44 45
    _math.c
    _randommodule.c
    _sre.c
46
    _ssl.c
47 48
    _struct.c
    _weakref.c
49 50
    arraymodule.c
    binascii.c
51 52
    bufferedio.c
    bytesio.c
53
    cache.c
54
    cmathmodule.c
55
    connection.c
56
    cStringIO.c
57
    cursor.c
58 59 60 61
    datetimemodule.c
    errnomodule.c
    fcntlmodule.c
    fileio.c
Boxiang Sun's avatar
Boxiang Sun committed
62
    future_builtins.c
63
    gcmodule.c
64 65 66 67 68 69
    getpath.c
    iobase.c
    itertoolsmodule.c
    mathmodule.c
    md5.c
    md5module.c
70 71
    microprotocols.c
    module.c
72 73
    operator.c
    posixmodule.c
74
    prepare_protocol.c
75 76
    pwdmodule.c
    resource.c
77
    row.c
78 79 80 81 82 83
    selectmodule.c
    sha256module.c
    sha512module.c
    shamodule.c
    signalmodule.c
    socketmodule.c
84
    statement.c
85
    stringio.c
86
    stropmodule.c
87
    textio.c
88
    threadmodule.c
89 90
    timemodule.c
    unicodedata.c
91
    util.c
92 93
    zipimport.c
    zlibmodule.c
94
    )
Daniel Agar's avatar
Daniel Agar committed
95

96
# compile specified files in from_cpython/Objects
97
file(GLOB_RECURSE STDOBJECT_SRCS Objects
98
    abstract.c
99 100 101
    bufferobject.c
    bytearrayobject.c
    bytes_methods.c
102
    capsule.c
Kevin Modzelewski's avatar
Kevin Modzelewski committed
103
    cobject.c
104
    complexobject.c
105
    descrobject.c
106
    dictobject.c
107
    errors.c
108
    exceptions.c
109
    floatobject.c
110
    fileobject.c
111
    import.c
112
    iterobject.c
113
    listobject.c
114
    memoryobject.c
Kevin Modzelewski's avatar
Kevin Modzelewski committed
115
    obmalloc.c
116
    sliceobject.c
117 118
    stringobject.c
    structseq.c
119
    traceback.c
120
    unicodectype.c
121
    unicodeobject.c
122 123
    weakrefobject.c
    )
124

125
# compile specified files in from_cpython/Python
126
file(GLOB_RECURSE STDPYTHON_SRCS Python
127 128
    asdl.c
    ast.c
129 130 131
    dtoa.c
    formatter_string.c
    formatter_unicode.c
132
    getargs.c
133
    graminit.c
134
    marshal.c
135
    mystrtoul.c
136
    pyarena.c
137 138
    pyctype.c
    pystrtod.c
139
    Python-ast.c
140
    random.c
141
    structmember.c
142
    _warnings.c
143
    )
Daniel Agar's avatar
Daniel Agar committed
144

145
# compile specified files in from_cpython/Parser
Kevin Modzelewski's avatar
Kevin Modzelewski committed
146
file(GLOB_RECURSE STDPARSER_SRCS Parser
147 148
    acceler.c
    grammar1.c
Kevin Modzelewski's avatar
Kevin Modzelewski committed
149
    myreadline.c
150 151 152 153
    node.c
    parser.c
    parsetok.c
    tokenizer.c
Kevin Modzelewski's avatar
Kevin Modzelewski committed
154 155
    )

156
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-missing-field-initializers -Wno-tautological-compare -Wno-type-limits -Wno-unused-result -Wno-strict-aliasing -DPy_BUILD_CORE")
Kevin Modzelewski's avatar
Kevin Modzelewski committed
157
add_library(FROM_CPYTHON OBJECT ${STDMODULE_SRCS} ${STDOBJECT_SRCS} ${STDPYTHON_SRCS} ${STDPARSER_SRCS})
158
add_dependencies(FROM_CPYTHON copy_stdlib)
159

Kevin Modzelewski's avatar
Kevin Modzelewski committed
160
set(STDMODULES
161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
    ${CMAKE_BINARY_DIR}/lib/python2.7/lib-dynload/bz2.pyston.so
    ${CMAKE_BINARY_DIR}/lib/python2.7/lib-dynload/cmath.pyston.so
    ${CMAKE_BINARY_DIR}/lib/python2.7/lib-dynload/cPickle.pyston.so
    ${CMAKE_BINARY_DIR}/lib/python2.7/lib-dynload/_ctypes.pyston.so
    ${CMAKE_BINARY_DIR}/lib/python2.7/lib-dynload/_curses.pyston.so
    ${CMAKE_BINARY_DIR}/lib/python2.7/lib-dynload/_elementtree.pyston.so
    ${CMAKE_BINARY_DIR}/lib/python2.7/lib-dynload/future_builtins.pyston.so
    ${CMAKE_BINARY_DIR}/lib/python2.7/lib-dynload/grp.pyston.so
    ${CMAKE_BINARY_DIR}/lib/python2.7/lib-dynload/_locale.pyston.so
    ${CMAKE_BINARY_DIR}/lib/python2.7/lib-dynload/mmap.pyston.so
    ${CMAKE_BINARY_DIR}/lib/python2.7/lib-dynload/_multiprocessing.pyston.so
    ${CMAKE_BINARY_DIR}/lib/python2.7/lib-dynload/parser.pyston.so
    ${CMAKE_BINARY_DIR}/lib/python2.7/lib-dynload/pyexpat.pyston.so
    ${CMAKE_BINARY_DIR}/lib/python2.7/lib-dynload/readline.pyston.so
    ${CMAKE_BINARY_DIR}/lib/python2.7/lib-dynload/termios.pyston.so
Kevin Modzelewski's avatar
Kevin Modzelewski committed
176 177 178
)

add_custom_command(OUTPUT ${STDMODULES}
179
    COMMAND ${CMAKE_BINARY_DIR}/pyston setup.py build --build-lib ${CMAKE_BINARY_DIR}/lib/python2.7/lib-dynload
180 181 182 183 184 185 186
                   DEPENDS
                       pyston
                       copy_stdlib
                       copy_libpyston
                       Modules/_multiprocessing/multiprocessing.c
                       Modules/_multiprocessing/semaphore.c
                       Modules/_multiprocessing/socket_connection.c
187 188 189 190 191
                       Modules/_ctypes/_ctypes.c
                       Modules/_ctypes/callbacks.c
                       Modules/_ctypes/callproc.c
                       Modules/_ctypes/stgdict.c
                       Modules/_ctypes/cfield.c
Marius Wachtler's avatar
Marius Wachtler committed
192 193 194 195 196 197
                       Modules/expat/xmlparse.c
                       Modules/expat/xmlrole.c
                       Modules/expat/xmltok.c
                       Modules/expat/xmltok_impl.c
                       Modules/expat/xmltok_ns.c
                       Modules/pyexpat.c
Boxiang Sun's avatar
Boxiang Sun committed
198
                       Modules/future_builtins.c
199
                       Modules/_elementtree.c
200 201
		       Modules/bz2module.c
		       Modules/grpmodule.c
202
		       Modules/readline.c
203 204
		       Modules/termios.c
		       Modules/_cursesmodule.c
Kevin Modzelewski's avatar
Kevin Modzelewski committed
205
		       Modules/mmapmodule.c
Marius Wachtler's avatar
Marius Wachtler committed
206
		       Modules/_localemodule.c
Marius Wachtler's avatar
Marius Wachtler committed
207
		       Modules/cPickle.c
Marius Wachtler's avatar
Marius Wachtler committed
208
                       Modules/parsermodule.c
209
                   WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
210
add_custom_target(sharedmods ALL DEPENDS ${CMAKE_BINARY_DIR}/lib/python2.7/lib-dynload/_multiprocessing.pyston.so)
Kevin Modzelewski's avatar
Kevin Modzelewski committed
211

212
install(FILES ${STDMODULES} DESTINATION lib/python2.7/lib-dynload)