Browse Source

Deduce swig paths in ymake.conf

svidyuk 1 year ago
parent
commit
89f40072e9
2 changed files with 29 additions and 44 deletions
  1. 28 13
      build/conf/swig.conf
  2. 1 31
      build/ymake_conf.py

+ 28 - 13
build/conf/swig.conf

@@ -1,14 +1,36 @@
 USE_LOCAL_SWIG=no
+SWIG_TOOL=no
+SWIG_LIBRARY=no
+_SWIG_PYTHON_ADDINCLS=
+_SWIG_PERL_ADDINCLS=
+_SWIG_JNI_ADDINCLS=
 
 when ($USE_LOCAL_SWIG == "no") {
     _SWIG_TOOL=${tool:"contrib/tools/swig"}
-    _SWIG_LIBRARY=contrib/tools/swig/Lib
     _SWIG_LIBRARY_ABS=$ARCADIA_ROOT/$_SWIG_LIBRARY
+
+    _SWIG_LIBRARY=contrib/tools/swig/Lib
+    _SWIG_PYTHON_ADDINCLS=FOR swig ${_SWIG_LIBRARY}/python FOR swig ${_SWIG_LIBRARY}
+    _SWIG_PERL_ADDINCLS=FOR swig ${_SWIG_LIBRARY}/perl5 FOR swig ${_SWIG_LIBRARY}
+    _SWIG_JNI_ADDINCLS=FOR swig ${_SWIG_LIBRARY}/java FOR swig $_SWIG_LIBRARY
 }
 otherwise {
-    _SWIG_TOOL=$SWIG_TOOL
-    _SWIG_LIBRARY=$SWIG_LIBRARY
-    _SWIG_LIBRARY_ABS=$SWIG_LIBRARY
+    when ($SWIG_TOOL != "no") {
+        _SWIG_TOOL=$SWIG_TOOL
+    }
+    otherwise {
+        _SWIG_TOOL=${USE_LOCAL_SWIG}/bin/swig
+    }
+
+    when ($SWIG_LIBRARY != "no") {
+        _SWIG_LIBRARY_ABS=$SWIG_LIBRARY
+    }
+    elsewhen ($OS_WINDOWS == "yes") {
+        _SWIG_LIBRARY_ABS=${USE_LOCAL_SWIG}/bin/Lib
+    }
+    otherwise {
+        _SWIG_LIBRARY_ABS=${USE_LOCAL_SWIG}/share/swig
+    }
 }
 SWIG_IMPLICIT_INCLUDES = swig.swg go.swg java.swg perl5.swg python.swg
 
@@ -18,25 +40,18 @@ _SWIG_PEERDIR=$_SWIG_PYTHON_PEERDIR
 _SWIG_SEM_TO_MODULE_LINK=${output;hide;suf=.o:SRC}
 
 _SWIG_PYTHON_CMD=${_SWIG_TOOL} -module ${REALPRJNAME} -cpperraswarn -c++ -python -interface ${MODULE_PREFIX}${REALPRJNAME} -o ${output;noext;main;suf=_wrap.swg.cpp:SRC} ${output;noauto;add_to_outs;hide;tobindir;suf=.py:REALPRJNAME} -outdir ${BINDIR} ${pre=-I:_SWIG__INCLUDE} ${input:SRC} ${kv;hide:"p SW"} ${kv;hide:"pc yellow"}
-_SWIG_PYTHON_ADDINCLS=FOR swig ${_SWIG_LIBRARY}/python FOR swig ${_SWIG_LIBRARY}
 _SWIG_PYTHON_PEERDIR=
 
 _SWIG_PERL_CMD=${_SWIG_TOOL} -c++ -cpperraswarn -module ${REALPRJNAME} -shadow -perl -o ${output;noext;main;suf=_wrap.swg.cpp:SRC} ${output;noauto;add_to_outs;hide;tobindir;suf=.pm:REALPRJNAME} -outdir ${ARCADIA_BUILD_ROOT}/${MODDIR} ${pre=-I:_SWIG__INCLUDE} ${input:SRC} ${kv;hide:"p SW"} ${kv;hide:"pc yellow"}
-_SWIG_PERL_ADDINCLS=FOR swig ${_SWIG_LIBRARY}/perl5 FOR swig ${_SWIG_LIBRARY}
 _SWIG_PERL_PEERDIR=build/platform/perl
 
 _SWIG_JNI_CPP_CMD=$YMAKE_PYTHON3 ${input:"build/scripts/jni_swig.py"} --swig ${_SWIG_TOOL} --default-module ${nopath;noext:SRC} --src ${input:SRC} --out-header ${output;main;noext;suf=_wrap.swg.h:SRC} --package-by-file ru/yandex/${input;rootrel:SRC} -- ${pre=-I:_SWIG__INCLUDE} -o ${output;noext;suf=_wrap.swg.cpp:SRC} ${kv;hide:"p SW"} ${kv;hide:"pc yellow"}
 _SWIG_JNI_JAVA_CMD=$YMAKE_PYTHON3 ${input:"build/scripts/jni_swig.py"} --swig ${_SWIG_TOOL} --default-module ${nopath;noext:SRC} --src ${input:SRC} --package-by-file ru/yandex/${input;rootrel:SRC} --jsrc ${output;main;suf=.jsrc:SRC} -- ${pre=-I:_SWIG__INCLUDE} -o ${BINDIR}/unused.cpp ${kv;hide:"p SW"} ${kv;hide:"pc yellow"}
 _SWIG_JNI_CMD=$YMAKE_PYTHON3 ${input:"build/scripts/jni_swig.py"} --swig ${_SWIG_TOOL} --default-module ${nopath;noext:SRC} --src ${input:SRC} --out-header ${output;main;noext;suf=_wrap.swg.h:SRC} --package-by-file ru/yandex/${input;rootrel:SRC} --jsrc ${output;suf=.jsrc:SRC} -- ${pre=-I:_SWIG__INCLUDE} -o ${output;noext;suf=_wrap.swg.cpp:SRC} ${kv;hide:"p SW"} ${kv;hide:"pc yellow"}
-_SWIG_JNI_ADDINCLS=FOR swig ${_SWIG_LIBRARY}/java FOR swig $_SWIG_LIBRARY
 _SWIG_JNI_PEERDIR=contrib/libs/jdk
 
 REAL_SWIG_DLL_JAR_CMD=$GENERATE_VCS_JAVA_INFO_NODEP && ${cwd:ARCADIA_BUILD_ROOT} $YMAKE_PYTHON ${input:"build/scripts/build_dll_and_java.py"} $JAVA_SWIG_DELIM $REAL_LINK_DYN_LIB $JAVA_SWIG_DELIM $COMPILE_JAVA $JAVA_SWIG_DELIM $AUTO_INPUT $JAVA_SWIG_DELIM $TARGET $JAVA_SWIG_DELIM ${output;suf=.jar:REALPRJNAME} $JAVA_SWIG_DELIM ${output;suf=-sources.jar:REALPRJNAME} $JAVA_SWIG_DELIM $ARCADIA_BUILD_ROOT $ARCADIA_ROOT
 
-
-when ($USE_LOCAL_SWIG != "no") {
-    _SWIG_JNI_ADDINCLS=
-}
 when ($USE_SYSTEM_JDK == "yes" || $OS_ANDROID == "yes") {
     _SWIG_JNI_PEERDIR=
 }
@@ -48,7 +63,7 @@ when ($USE_SYSTEM_JDK == "yes" || $OS_ANDROID == "yes") {
 ### provides DstSubPrefix_swg python module.
 macro _SWIG_PYTHON_CPP(Src, DstSubPrefix) {
     .CMD=$_SWIG_TOOL -I$ARCADIA_BUILD_ROOT -I$ARCADIA_ROOT -I$_SWIG_LIBRARY_ABS/python -I$_SWIG_LIBRARY_ABS -c++ -python -module ${nopath:DstSubPrefix} -interface ${nopath;suf=_swg:DstSubPrefix} -o ${output;suf=.swg.cpp:DstSubPrefix} ${input:Src} ${output;noauto;hide;suf=.py:DstSubPrefix} ${kv;hide:"p SW"} ${kv;hide:"pc yellow"}
-    ADDINCL(FOR swig $_SWIG_LIBRARY/python FOR swig $_SWIG_LIBRARY)
+    .ADDINCL=$_SWIG_PYTHON_ADDINCLS
 }
 
 # tag:python-processing tag:internal
@@ -57,7 +72,7 @@ macro _SWIG_PYTHON_CPP(Src, DstSubPrefix) {
 ### Like _SWIG_PYTHON_CPP but generate DstSubPrefix_swg.c.
 macro _SWIG_PYTHON_C(Src, DstSubPrefix) {
     .CMD=$_SWIG_TOOL -I$ARCADIA_BUILD_ROOT -I$ARCADIA_ROOT -I$_SWIG_LIBRARY_ABS/python -I$_SWIG_LIBRARY_ABS -python -module ${nopath:DstSubPrefix} -interface ${nopath;suf=_swg:DstSubPrefix} -o ${output;suf=.swg.c:DstSubPrefix} ${input:Src} ${output;noauto;hide;suf=.py:DstSubPrefix} ${kv;hide:"p SW"} ${kv;hide:"pc yellow"}
-    ADDINCL(FOR swig $_SWIG_LIBRARY/python FOR swig $_SWIG_LIBRARY)
+    .ADDINCL=$_SWIG_PYTHON_ADDINCLS
 }
 
 _EXPLICIT_SWIG_JAVA_SOURCES=

+ 1 - 31
build/ymake_conf.py

@@ -466,7 +466,7 @@ class Options(object):
         self.toolchain_params = self.options.toolchain_params
 
         self.presets = parse_presets(self.options.presets)
-        userify_presets(self.presets, ('CFLAGS', 'CXXFLAGS', 'CONLYFLAGS', 'LDFLAGS', 'GO_COMPILE_FLAGS', 'GO_LINK_FLAGS', 'USE_LOCAL_SWIG', 'SWIG_TOOL', 'SWIG_LIBRARY'))
+        userify_presets(self.presets, ('CFLAGS', 'CXXFLAGS', 'CONLYFLAGS', 'LDFLAGS', 'GO_COMPILE_FLAGS', 'GO_LINK_FLAGS'))
 
     Instance = None
 
@@ -698,8 +698,6 @@ class Build(object):
         cuda.print_()
         CuDNN(cuda).print_()
 
-        print_swig_config()
-
         if self.ignore_local_files or host.is_windows or is_positive('NO_SVN_DEPENDS'):
             emit_with_ignore_comment('SVN_DEPENDS')
             emit_with_ignore_comment('SVN_DEPENDS_CACHE__NO_UID__')
@@ -2526,34 +2524,6 @@ class CuDNN(object):
             self.cudnn_version.emit()
 
 
-def print_swig_config():
-    def get_swig_tool():
-        tool = preset('USER_SWIG_TOOL')
-        if not tool:
-            tool = which('swig')
-            if not tool:
-                raise ConfigureError('SWIG_TOOL is not specified and "swig" is not found in PATH')
-        return os.path.abspath(tool)
-
-    def get_swig_library(tool):
-        library = preset('USER_SWIG_LIBRARY')
-        if not library:
-            library, code = get_stdout_and_code((tool, '-swiglib'))
-            if code != 0:
-                raise ConfigureError('SWIG_LIBRARY is not specified and "{} -swiglib" failed'.format(tool))
-            library = library.split('\n')[0]
-        return os.path.abspath(library)
-
-    use_local_swig = to_bool(preset('USER_USE_LOCAL_SWIG'), False) or bool(preset('USER_SWIG_TOOL'))
-    if use_local_swig:
-        tool = get_swig_tool()
-        library = get_swig_library(tool)
-
-        emit('USE_LOCAL_SWIG', True)
-        emit('SWIG_TOOL', tool)
-        emit('SWIG_LIBRARY', library)
-
-
 def main():
     options = opts()