forked from qt-creator/qt-creator
		
	
		
			
	
	
		
			80 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
		
		
			
		
	
	
			80 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
|   | # create_python_xy function will precompile the Python/lib/*.py files
 | ||
|  | # and create a zip file containing all the pyc files
 | ||
|  | function(create_python_xy PythonExe PythonZipFilePath)
 | ||
|  |   get_filename_component(python_lib_dir "${PythonExe}" DIRECTORY)
 | ||
|  |   get_filename_component(python_lib_dir "${python_lib_dir}/Lib" ABSOLUTE)
 | ||
|  |   foreach(dir collections encodings importlib json urllib)
 | ||
|  |       file(COPY ${python_lib_dir}/${dir} | ||
|  |           DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/python-lib
 | ||
|  |           FILES_MATCHING PATTERN "*.py"
 | ||
|  |       )
 | ||
|  |   endforeach()
 | ||
|  |   file(GLOB python_lib_files "${python_lib_dir}/*.py")
 | ||
|  |   foreach(not_needed | ||
|  |     aifc.py              imghdr.py        socket.py
 | ||
|  |     antigravity.py       imp.py           socketserver.py
 | ||
|  |     argparse.py          ipaddress.py     ssl.py
 | ||
|  |     asynchat.py          locale.py        statistics.py
 | ||
|  |     asyncore.py          lzma.py          string.py
 | ||
|  |     bdb.py               mailbox.py       stringprep.py
 | ||
|  |     binhex.py            mailcap.py       sunau.py
 | ||
|  |     bisect.py            mimetypes.py     symbol.py
 | ||
|  |     bz2.py               modulefinder.py  symtable.py
 | ||
|  |     calendar.py          netrc.py         tabnanny.py
 | ||
|  |     cgi.py               nntplib.py       tarfile.py
 | ||
|  |     cgitb.py             nturl2path.py    telnetlib.py
 | ||
|  |     chunk.py             numbers.py       tempfile.py
 | ||
|  |     cmd.py               optparse.py      textwrap.py
 | ||
|  |     code.py              pathlib.py       this.py
 | ||
|  |     codeop.py            pdb.py           timeit.py
 | ||
|  |     colorsys.py          pickle.py        trace.py
 | ||
|  |     compileall.py        pickletools.py   tracemalloc.py
 | ||
|  |     configparser.py      pipes.py         tty.py
 | ||
|  |     contextvars.py       plistlib.py      turtle.py
 | ||
|  |     cProfile.py          poplib.py        typing.py
 | ||
|  |     crypt.py             pprint.py        uu.py
 | ||
|  |     csv.py               profile.py       uuid.py
 | ||
|  |     dataclasses.py       pstats.py        wave.py
 | ||
|  |     datetime.py          pty.py           webbrowser.py
 | ||
|  |     decimal.py           pyclbr.py        xdrlib.py
 | ||
|  |     difflib.py           py_compile.py    zipapp.py
 | ||
|  |     doctest.py           queue.py         zipfile.py
 | ||
|  |     dummy_threading.py   quopri.py        zipimport.py
 | ||
|  |     filecmp.py           random.py        _compat_pickle.py
 | ||
|  |     fileinput.py         rlcompleter.py   _compression.py
 | ||
|  |     formatter.py         runpy.py         _dummy_thread.py
 | ||
|  |     fractions.py         sched.py         _markupbase.py
 | ||
|  |     ftplib.py            secrets.py       _osx_support.py
 | ||
|  |     getopt.py            selectors.py     _pydecimal.py
 | ||
|  |     getpass.py           shelve.py        _pyio.py
 | ||
|  |     gettext.py           shlex.py         _py_abc.py
 | ||
|  |     gzip.py              shutil.py        _strptime.py
 | ||
|  |     hashlib.py           smtpd.py         _threading_local.py
 | ||
|  |     hmac.py              smtplib.py       __future__.py
 | ||
|  |     imaplib.py           sndhdr.py        __phello__.foo.py
 | ||
|  |     )
 | ||
|  |     list(FIND python_lib_files "${python_lib_dir}/${not_needed}" found_not_needed)
 | ||
|  |     if (NOT found_not_needed STREQUAL "-1")
 | ||
|  |       list(REMOVE_AT python_lib_files ${found_not_needed})
 | ||
|  |     endif()
 | ||
|  |   endforeach()
 | ||
|  | 
 | ||
|  |   file(COPY ${python_lib_files} DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/python-lib")
 | ||
|  | 
 | ||
|  |   set(ENV{PYTHONOPTIMIZE} "2")
 | ||
|  |   execute_process( | ||
|  |     COMMAND "${PythonExe}" -OO -m compileall "${CMAKE_CURRENT_BINARY_DIR}/python-lib" -b
 | ||
|  |   )
 | ||
|  | 
 | ||
|  |   file(GLOB_RECURSE python_lib_files "${CMAKE_CURRENT_BINARY_DIR}/python-lib/*.py")
 | ||
|  |   file(REMOVE ${python_lib_files})
 | ||
|  | 
 | ||
|  |   file(GLOB_RECURSE python_lib_files LIST_DIRECTORIES ON "${CMAKE_CURRENT_BINARY_DIR}/python-lib/*/__pycache__$")
 | ||
|  |   file(REMOVE_RECURSE ${python_lib_files})
 | ||
|  | 
 | ||
|  |   execute_process( | ||
|  |     COMMAND ${CMAKE_COMMAND} -E tar cf "${PythonZipFilePath}" . --format=zip
 | ||
|  |     WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/python-lib/"
 | ||
|  |   )
 | ||
|  | endfunction()
 |