@@ -44,6 +44,8 @@ def get_platform():
4444 return sys .platform
4545host_platform = get_platform ()
4646
47+ VXWORKS = ('vxworks' in host_platform )
48+
4749# Were we compiled --with-pydebug or with #define Py_DEBUG?
4850COMPILED_WITH_PYDEBUG = ('--with-pydebug' in sysconfig .get_config_var ("CONFIG_ARGS" ))
4951
@@ -509,13 +511,14 @@ def add_multiarch_paths(self):
509511 finally :
510512 os .unlink (tmpfile )
511513
512- def add_gcc_paths (self ):
513- gcc = sysconfig .get_config_var ('CC' )
514- tmpfile = os .path .join (self .build_temp , 'gccpaths ' )
514+ def add_cross_compiling_paths (self ):
515+ cc = sysconfig .get_config_var ('CC' )
516+ tmpfile = os .path .join (self .build_temp , 'ccpaths ' )
515517 if not os .path .exists (self .build_temp ):
516518 os .makedirs (self .build_temp )
517- ret = os .system ('%s -E -v - </dev/null 2>%s 1>/dev/null' % (gcc , tmpfile ))
519+ ret = os .system ('%s -E -v - </dev/null 2>%s 1>/dev/null' % (cc , tmpfile ))
518520 is_gcc = False
521+ is_clang = False
519522 in_incdirs = False
520523 inc_dirs = []
521524 lib_dirs = []
@@ -525,17 +528,19 @@ def add_gcc_paths(self):
525528 for line in fp .readlines ():
526529 if line .startswith ("gcc version" ):
527530 is_gcc = True
531+ elif line .startswith ("clang version" ):
532+ is_clang = True
528533 elif line .startswith ("#include <...>" ):
529534 in_incdirs = True
530535 elif line .startswith ("End of search list" ):
531536 in_incdirs = False
532- elif is_gcc and line .startswith ("LIBRARY_PATH" ):
537+ elif ( is_gcc or is_clang ) and line .startswith ("LIBRARY_PATH" ):
533538 for d in line .strip ().split ("=" )[1 ].split (":" ):
534539 d = os .path .normpath (d )
535540 if '/gcc/' not in d :
536541 add_dir_to_list (self .compiler .library_dirs ,
537542 d )
538- elif is_gcc and in_incdirs and '/gcc/' not in line :
543+ elif ( is_gcc or is_clang ) and in_incdirs and '/gcc/' not in line and '/clang /' not in line :
539544 add_dir_to_list (self .compiler .include_dirs ,
540545 line .strip ())
541546 finally :
@@ -550,7 +555,7 @@ def detect_modules(self):
550555 add_dir_to_list (self .compiler .include_dirs , '/usr/local/include' )
551556 # only change this for cross builds for 3.3, issues on Mageia
552557 if cross_compiling :
553- self .add_gcc_paths ()
558+ self .add_cross_compiling_paths ()
554559 self .add_multiarch_paths ()
555560
556561 # Add paths specified in the environment variables LDFLAGS and
@@ -722,7 +727,8 @@ def detect_modules(self):
722727 # pwd(3)
723728 exts .append ( Extension ('pwd' , ['pwdmodule.c' ]) )
724729 # grp(3)
725- exts .append ( Extension ('grp' , ['grpmodule.c' ]) )
730+ if not VXWORKS :
731+ exts .append ( Extension ('grp' , ['grpmodule.c' ]) )
726732 # spwd, shadow passwords
727733 if (config_h_vars .get ('HAVE_GETSPNAM' , False ) or
728734 config_h_vars .get ('HAVE_GETSPENT' , False )):
@@ -859,7 +865,12 @@ def detect_modules(self):
859865 libs = ['crypt' ]
860866 else :
861867 libs = []
862- exts .append ( Extension ('_crypt' , ['_cryptmodule.c' ], libraries = libs ) )
868+
869+ if not VXWORKS :
870+ exts .append ( Extension ('_crypt' , ['_cryptmodule.c' ], libraries = libs ) )
871+ elif self .compiler .find_library_file (lib_dirs , 'OPENSSL' ):
872+ libs = ['OPENSSL' ]
873+ exts .append ( Extension ('_crypt' , ['_cryptmodule.c' ], libraries = libs ) )
863874
864875 # CSV files
865876 exts .append ( Extension ('_csv' , ['_csv.c' ]) )
@@ -868,8 +879,14 @@ def detect_modules(self):
868879 exts .append ( Extension ('_posixsubprocess' , ['_posixsubprocess.c' ]) )
869880
870881 # socket(2)
871- exts .append ( Extension ('_socket' , ['socketmodule.c' ],
872- depends = ['socketmodule.h' ]) )
882+ if not VXWORKS :
883+ exts .append ( Extension ('_socket' , ['socketmodule.c' ],
884+ depends = ['socketmodule.h' ]) )
885+ elif self .compiler .find_library_file (lib_dirs , 'net' ):
886+ libs = ['net' ]
887+ exts .append ( Extension ('_socket' , ['socketmodule.c' ],
888+ depends = ['socketmodule.h' ], libraries = libs ) )
889+
873890 # Detect SSL support for the socket module (via _ssl)
874891 ssl_ext , hashlib_ext = self ._detect_openssl (inc_dirs , lib_dirs )
875892 if ssl_ext is not None :
@@ -1319,9 +1336,10 @@ class db_found(Exception): pass
13191336
13201337 # Unix-only modules
13211338 if host_platform != 'win32' :
1322- # Steen Lumholt's termios module
1323- exts .append ( Extension ('termios' , ['termios.c' ]) )
1324- # Jeremy Hylton's rlimit interface
1339+ if not VXWORKS :
1340+ # Steen Lumholt's termios module
1341+ exts .append ( Extension ('termios' , ['termios.c' ]) )
1342+ # Jeremy Hylton's rlimit interface
13251343 exts .append ( Extension ('resource' , ['resource.c' ]) )
13261344 else :
13271345 missing .extend (['resource' , 'termios' ])
0 commit comments