Merge "Remove unused openssl-devel dependency" into tizen
[platform/upstream/iotivity.git] / extlibs / gtest / SConscript
index d29c324..df306f4 100644 (file)
@@ -1,3 +1,4 @@
+# -*- mode: python; python-indent-offset: 4; indent-tabs-mode: nil -*-
 ##
 # 'googletest' script to check if Google Unit Test library is installed.
 # If not, get it and install it
@@ -5,6 +6,7 @@
 ##
 
 import os
+import shutil
 
 Import('env')
 
@@ -17,11 +19,30 @@ gtest_dir      = os.path.join(src_dir, 'extlibs', 'gtest', 'gtest-1.7.0')
 gtest_lib_dir = os.path.join(gtest_dir,'lib')
 gtest_dotlib_dir =  os.path.join(gtest_lib_dir, '.libs')
 gtest_zip_file = os.path.join(src_dir, 'extlibs', 'gtest', 'gtest-1.7.0.zip')
-gtest_url      = 'https://googletest.googlecode.com/files/gtest-1.7.0.zip'
+gtest_url = 'http://pkgs.fedoraproject.org/repo/pkgs/gtest/gtest-1.7.0.zip/2d6ec8ccdf5c46b05ba54a9fd1d130d7/gtest-1.7.0.zip'
 
 if target_os in targets_need_gtest:
        print '*** Checking for installation of google unit test 1.7.0 ***'
-       if not os.path.exists(os.path.join(gtest_dir, 'configure')):
+       env_lib_path = env.get('LIBPATH')
+       if gtest_lib_dir in env_lib_path:
+               print '*** Found google unit test, set environments ***'
+               gtest_env.AppendUnique(LIBPATH = [gtest_dotlib_dir])
+               gtest_env.PrependUnique(CPPPATH = [os.path.join(gtest_dir, 'include')])
+               gtest_env.AppendENVPath('LD_LIBRARY_PATH', gtest_dotlib_dir)
+               if 'g++' in gtest_env.get('CXX'):
+                       gtest_env.AppendUnique(CXXFLAGS = ['-std=c++0x'])
+                       gtest_env.AppendUnique(CXXFLAGS = ['-Wall'])
+                       if target_os not in ['android']:
+                               gtest_env.AppendUnique(CXXFLAGS = ['-pthread'])
+                               gtest_env.PrependUnique(LIBS = ['pthread'])
+               gtest_env.PrependUnique(LIBS = ['gtest', 'gtest_main'])
+               if target_os in ['windows']:
+                       gtest_env.AppendUnique(LINKFLAGS = ['/subsystem:CONSOLE'])
+               Return('gtest_env')
+       else:
+               print '*** Prepare to build google unit test 1.7.0 ***'
+               if os.path.exists(gtest_dir):
+                       shutil.rmtree(gtest_dir)
                # If the gtest zip file is not already present, download it
                if not os.path.exists(gtest_zip_file):
                        gtest_zip = gtest_env.Download(gtest_zip_file, gtest_url)
@@ -73,6 +94,7 @@ elif target_os in ['linux']:
                        # Run make on gtest
                        print 'Making google unit test'
                        gtest_env.Configure(gtest_dir, 'make')
+               env.AppendUnique(LIBPATH = [gtest_lib_dir])
 
 elif target_os == 'msys_nt':
        if os.path.exists(gtest_dir):
@@ -96,71 +118,18 @@ elif target_os == 'msys_nt':
                        gtest_env.Configure(gtest_dir, 'mv libgtest_main.a lib/.libs')
 
 elif target_os == 'windows':
-       if os.path.exists(gtest_dir):
-               if gtest_env.get('RELEASE'):
-                       output_dir = os.path.join(gtest_dir, 'Release') + os.sep
-               else:
-                       output_dir = os.path.join(gtest_dir, 'Debug') + os.sep
-
-               # Three parts to the gtest config string...
-               # 1. "Visual Studio" toolchain name.
-               # 2. VS Version + Year ("14 2015", "12 2013").
-               # 3. Target Architecture ("Win64", "Win32").
-               vs_version_year = ""
-               vs_target_arch  = ""
-               vs_num = env['MSVC_VERSION']
-               if "12.0" in vs_num:
-                       vs_version_year = "Visual Studio 12 2013"
-               elif "14.0" in vs_num:
-                       vs_version_year = "Visual Studio 14 2015"
-               else:
-                       print "Error: unknown Visual Studio version %s" % vs_num
-
-               vs_arch = env['TARGET_ARCH']
-               if "amd64" in vs_arch:
-                       vs_target_arch = "Win64"
-               elif "x86" in vs_arch:
-                       vs_target_arch = ""
-               else:
-                       print "Error: unknown Visual Studio target arch %s" % vs_arch
-
-               vs_target_string = vs_version_year + " " + vs_target_arch
-
-               # Exit if we didn't get a match for one of the above.
-               if not vs_version_year or not vs_target_arch:
-                       Exit(1)
-
-               if not gtest_env.WhereIs('cmake', gtest_env.get('PATH')):
-                       print '''*********************** Error ************************
-*                                                    *
-* Please make sure that CMake is in your System PATH *
-*                                                    *
-* You can download CMake from:                       *
-*            https://cmake.org/download/             *
-*                                                    *
-******************************************************
-'''
-                       Exit(1)
-
-               if not os.path.exists(gtest_lib_dir):
-                       # Create lib dir
-                       os.mkdir(gtest_lib_dir)
-                       os.mkdir(gtest_dotlib_dir)
-
-                       # Run configure on gtest
-                       print 'Configuring google unit test for compilation'
-                       gtest_env.Configure(gtest_dir, 'cmake . -G"' + vs_target_string + '" -Dgtest_force_shared_crt=ON')
-
-                       # Run make on gtest
-                       print 'Making google unit test'
-                       gtest_env.Configure(gtest_dir, 'msbuild gtest.vcxproj')
-                       gtest_env.Configure(gtest_dir, 'msbuild gtest_main.vcxproj')
-
-                       print 'Moving libraries to lib folder'
-                       gtest_env.Configure(gtest_dir, 'copy '+output_dir+'gtest.lib %s' % gtest_lib_dir)
-                       gtest_env.Configure(gtest_dir, 'move '+output_dir+'gtest.lib %s' % gtest_dotlib_dir )
-                       gtest_env.Configure(gtest_dir, 'copy '+output_dir+'gtest_main.lib %s' % gtest_lib_dir)
-                       gtest_env.Configure(gtest_dir, 'move '+output_dir+'gtest_main.lib %s' % gtest_dotlib_dir)
+       # Avoid building the same StaticLibrary in more than one environment, by using the
+       # IOTIVITY_GTEST_HAS_BEEN_BUILT environment variable
+       if not env.has_key('IOTIVITY_GTEST_HAS_BEEN_BUILT'):
+               gtest_env.Append(CPPPATH = [ gtest_dir ])
+               gtest = gtest_env.StaticLibrary(target = 'gtest', source = [ '%s/src/gtest-all.cc' % gtest_dir ])
+               gtest_main = gtest_env.StaticLibrary(target = 'gtest_main', source = [ '%s/src/gtest_main.cc' % gtest_dir ])
+               gtest_env.InstallTarget(gtest, 'gtest')
+               gtest_env.InstallTarget(gtest_main, 'gtest_main')
+
+               vars = Variables();
+               vars.AddVariables(('IOTIVITY_GTEST_HAS_BEEN_BUILT', '', '1'))
+               vars.Update(env)
 
 # Export flags once for all
 if target_os in targets_need_gtest:
@@ -176,5 +145,7 @@ if target_os in targets_need_gtest:
                        gtest_env.AppendUnique(CXXFLAGS = ['-pthread'])
                        gtest_env.PrependUnique(LIBS = ['pthread'])
        gtest_env.PrependUnique(LIBS = ['gtest', 'gtest_main'])
+       if target_os in ['windows']:
+               gtest_env.AppendUnique(LINKFLAGS = ['/subsystem:CONSOLE'])
 
 Return('gtest_env')