[mapguide-commits] r9289 - in sandbox/jng/cmake_v2: . BuildTools/WebTools/IMake Common/Foundation Common/Geometry Common/MapGuideCommon Common/MdfModel Common/MdfParser Common/PlatformBase Common/Renderers Common/Stylization Desktop/MgDesktop Desktop/UnitTest Server/src/Common/Base Server/src/Common/Cache Server/src/Common/Manager Server/src/Common/Thread Server/src/Core Server/src/Gws/GwsCommon Server/src/Gws/GwsQueryEngine Server/src/Gws/GwsResource Server/src/Services/Drawing Server/src/Services/Feature Server/src/Services/Kml Server/src/Services/Mapping Server/src/Services/Profiling Server/src/Services/Rendering Server/src/Services/Resource Server/src/Services/ServerAdmin Server/src/Services/Site Server/src/Services/Tile Server/src/UnitTesting Web/src/ApacheAgent Web/src/HttpHandler Web/src/JavaApi Web/src/JavaApiEx Web/src/PhpApi Web/src/WebApp Web/src/WebSupport cmake/modules

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Mon Jan 8 01:24:32 PST 2018


Author: jng
Date: 2018-01-08 01:24:32 -0800 (Mon, 08 Jan 2018)
New Revision: 9289

Added:
   sandbox/jng/cmake_v2/cmake/modules/FindASan.cmake
   sandbox/jng/cmake_v2/cmake/modules/FindMSan.cmake
   sandbox/jng/cmake_v2/cmake/modules/FindSanitizers.cmake
   sandbox/jng/cmake_v2/cmake/modules/FindTCLAP.cmake
   sandbox/jng/cmake_v2/cmake/modules/FindTSan.cmake
   sandbox/jng/cmake_v2/cmake/modules/FindUBSan.cmake
   sandbox/jng/cmake_v2/cmake/modules/asan-wrapper
   sandbox/jng/cmake_v2/cmake/modules/sanitize-helpers.cmake
Modified:
   sandbox/jng/cmake_v2/BuildTools/WebTools/IMake/CMakeLists.txt
   sandbox/jng/cmake_v2/BuildTools/WebTools/IMake/IMake.cpp
   sandbox/jng/cmake_v2/CMakeLists.txt
   sandbox/jng/cmake_v2/Common/Foundation/CMakeLists.txt
   sandbox/jng/cmake_v2/Common/Geometry/CMakeLists.txt
   sandbox/jng/cmake_v2/Common/MapGuideCommon/CMakeLists.txt
   sandbox/jng/cmake_v2/Common/MdfModel/CMakeLists.txt
   sandbox/jng/cmake_v2/Common/MdfParser/CMakeLists.txt
   sandbox/jng/cmake_v2/Common/PlatformBase/CMakeLists.txt
   sandbox/jng/cmake_v2/Common/Renderers/CMakeLists.txt
   sandbox/jng/cmake_v2/Common/Stylization/CMakeLists.txt
   sandbox/jng/cmake_v2/Desktop/MgDesktop/CMakeLists.txt
   sandbox/jng/cmake_v2/Desktop/UnitTest/CMakeLists.txt
   sandbox/jng/cmake_v2/Server/src/Common/Base/CMakeLists.txt
   sandbox/jng/cmake_v2/Server/src/Common/Cache/CMakeLists.txt
   sandbox/jng/cmake_v2/Server/src/Common/Manager/CMakeLists.txt
   sandbox/jng/cmake_v2/Server/src/Common/Thread/CMakeLists.txt
   sandbox/jng/cmake_v2/Server/src/Core/CMakeLists.txt
   sandbox/jng/cmake_v2/Server/src/Gws/GwsCommon/CMakeLists.txt
   sandbox/jng/cmake_v2/Server/src/Gws/GwsQueryEngine/CMakeLists.txt
   sandbox/jng/cmake_v2/Server/src/Gws/GwsResource/CMakeLists.txt
   sandbox/jng/cmake_v2/Server/src/Services/Drawing/CMakeLists.txt
   sandbox/jng/cmake_v2/Server/src/Services/Feature/CMakeLists.txt
   sandbox/jng/cmake_v2/Server/src/Services/Kml/CMakeLists.txt
   sandbox/jng/cmake_v2/Server/src/Services/Mapping/CMakeLists.txt
   sandbox/jng/cmake_v2/Server/src/Services/Profiling/CMakeLists.txt
   sandbox/jng/cmake_v2/Server/src/Services/Rendering/CMakeLists.txt
   sandbox/jng/cmake_v2/Server/src/Services/Resource/CMakeLists.txt
   sandbox/jng/cmake_v2/Server/src/Services/ServerAdmin/CMakeLists.txt
   sandbox/jng/cmake_v2/Server/src/Services/Site/CMakeLists.txt
   sandbox/jng/cmake_v2/Server/src/Services/Tile/CMakeLists.txt
   sandbox/jng/cmake_v2/Server/src/UnitTesting/CMakeLists.txt
   sandbox/jng/cmake_v2/Web/src/ApacheAgent/CMakeLists.txt
   sandbox/jng/cmake_v2/Web/src/HttpHandler/CMakeLists.txt
   sandbox/jng/cmake_v2/Web/src/JavaApi/CMakeLists.txt
   sandbox/jng/cmake_v2/Web/src/JavaApiEx/CMakeLists.txt
   sandbox/jng/cmake_v2/Web/src/PhpApi/CMakeLists.txt
   sandbox/jng/cmake_v2/Web/src/WebApp/CMakeLists.txt
   sandbox/jng/cmake_v2/Web/src/WebSupport/CMakeLists.txt
   sandbox/jng/cmake_v2/cmake_build.sh
Log:
Add ASAN (AddressSanitizer) support and fix IMake usage on Linux

Modified: sandbox/jng/cmake_v2/BuildTools/WebTools/IMake/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/BuildTools/WebTools/IMake/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/BuildTools/WebTools/IMake/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -1,5 +1,7 @@
 project(imake)
-include_directories(${ACE_INCLUDE_DIR})
+include_directories(${ACE_INCLUDE_DIR}
+    ${TCLAP_INCLUDE_DIR}
+)
 
 set(IMake_SRCS
     IMake.cpp

Modified: sandbox/jng/cmake_v2/BuildTools/WebTools/IMake/IMake.cpp
===================================================================
--- sandbox/jng/cmake_v2/BuildTools/WebTools/IMake/IMake.cpp	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/BuildTools/WebTools/IMake/IMake.cpp	2018-01-08 09:24:32 UTC (rev 9289)
@@ -1861,15 +1861,6 @@
 {
     TCLAP::CmdLineOutput* cmdOutput = cmd.getOutput();
     cmdOutput->usage(cmd);
-    /*printf("\nUsage:");
-    printf("\nIMake -p parameterFile -l lang [-o generation_path_or_folder] [-r header_resolution_root]");
-    printf("\n      parameterFile: XML description of generation parameters\n");
-    printf("\n      lang: Target language (PHP, C# or Java). Case-sensitive\n");
-    printf("\n      generation_path_or_folder: Do not generate SWIG.  Generate constant definitions.");
-    printf("\n                                 For PHP and C#, pathname of the constant file.");
-    printf("\n                                 For Java, folder where the constant files are created");
-    printf("\n      header_resolution_root: If specified, headers in the parameter file will be resolved relative to the specified path");
-    printf("\n");*/
     exit(1);
 }
 
@@ -1882,8 +1873,6 @@
     {
         string msg = "IMake - SWIG Interface generator";
         TCLAP::CmdLine cmd(msg, ' ', version);
-        //static const ACE_TCHAR options[] = ACE_TEXT ("p:l:o:r:t");  
-        //ACE_Get_Opt cmd_opts (argc, argv, options);
 
         TCLAP::ValueArg<std::string> argInputFile("p", "param-file", "The path to the input parameter file", true, "Constants.xml", "string");
         TCLAP::ValueArg<std::string> argLanguage("l", "language", "The language to generate for", true, "PHP|C#|Java", "string");
@@ -1932,69 +1921,6 @@
         outDir = argOutput.getValue();
         relRoot = argRelRoot.getValue();
 
-        /*
-        int option;
-        while ((option = cmd_opts ()) != EOF)
-        {
-            const ACE_TCHAR* arg = cmd_opts.opt_arg();
-            const char* sArg = ACE_TEXT_ALWAYS_CHAR(arg);
-            if (verbose)
-                printf("Found option: %c\n", (char)option);
-            switch (option) 
-            {
-                case 't':
-                    {
-                        translateMode = true;
-                    }
-                    break;
-                case 'p':
-                    {
-                        pFile = sArg;
-                        if (verbose)
-                            printf("Read value: %s\n", sArg);
-                    }
-                    break;
-                case 'l':
-                    {
-                        if (verbose)
-                            printf("Read value: %s\n", sArg);
-                        if(!strcmp(sArg, "PHP"))
-                        {
-                            language = php;
-                        }
-                        else if(!strcmp(sArg, "C#"))
-                        {
-                            language = csharp;
-                            rootObjectMethods["Equals"] = 1;
-                            rootObjectMethods["GetHashCode"] = 1;
-                            rootObjectMethods["GetType"] = 1;
-                            rootObjectMethods["ReferenceEquals"] = 1;
-                            rootObjectMethods["ToString"] = 1;
-                        }
-                        else if(!strcmp(sArg, "Java"))
-                        {
-                            language = java;
-                        }
-                    }
-                    break;
-                case 'o':
-                    {
-                        outDir = sArg;
-                        if (verbose)
-                            printf("Read value: %s\n", sArg);
-                    }
-                    break;
-                case 'r':
-                    {
-                        relRoot = sArg;
-                        if (verbose)
-                            printf("Read value: %s\n", sArg);
-                    }
-                    break;
-            }
-        }
-        */
-
         //Basic validation
         if (language == unknown)
         {
@@ -2080,41 +2006,4 @@
         std::cerr << "error: " << e.error() << " for arg " << e.argId() << std::endl;
     }
     return 0;
-
-    /*
-    if(argc < 3)
-        usage();
-
-    if (argc > 4)
-        usage();
-
-    translateMode = false;
-    language = unknown;
-
-    if(!strcmp(argv[2], "PHP"))
-        language = php;
-    else if(!strcmp(argv[2], "C#"))
-    {
-        language = csharp;
-        rootObjectMethods["Equals"] = 1;
-        rootObjectMethods["GetHashCode"] = 1;
-        rootObjectMethods["GetType"] = 1;
-        rootObjectMethods["ReferenceEquals"] = 1;
-        rootObjectMethods["ToString"] = 1;
-    }
-    else if(!strcmp(argv[2], "Java"))
-        language = java;
-    else
-        usage();
-
-    if(argc == 4)
-    {
-        translateMode = true;
-        target = argv[3];
-    }
-
-    createInterfaceFile(argv[1]);
-
-    return 0;
-    */
 }

Modified: sandbox/jng/cmake_v2/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -45,14 +45,17 @@
 set(MG_HTTPD_PORT 8008)
 set(MG_TOMCAT_PORT 8009)
 
-set(MG_OEM_CSMAP_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/Oem/CsMap/Include")
-set(MG_OEM_AGG_DIR "${CMAKE_CURRENT_SOURCE_DIR}/Oem/agg-2.4")
+set(MG_OEM_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/Oem")
+set(MG_OEM_ROOT_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/Oem")
+
+set(MG_OEM_CSMAP_INCLUDE_DIR "${MG_OEM_ROOT_DIR}/CsMap/Include")
+set(MG_OEM_AGG_DIR "${MG_OEM_ROOT_DIR}/agg-2.4")
 set(MG_OEM_AGG_INCLUDE_DIR "${MG_OEM_AGG_DIR}/include")
 set(MG_OEM_AGG_FREETYPE_DIR "${MG_OEM_AGG_DIR}/font_freetype")
 set(MG_OEM_AGG_SOURCE_DIR "${MG_OEM_AGG_DIR}/src")
-set(MG_OEM_HTTPD_SOURCE_DIR, "${CMAKE_CURRENT_SOURCE_DIR}/Oem/LinuxApt/httpd-2.4.18")
+set(MG_OEM_HTTPD_SOURCE_DIR, "${MG_OEM_ROOT_DIR}/LinuxApt/httpd-2.4.18")
 
-set(MG_OEM_DWF_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/Oem/DWFTK/develop/global/src")
+set(MG_OEM_DWF_INCLUDE_DIR "${MG_OEM_ROOT_DIR}/DWFTK/develop/global/src")
 set(MG_COMMON_DIR "${CMAKE_CURRENT_SOURCE_DIR}/Common")
 set(MG_SERVER_COMMON_DIR "${CMAKE_CURRENT_SOURCE_DIR}/Server/src/Common")
 set(MG_SERVER_SERVICES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/Server/src/Services")
@@ -103,6 +106,7 @@
     endif (CMAKE_BUILD_TYPE MATCHES DEBUG)
 endif(CMAKE_COMPILER_IS_GNUCXX)
 
+find_package(Sanitizers)
 find_package(GEOS REQUIRED)
 find_package(ACE REQUIRED)
 find_package(XercesC REQUIRED)
@@ -112,12 +116,13 @@
 find_package(PNG REQUIRED)
 find_package(FDO REQUIRED)
 find_package(CppUnit REQUIRED)
+find_package(TCLAP REQUIRED)
 find_package(DbXmlInternal REQUIRED)
 
 # Set internal tool paths
 set(IMAKE_TOOL ${CMAKE_CURRENT_BINARY_DIR}/BuildTools/WebTools/IMake/IMake)
-set(SWIG_TOOL ${CMAKE_CURRENT_BINARY_DIR}/Oem/SWIGEx/swig)
-set(SWIG_LIB_PATH ${CMAKE_CURRENT_BINARY_DIR}/Oem/SWIGEx/Lib)
+set(SWIG_TOOL ${MG_OEM_ROOT_BUILD_DIR}/SWIGEx/swig)
+set(SWIG_LIB_PATH ${MG_OEM_ROOT_BUILD_DIR}/SWIGEx/Lib)
 
 # Set common commands.
 set(MOVE_COMMAND "mv")

Modified: sandbox/jng/cmake_v2/Common/Foundation/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Common/Foundation/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Common/Foundation/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -13,6 +13,7 @@
 )
 
 add_library(MgFoundation${MG_VERSION_SUFFIX} SHARED ${MgFoundation_SRCS})
+add_sanitizers(MgFoundation${MG_VERSION_SUFFIX})
 
 target_link_libraries(MgFoundation${MG_VERSION_SUFFIX}
     ${ACE_LIBRARY}

Modified: sandbox/jng/cmake_v2/Common/Geometry/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Common/Geometry/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Common/Geometry/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -64,6 +64,7 @@
 )
 
 add_library(MgGeometry${MG_VERSION_SUFFIX} SHARED ${MgGeometry_SRCS})
+add_sanitizers(MgGeometry${MG_VERSION_SUFFIX})
 
 target_link_libraries(MgGeometry${MG_VERSION_SUFFIX}
     MgFoundation${MG_VERSION_SUFFIX}

Modified: sandbox/jng/cmake_v2/Common/MapGuideCommon/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Common/MapGuideCommon/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Common/MapGuideCommon/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -17,6 +17,7 @@
 )
 
 add_library(MgMapGuideCommon${MG_VERSION_SUFFIX} SHARED ${MgMapGuideCommon_SRCS})
+add_sanitizers(MgMapGuideCommon${MG_VERSION_SUFFIX})
 
 target_link_libraries(MgMapGuideCommon${MG_VERSION_SUFFIX}
     ${ACE_LIBRARY}

Modified: sandbox/jng/cmake_v2/Common/MdfModel/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Common/MdfModel/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Common/MdfModel/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -118,6 +118,7 @@
 )
 
 add_library(MgMdfModel${MG_VERSION_SUFFIX} SHARED ${MgMdfModel_SRCS})
+add_sanitizers(MgMdfModel${MG_VERSION_SUFFIX})
 
 install( TARGETS MgMdfModel${MG_VERSION_SUFFIX} DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${MG_COMPONENT} )
 install_symlink( ${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/libMgMdfModel${MG_VERSION_SUFFIX}.so libMgMdfModel.so ${MG_COMPONENT} )
\ No newline at end of file

Modified: sandbox/jng/cmake_v2/Common/MdfParser/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Common/MdfParser/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Common/MdfParser/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -119,6 +119,7 @@
 )
 
 add_library(MgMdfParser${MG_VERSION_SUFFIX} SHARED ${MgMdfParser_SRCS})
+add_sanitizers(MgMdfParser${MG_VERSION_SUFFIX})
 
 target_link_libraries(MgMdfParser${MG_VERSION_SUFFIX}
     ${XERCESC_LIBRARIES}

Modified: sandbox/jng/cmake_v2/Common/PlatformBase/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Common/PlatformBase/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Common/PlatformBase/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -15,6 +15,7 @@
 )
 
 add_library(MgPlatformBase${MG_VERSION_SUFFIX} SHARED ${MgPlatformBase_SRCS})
+add_sanitizers(MgPlatformBase${MG_VERSION_SUFFIX})
 
 target_link_libraries(MgPlatformBase${MG_VERSION_SUFFIX}
     ${ACE_LIBRARY}

Modified: sandbox/jng/cmake_v2/Common/Renderers/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Common/Renderers/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Common/Renderers/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -55,6 +55,7 @@
 add_definitions(-DDWFTK_BUILD_EXPAT)
 
 add_library(MgRenderers${MG_VERSION_SUFFIX} SHARED ${MgRenderers_SRCS})
+add_sanitizers(MgRenderers${MG_VERSION_SUFFIX})
 
 target_link_libraries(MgRenderers${MG_VERSION_SUFFIX}
     ${GD_LIBRARY}

Modified: sandbox/jng/cmake_v2/Common/Stylization/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Common/Stylization/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Common/Stylization/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -98,6 +98,7 @@
 )
 
 add_library(MgStylization${MG_VERSION_SUFFIX} SHARED ${MgStylization_SRCS})
+add_sanitizers(MgStylization${MG_VERSION_SUFFIX})
 
 target_link_libraries(MgStylization${MG_VERSION_SUFFIX}
     ${FDO_EXPRESSIONENGINE_LIBRARY}

Modified: sandbox/jng/cmake_v2/Desktop/MgDesktop/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Desktop/MgDesktop/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Desktop/MgDesktop/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -30,6 +30,7 @@
 add_definitions(-DDWFCORE_STATIC -DDWFTK_STATIC -DDWFTK_USE_DWFCORE_ZLIB -DDWFTK_BUILD_EXPAT -DWHIP_STATIC_LIB)
 
 add_library(MgDesktop${MG_VERSION_SUFFIX} SHARED ${MgDesktop_SRCS})
+add_sanitizers(MgDesktop${MG_VERSION_SUFFIX})
 install(TARGETS MgDesktop${MG_VERSION_SUFFIX} DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${MG_COMPONENT})
 install_symlink(${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/libMgDesktop${MG_VERSION_SUFFIX}.so libMgDesktop.so ${MG_COMPONENT})
 

Modified: sandbox/jng/cmake_v2/Desktop/UnitTest/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Desktop/UnitTest/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Desktop/UnitTest/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -30,6 +30,7 @@
 )
 
 add_executable(MgDesktopUnitTest ${MgDesktopUnitTest_SRCS})
+add_sanitizers(MgDesktopUnitTest)
 set_target_properties( MgDesktopUnitTest
     PROPERTIES OUTPUT_NAME "UnitTest" )
 

Modified: sandbox/jng/cmake_v2/Server/src/Common/Base/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Server/src/Common/Base/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Server/src/Common/Base/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -14,6 +14,7 @@
 )
 
 add_library(MgServerBase${MG_VERSION_SUFFIX} SHARED ${MgServerBase_SRCS})
+add_sanitizers(MgServerBase${MG_VERSION_SUFFIX})
 install(TARGETS MgServerBase${MG_VERSION_SUFFIX} DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${MG_COMPONENT})
 install_symlink(${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/libMgServerBase${MG_VERSION_SUFFIX}.so libMgServerBase.so ${MG_COMPONENT})
 

Modified: sandbox/jng/cmake_v2/Server/src/Common/Cache/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Server/src/Common/Cache/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Server/src/Common/Cache/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -11,6 +11,7 @@
 )
 
 add_library(MgServerCache${MG_VERSION_SUFFIX} SHARED ${MgServerCache_SRCS})
+add_sanitizers(MgServerCache${MG_VERSIO_SUFFIX})
 install(TARGETS MgServerCache${MG_VERSION_SUFFIX} DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${MG_COMPONENT})
 install_symlink(${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/libMgServerCache${MG_VERSION_SUFFIX}.so libMgServerCache.so ${MG_COMPONENT})
 

Modified: sandbox/jng/cmake_v2/Server/src/Common/Manager/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Server/src/Common/Manager/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Server/src/Common/Manager/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -28,6 +28,7 @@
 )
 
 add_library(MgServerManager${MG_VERSION_SUFFIX} SHARED ${MgServerManager_SRCS})
+add_sanitizers(MgServerManager${MG_VERSION_SUFFIX})
 install(TARGETS MgServerManager${MG_VERSION_SUFFIX} DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${MG_COMPONENT})
 install_symlink(${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/libMgServerManager${MG_VERSION_SUFFIX}.so libMgServerManager.so ${MG_COMPONENT})
 

Modified: sandbox/jng/cmake_v2/Server/src/Common/Thread/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Server/src/Common/Thread/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Server/src/Common/Thread/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -12,6 +12,7 @@
 )
 
 add_library(MgServerThread${MG_VERSION_SUFFIX} SHARED ${MgServerThread_SRCS})
+add_sanitizers(MgServerThread${MG_VERSION_SUFFIX})
 install(TARGETS MgServerThread${MG_VERSION_SUFFIX} DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${MG_COMPONENT})
 install_symlink(${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/libMgServerThread${MG_VERSION_SUFFIX}.so libMgServerThread.so ${MG_COMPONENT})
 

Modified: sandbox/jng/cmake_v2/Server/src/Core/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Server/src/Core/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Server/src/Core/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -42,6 +42,7 @@
 )
 
 add_executable(mgserver ${mgserver_SRCS})
+add_sanitizers(mgserver)
 target_link_libraries(mgserver
     ${ACE_LIBRARY}
     ${DB_CXX_LIBRARY}

Modified: sandbox/jng/cmake_v2/Server/src/Gws/GwsCommon/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Server/src/Gws/GwsCommon/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Server/src/Gws/GwsCommon/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -24,5 +24,6 @@
 )
 
 add_library(MgGwsCommon${MG_VERSION_SUFFIX} SHARED ${GwsCommon_SRCS})
+add_sanitizers(MgGwsCommon${MG_VERSION_SUFFIX})
 install(TARGETS MgGwsCommon${MG_VERSION_SUFFIX} DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${MG_COMPONENT})
 install_symlink(${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/libMgGwsCommon${MG_VERSION_SUFFIX}.so libMgGwsCommon.so ${MG_COMPONENT})
\ No newline at end of file

Modified: sandbox/jng/cmake_v2/Server/src/Gws/GwsQueryEngine/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Server/src/Gws/GwsQueryEngine/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Server/src/Gws/GwsQueryEngine/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -50,5 +50,6 @@
 )
 
 add_library(MgGwsQueryEngine${MG_VERSION_SUFFIX} SHARED ${GwsQueryEngine_SRCS})
+add_sanitizers(MgGwsQueryEngine${MG_VERSION_SUFFIX})
 install(TARGETS MgGwsQueryEngine${MG_VERSION_SUFFIX} DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${MG_COMPONENT})
 install_symlink(${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/libMgGwsQueryEngine${MG_VERSION_SUFFIX}.so libMgGwsQueryEngine.so ${MG_COMPONENT})
\ No newline at end of file

Modified: sandbox/jng/cmake_v2/Server/src/Gws/GwsResource/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Server/src/Gws/GwsResource/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Server/src/Gws/GwsResource/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -5,5 +5,6 @@
 )
 
 add_library(MgGwsResource${MG_VERSION_SUFFIX} SHARED ${GwsResource_SRCS})
+add_sanitizers(MgGwsResource${MG_VERSION_SUFFIX})
 install(TARGETS MgGwsResource${MG_VERSION_SUFFIX} DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${MG_COMPONENT})
 install_symlink(${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/libMgGwsResource${MG_VERSION_SUFFIX}.so libMgGwsResource.so ${MG_COMPONENT})
\ No newline at end of file

Modified: sandbox/jng/cmake_v2/Server/src/Services/Drawing/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Server/src/Services/Drawing/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Server/src/Services/Drawing/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -20,5 +20,6 @@
 )
 
 add_library(MgServerDrawingService${MG_VERSION_SUFFIX} SHARED ${MgServerDrawingService_SRCS})
+add_sanitizers(MgServerDrawingService${MG_VERSION_SUFFIX})
 install(TARGETS MgServerDrawingService${MG_VERSION_SUFFIX} DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${MG_COMPONENT})
 install_symlink(${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/libMgServerDrawingService${MG_VERSION_SUFFIX}.so libMgServerDrawingService.so ${MG_COMPONENT})
\ No newline at end of file

Modified: sandbox/jng/cmake_v2/Server/src/Services/Feature/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Server/src/Services/Feature/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Server/src/Services/Feature/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -25,6 +25,7 @@
 )
 
 add_library(MgServerFeatureService${MG_VERSION_SUFFIX} SHARED ${MgServerFeatureService_SRCS})
+add_sanitizers(MgServerFeatureService${MG_VERSION_SUFFIX})
 install(TARGETS MgServerFeatureService${MG_VERSION_SUFFIX} DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${MG_COMPONENT})
 install_symlink(${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/libMgServerFeatureService${MG_VERSION_SUFFIX}.so libMgServerFeatureService.so ${MG_COMPONENT})
 

Modified: sandbox/jng/cmake_v2/Server/src/Services/Kml/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Server/src/Services/Kml/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Server/src/Services/Kml/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -27,5 +27,6 @@
 )
 
 add_library(MgServerKmlService${MG_VERSION_SUFFIX} SHARED ${MgServerKmlService_SRCS})
+add_sanitizers(MgServerKmlService${MG_VERSION_SUFFIX})
 install(TARGETS MgServerKmlService${MG_VERSION_SUFFIX} DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${MG_COMPONENT})
 install_symlink(${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/libMgServerKmlService${MG_VERSION_SUFFIX}.so libMgServerKmlService.so ${MG_COMPONENT})
\ No newline at end of file

Modified: sandbox/jng/cmake_v2/Server/src/Services/Mapping/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Server/src/Services/Mapping/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Server/src/Services/Mapping/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -26,5 +26,6 @@
 )
 
 add_library(MgServerMappingService${MG_VERSION_SUFFIX} SHARED ${MgServerMappingService_SRCS})
+add_sanitizers(MgServerMappingService${MG_VERSION_SUFFIX})
 install(TARGETS MgServerMappingService${MG_VERSION_SUFFIX} DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${MG_COMPONENT})
 install_symlink(${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/libMgServerMappingService${MG_VERSION_SUFFIX}.so libMgServerMappingService.so ${MG_COMPONENT})
\ No newline at end of file

Modified: sandbox/jng/cmake_v2/Server/src/Services/Profiling/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Server/src/Services/Profiling/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Server/src/Services/Profiling/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -19,5 +19,6 @@
 )
 
 add_library(MgServerProfilingService${MG_VERSION_SUFFIX} SHARED ${MgServerProfilingService_SRCS})
+add_sanitizers(MgServerProfilingService${MG_VERSION_SUFFIX})
 install(TARGETS MgServerProfilingService${MG_VERSION_SUFFIX} DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${MG_COMPONENT})
 install_symlink(${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/libMgServerProfilingService${MG_VERSION_SUFFIX}.so libMgServerProfilingService.so ${MG_COMPONENT})
\ No newline at end of file

Modified: sandbox/jng/cmake_v2/Server/src/Services/Rendering/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Server/src/Services/Rendering/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Server/src/Services/Rendering/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -22,5 +22,6 @@
 )
 
 add_library(MgServerRenderingService${MG_VERSION_SUFFIX} SHARED ${MgServerRenderingService_SRCS})
+add_sanitizers(MgServerRenderingService${MG_VERSION_SUFFIX})
 install(TARGETS MgServerRenderingService${MG_VERSION_SUFFIX} DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${MG_COMPONENT})
 install_symlink(${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/libMgServerRenderingService${MG_VERSION_SUFFIX}.so libMgServerRenderingService.so ${MG_COMPONENT})
\ No newline at end of file

Modified: sandbox/jng/cmake_v2/Server/src/Services/Resource/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Server/src/Services/Resource/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Server/src/Services/Resource/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -24,6 +24,7 @@
 )
 
 add_library(MgServerResourceService${MG_VERSION_SUFFIX} SHARED ${MgServerResourceService_SRCS})
+add_sanitizers(MgServerResourceService${MG_VERSION_SUFFIX})
 target_link_libraries(MgServerResourceService${MG_VERSION_SUFFIX}
     MgFoundation${MG_VERSION_SUFFIX}
     MgGeometry${MG_VERSION_SUFFIX}

Modified: sandbox/jng/cmake_v2/Server/src/Services/ServerAdmin/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Server/src/Services/ServerAdmin/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Server/src/Services/ServerAdmin/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -14,5 +14,6 @@
 )
 
 add_library(MgServerAdminService${MG_VERSION_SUFFIX} SHARED ${MgServerAdminService_SRCS})
+add_sanitizers(MgServerAdminService${MG_VERSION_SUFFIX})
 install(TARGETS MgServerAdminService${MG_VERSION_SUFFIX} DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${MG_COMPONENT})
 install_symlink(${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/libMgServerAdminService${MG_VERSION_SUFFIX}.so libMgServerAdminService.so ${MG_COMPONENT})
\ No newline at end of file

Modified: sandbox/jng/cmake_v2/Server/src/Services/Site/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Server/src/Services/Site/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Server/src/Services/Site/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -17,5 +17,6 @@
 )
 
 add_library(MgServerSiteService${MG_VERSION_SUFFIX} SHARED ${MgServerSiteService_SRCS})
+add_sanitizers(MgServerSiteService${MG_VERSION_SUFFIX})
 install(TARGETS MgServerSiteService${MG_VERSION_SUFFIX} DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${MG_COMPONENT})
 install_symlink(${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/libMgServerSiteService${MG_VERSION_SUFFIX}.so libMgServerSiteService.so ${MG_COMPONENT})
\ No newline at end of file

Modified: sandbox/jng/cmake_v2/Server/src/Services/Tile/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Server/src/Services/Tile/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Server/src/Services/Tile/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -16,5 +16,6 @@
 )
 
 add_library(MgServerTileService${MG_VERSION_SUFFIX} SHARED ${MgServerTileService_SRCS})
+add_sanitizers(MgServerTileService${MG_VERSION_SUFFIX})
 install(TARGETS MgServerTileService${MG_VERSION_SUFFIX} DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${MG_COMPONENT})
 install_symlink(${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/libMgServerTileService${MG_VERSION_SUFFIX}.so libMgServerTileService.so ${MG_COMPONENT})
\ No newline at end of file

Modified: sandbox/jng/cmake_v2/Server/src/UnitTesting/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Server/src/UnitTesting/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Server/src/UnitTesting/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -45,6 +45,7 @@
 )
 
 add_library(MgUnitTesting${MG_VERSION_SUFFIX} SHARED ${MgUnitTesting_SRCS})
+add_sanitizers(MgUnitTesting${MG_VERSION_SUFFIX})
 install(TARGETS MgUnitTesting${MG_VERSION_SUFFIX} DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${MG_COMPONENT})
 install_symlink(${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/libMgUnitTesting${MG_VERSION_SUFFIX}.so libMgUnitTesting.so ${MG_COMPONENT})
 

Modified: sandbox/jng/cmake_v2/Web/src/ApacheAgent/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Web/src/ApacheAgent/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Web/src/ApacheAgent/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -31,6 +31,7 @@
 )
 
 add_library(mod_mgmapagent SHARED ${mod_mgmapagent_SRCS})
+add_sanitizers(mod_mgmapagent)
 add_dependencies(mod_mgmapagent httpd)
 
 target_link_libraries(mod_mgmapagent

Modified: sandbox/jng/cmake_v2/Web/src/HttpHandler/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Web/src/HttpHandler/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Web/src/HttpHandler/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -15,6 +15,7 @@
 )
 
 add_library(MgHttpHandler${MG_VERSION_SUFFIX} SHARED ${MgHttpHandler_SRCS})
+add_sanitizers(MgHttpHandler${MG_VERSION_SUFFIX})
 install(TARGETS MgHttpHandler${MG_VERSION_SUFFIX} DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${MG_COMPONENT})
 install_symlink(${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/libMgHttpHandler${MG_VERSION_SUFFIX}.so libMgHttpHandler.so ${MG_COMPONENT})
 

Modified: sandbox/jng/cmake_v2/Web/src/JavaApi/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Web/src/JavaApi/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Web/src/JavaApi/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -28,7 +28,6 @@
             -l Java
             -r ${CMAKE_CURRENT_SOURCE_DIR}
             -o ${CMAKE_CURRENT_BINARY_DIR}
-            -i ${CMAKE_CURRENT_BINARY_DIR}
     COMMAND ${CMAKE_COMMAND} -E copy
             ${CMAKE_CURRENT_BINARY_DIR}/java.i
             ${CMAKE_CURRENT_BINARY_DIR}/language.i
@@ -60,6 +59,7 @@
 )
 
 add_library(MapGuideJavaApi${MG_VERSION_SUFFIX} SHARED ${MapGuideJavaApi_SRCS})
+add_sanitizers(MapGuideJavaApi${MG_VERSION_SUFFIX})
 add_dependencies(MapGuideJavaApi${MG_VERSION_SUFFIX} swig IMake)
 install(TARGETS MapGuideJavaApi${MG_VERSION_SUFFIX} DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${MG_COMPONENT})
 install_symlink(${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/libMapGuideJavaApi${MG_VERSION_SUFFIX}.so libMapGuideJavaApi.so ${MG_COMPONENT})

Modified: sandbox/jng/cmake_v2/Web/src/JavaApiEx/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Web/src/JavaApiEx/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Web/src/JavaApiEx/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -28,7 +28,6 @@
             -l Java
             -r ${CMAKE_CURRENT_SOURCE_DIR}
             -o ${CMAKE_CURRENT_BINARY_DIR}
-            -i ${CMAKE_CURRENT_BINARY_DIR}
     COMMAND ${CMAKE_COMMAND} -E copy
             ${CMAKE_CURRENT_BINARY_DIR}/java.i
             ${CMAKE_CURRENT_BINARY_DIR}/language.i
@@ -61,6 +60,7 @@
 )
 
 add_library(MapGuideJavaApiEx${MG_VERSION_SUFFIX} SHARED ${MapGuideJavaApiEx_SRCS})
+add_sanitizers(MapGuideJavaApiEx${MG_VERSION_SUFFIX})
 add_dependencies(MapGuideJavaApiEx${MG_VERSION_SUFFIX} swig IMake)
 install(TARGETS MapGuideJavaApiEx${MG_VERSION_SUFFIX} DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${MG_COMPONENT})
 install_symlink(${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/libMapGuideJavaApiEx${MG_VERSION_SUFFIX}.so libMapGuideJavaApiEx.so ${MG_COMPONENT})

Modified: sandbox/jng/cmake_v2/Web/src/PhpApi/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Web/src/PhpApi/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Web/src/PhpApi/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -35,7 +35,6 @@
             -l PHP
             -r ${CMAKE_CURRENT_SOURCE_DIR}
             -o ${CMAKE_CURRENT_BINARY_DIR}
-            -i ${CMAKE_CURRENT_BINARY_DIR}
     COMMAND ${CMAKE_COMMAND} -E copy
             ${CMAKE_CURRENT_BINARY_DIR}/php.i
             ${CMAKE_CURRENT_BINARY_DIR}/language.i
@@ -56,6 +55,7 @@
 )
 
 add_library(php_MapGuideApi${MG_VERSION_SUFFIX} SHARED ${php_MapGuideApi_SRCS})
+add_sanitizers(php_MapGuideApi${MG_VERSION_SUFFIX})
 add_dependencies(php_MapGuideApi${MG_VERSION_SUFFIX} swig IMake php)
 install(TARGETS php_MapGuideApi${MG_VERSION_SUFFIX} DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${MG_COMPONENT})
 install_symlink(${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/libphp_MapGuideApi${MG_VERSION_SUFFIX}.so libphp_MapGuideApi.so ${MG_COMPONENT})

Modified: sandbox/jng/cmake_v2/Web/src/WebApp/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Web/src/WebApp/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Web/src/WebApp/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -39,6 +39,7 @@
 )
 
 add_library(MgWebApp${MG_VERSION_SUFFIX} SHARED ${MgWebApp_SRCS})
+add_sanitizers(MgWebApp${MG_VERSION_SUFFIX})
 install(TARGETS MgWebApp${MG_VERSION_SUFFIX} DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${MG_COMPONENT})
 install_symlink(${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/libMgWebApp${MG_VERSION_SUFFIX}.so libMgWebApp.so ${MG_COMPONENT})
 

Modified: sandbox/jng/cmake_v2/Web/src/WebSupport/CMakeLists.txt
===================================================================
--- sandbox/jng/cmake_v2/Web/src/WebSupport/CMakeLists.txt	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/Web/src/WebSupport/CMakeLists.txt	2018-01-08 09:24:32 UTC (rev 9289)
@@ -11,6 +11,7 @@
 )
 
 add_library(MgWebSupport${MG_VERSION_SUFFIX} SHARED ${MgWebSupport_SRCS})
+add_sanitizers(MgWebSupport${MG_VERSION_SUFFIX})
 install(TARGETS MgWebSupport${MG_VERSION_SUFFIX} DESTINATION ${LIB_INSTALL_DIR} COMPONENT ${MG_COMPONENT})
 install_symlink(${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/libMgWebSupport${MG_VERSION_SUFFIX}.so libMgWebSupport.so ${MG_COMPONENT})
 

Added: sandbox/jng/cmake_v2/cmake/modules/FindASan.cmake
===================================================================
--- sandbox/jng/cmake_v2/cmake/modules/FindASan.cmake	                        (rev 0)
+++ sandbox/jng/cmake_v2/cmake/modules/FindASan.cmake	2018-01-08 09:24:32 UTC (rev 9289)
@@ -0,0 +1,59 @@
+# The MIT License (MIT)
+#
+# Copyright (c)
+#   2013 Matthew Arsenault
+#   2015-2016 RWTH Aachen University, Federal Republic of Germany
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+option(SANITIZE_ADDRESS "Enable AddressSanitizer for sanitized targets." Off)
+
+set(FLAG_CANDIDATES
+    # Clang 3.2+ use this version. The no-omit-frame-pointer option is optional.
+    "-g -fsanitize=address -fno-omit-frame-pointer"
+    "-g -fsanitize=address"
+
+    # Older deprecated flag for ASan
+    "-g -faddress-sanitizer"
+)
+
+
+if (SANITIZE_ADDRESS AND (SANITIZE_THREAD OR SANITIZE_MEMORY))
+    message(FATAL_ERROR "AddressSanitizer is not compatible with "
+        "ThreadSanitizer or MemorySanitizer.")
+endif ()
+
+
+include(sanitize-helpers)
+
+if (SANITIZE_ADDRESS)
+    sanitizer_check_compiler_flags("${FLAG_CANDIDATES}" "AddressSanitizer"
+        "ASan")
+
+    find_program(ASan_WRAPPER "asan-wrapper" PATHS ${CMAKE_MODULE_PATH})
+	mark_as_advanced(ASan_WRAPPER)
+endif ()
+
+function (add_sanitize_address TARGET)
+    if (NOT SANITIZE_ADDRESS)
+        return()
+    endif ()
+
+    sanitizer_add_flags(${TARGET} "AddressSanitizer" "ASan")
+endfunction ()

Added: sandbox/jng/cmake_v2/cmake/modules/FindMSan.cmake
===================================================================
--- sandbox/jng/cmake_v2/cmake/modules/FindMSan.cmake	                        (rev 0)
+++ sandbox/jng/cmake_v2/cmake/modules/FindMSan.cmake	2018-01-08 09:24:32 UTC (rev 9289)
@@ -0,0 +1,57 @@
+# The MIT License (MIT)
+#
+# Copyright (c)
+#   2013 Matthew Arsenault
+#   2015-2016 RWTH Aachen University, Federal Republic of Germany
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+option(SANITIZE_MEMORY "Enable MemorySanitizer for sanitized targets." Off)
+
+set(FLAG_CANDIDATES
+    "-g -fsanitize=memory"
+)
+
+
+include(sanitize-helpers)
+
+if (SANITIZE_MEMORY)
+    if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
+        message(WARNING "MemorySanitizer disabled for target ${TARGET} because "
+            "MemorySanitizer is supported for Linux systems only.")
+        set(SANITIZE_MEMORY Off CACHE BOOL
+            "Enable MemorySanitizer for sanitized targets." FORCE)
+    elseif (NOT ${CMAKE_SIZEOF_VOID_P} EQUAL 8)
+        message(WARNING "MemorySanitizer disabled for target ${TARGET} because "
+            "MemorySanitizer is supported for 64bit systems only.")
+        set(SANITIZE_MEMORY Off CACHE BOOL
+            "Enable MemorySanitizer for sanitized targets." FORCE)
+    else ()
+        sanitizer_check_compiler_flags("${FLAG_CANDIDATES}" "MemorySanitizer"
+            "MSan")
+    endif ()
+endif ()
+
+function (add_sanitize_memory TARGET)
+    if (NOT SANITIZE_MEMORY)
+        return()
+    endif ()
+
+    sanitizer_add_flags(${TARGET} "MemorySanitizer" "MSan")
+endfunction ()

Added: sandbox/jng/cmake_v2/cmake/modules/FindSanitizers.cmake
===================================================================
--- sandbox/jng/cmake_v2/cmake/modules/FindSanitizers.cmake	                        (rev 0)
+++ sandbox/jng/cmake_v2/cmake/modules/FindSanitizers.cmake	2018-01-08 09:24:32 UTC (rev 9289)
@@ -0,0 +1,87 @@
+# The MIT License (MIT)
+#
+# Copyright (c)
+#   2013 Matthew Arsenault
+#   2015-2016 RWTH Aachen University, Federal Republic of Germany
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+# If any of the used compiler is a GNU compiler, add a second option to static
+# link against the sanitizers.
+option(SANITIZE_LINK_STATIC "Try to link static against sanitizers." Off)
+
+
+
+
+set(FIND_QUIETLY_FLAG "")
+if (DEFINED Sanitizers_FIND_QUIETLY)
+    set(FIND_QUIETLY_FLAG "QUIET")
+endif ()
+
+find_package(ASan ${FIND_QUIETLY_FLAG})
+find_package(TSan ${FIND_QUIETLY_FLAG})
+find_package(MSan ${FIND_QUIETLY_FLAG})
+find_package(UBSan ${FIND_QUIETLY_FLAG})
+
+
+
+
+function(sanitizer_add_blacklist_file FILE)
+    if(NOT IS_ABSOLUTE ${FILE})
+        set(FILE "${CMAKE_CURRENT_SOURCE_DIR}/${FILE}")
+    endif()
+    get_filename_component(FILE "${FILE}" REALPATH)
+
+    sanitizer_check_compiler_flags("-fsanitize-blacklist=${FILE}"
+        "SanitizerBlacklist" "SanBlist")
+endfunction()
+
+function(add_sanitizers ...)
+    # If no sanitizer is enabled, return immediately.
+    if (NOT (SANITIZE_ADDRESS OR SANITIZE_MEMORY OR SANITIZE_THREAD OR
+        SANITIZE_UNDEFINED))
+        return()
+    endif ()
+
+    foreach (TARGET ${ARGV})
+        # Check if this target will be compiled by exactly one compiler. Other-
+        # wise sanitizers can't be used and a warning should be printed once.
+        sanitizer_target_compilers(${TARGET} TARGET_COMPILER)
+        list(LENGTH TARGET_COMPILER NUM_COMPILERS)
+        if (NUM_COMPILERS GREATER 1)
+            message(WARNING "Can't use any sanitizers for target ${TARGET}, "
+                    "because it will be compiled by incompatible compilers. "
+                    "Target will be compiled without sanitizers.")
+            return()
+
+        # If the target is compiled by no known compiler, ignore it.
+        elseif (NUM_COMPILERS EQUAL 0)
+            message(WARNING "Can't use any sanitizers for target ${TARGET}, "
+                    "because it uses an unknown compiler. Target will be "
+                    "compiled without sanitizers.")
+            return()
+        endif ()
+
+        # Add sanitizers for target.
+        add_sanitize_address(${TARGET})
+        add_sanitize_thread(${TARGET})
+        add_sanitize_memory(${TARGET})
+        add_sanitize_undefined(${TARGET})
+	endforeach ()
+endfunction(add_sanitizers)

Added: sandbox/jng/cmake_v2/cmake/modules/FindTCLAP.cmake
===================================================================
--- sandbox/jng/cmake_v2/cmake/modules/FindTCLAP.cmake	                        (rev 0)
+++ sandbox/jng/cmake_v2/cmake/modules/FindTCLAP.cmake	2018-01-08 09:24:32 UTC (rev 9289)
@@ -0,0 +1,23 @@
+# - Find TCLAP
+# Find the headers for the TCLAP command-line parser library
+# This module defines
+#  TCLAP_INCLUDE_DIR, where to find TCLAP headers
+
+find_path(TCLAP_INCLUDE_DIR 
+    NAMES "tclap/CmdLine.h"
+    PATHS 
+        /usr/include
+        ${MG_OEM_ROOT_DIR}/tclap-1.2.2/include)
+
+include(FindPackageHandleStandardArgs)
+
+# handle the QUIETLY and REQUIRED arguments and set TCLAP_FOUND to TRUE if 
+# all listed variables are TRUE
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(TCLAP DEFAULT_MSG TCLAP_INCLUDE_DIR)
+
+if (TCLAP_FOUND)
+   message(STATUS "Found TCLAP: ${TCLAP_INCLUDE_DIR}")
+endif (TCLAP_FOUND)
+
+mark_as_advanced(TCLAP_INCLUDE_DIR)
+

Added: sandbox/jng/cmake_v2/cmake/modules/FindTSan.cmake
===================================================================
--- sandbox/jng/cmake_v2/cmake/modules/FindTSan.cmake	                        (rev 0)
+++ sandbox/jng/cmake_v2/cmake/modules/FindTSan.cmake	2018-01-08 09:24:32 UTC (rev 9289)
@@ -0,0 +1,65 @@
+# The MIT License (MIT)
+#
+# Copyright (c)
+#   2013 Matthew Arsenault
+#   2015-2016 RWTH Aachen University, Federal Republic of Germany
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+option(SANITIZE_THREAD "Enable ThreadSanitizer for sanitized targets." Off)
+
+set(FLAG_CANDIDATES
+    "-g -fsanitize=thread"
+)
+
+
+# ThreadSanitizer is not compatible with MemorySanitizer.
+if (SANITIZE_THREAD AND SANITIZE_MEMORY)
+    message(FATAL_ERROR "ThreadSanitizer is not compatible with "
+        "MemorySanitizer.")
+endif ()
+
+
+include(sanitize-helpers)
+
+if (SANITIZE_THREAD)
+  if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Linux" AND
+      NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
+        message(WARNING "ThreadSanitizer disabled for target ${TARGET} because "
+          "ThreadSanitizer is supported for Linux systems and macOS only.")
+        set(SANITIZE_THREAD Off CACHE BOOL
+            "Enable ThreadSanitizer for sanitized targets." FORCE)
+    elseif (NOT ${CMAKE_SIZEOF_VOID_P} EQUAL 8)
+        message(WARNING "ThreadSanitizer disabled for target ${TARGET} because "
+            "ThreadSanitizer is supported for 64bit systems only.")
+        set(SANITIZE_THREAD Off CACHE BOOL
+            "Enable ThreadSanitizer for sanitized targets." FORCE)
+    else ()
+        sanitizer_check_compiler_flags("${FLAG_CANDIDATES}" "ThreadSanitizer"
+            "TSan")
+    endif ()
+endif ()
+
+function (add_sanitize_thread TARGET)
+    if (NOT SANITIZE_THREAD)
+        return()
+    endif ()
+
+    sanitizer_add_flags(${TARGET} "ThreadSanitizer" "TSan")
+endfunction ()

Added: sandbox/jng/cmake_v2/cmake/modules/FindUBSan.cmake
===================================================================
--- sandbox/jng/cmake_v2/cmake/modules/FindUBSan.cmake	                        (rev 0)
+++ sandbox/jng/cmake_v2/cmake/modules/FindUBSan.cmake	2018-01-08 09:24:32 UTC (rev 9289)
@@ -0,0 +1,46 @@
+# The MIT License (MIT)
+#
+# Copyright (c)
+#   2013 Matthew Arsenault
+#   2015-2016 RWTH Aachen University, Federal Republic of Germany
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+option(SANITIZE_UNDEFINED
+    "Enable UndefinedBehaviorSanitizer for sanitized targets." Off)
+
+set(FLAG_CANDIDATES
+    "-g -fsanitize=undefined"
+)
+
+
+include(sanitize-helpers)
+
+if (SANITIZE_UNDEFINED)
+    sanitizer_check_compiler_flags("${FLAG_CANDIDATES}"
+        "UndefinedBehaviorSanitizer" "UBSan")
+endif ()
+
+function (add_sanitize_undefined TARGET)
+    if (NOT SANITIZE_UNDEFINED)
+        return()
+    endif ()
+
+    sanitizer_add_flags(${TARGET} "UndefinedBehaviorSanitizer" "UBSan")
+endfunction ()

Added: sandbox/jng/cmake_v2/cmake/modules/asan-wrapper
===================================================================
--- sandbox/jng/cmake_v2/cmake/modules/asan-wrapper	                        (rev 0)
+++ sandbox/jng/cmake_v2/cmake/modules/asan-wrapper	2018-01-08 09:24:32 UTC (rev 9289)
@@ -0,0 +1,55 @@
+#!/bin/sh
+
+# The MIT License (MIT)
+#
+# Copyright (c)
+#   2013 Matthew Arsenault
+#   2015-2016 RWTH Aachen University, Federal Republic of Germany
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+# This script is a wrapper for AddressSanitizer. In some special cases you need
+# to preload AddressSanitizer to avoid error messages - e.g. if you're
+# preloading another library to your application. At the moment this script will
+# only do something, if we're running on a Linux platform. OSX might not be
+# affected.
+
+
+# Exit immediately, if platform is not Linux.
+if [ "$(uname)" != "Linux" ]
+then
+    exec $@
+fi
+
+
+# Get the used libasan of the application ($1). If a libasan was found, it will
+# be prepended to LD_PRELOAD.
+libasan=$(ldd $1 | grep libasan | sed "s/^[[:space:]]//" | cut -d' ' -f1)
+if [ -n "$libasan" ]
+then
+    if [ -n "$LD_PRELOAD" ]
+    then
+        export LD_PRELOAD="$libasan:$LD_PRELOAD"
+    else
+        export LD_PRELOAD="$libasan"
+    fi
+fi
+
+# Execute the application.
+exec $@


Property changes on: sandbox/jng/cmake_v2/cmake/modules/asan-wrapper
___________________________________________________________________
Added: svn:executable
   + *

Added: sandbox/jng/cmake_v2/cmake/modules/sanitize-helpers.cmake
===================================================================
--- sandbox/jng/cmake_v2/cmake/modules/sanitize-helpers.cmake	                        (rev 0)
+++ sandbox/jng/cmake_v2/cmake/modules/sanitize-helpers.cmake	2018-01-08 09:24:32 UTC (rev 9289)
@@ -0,0 +1,170 @@
+# The MIT License (MIT)
+#
+# Copyright (c)
+#   2013 Matthew Arsenault
+#   2015-2016 RWTH Aachen University, Federal Republic of Germany
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+# Helper function to get the language of a source file.
+function (sanitizer_lang_of_source FILE RETURN_VAR)
+    get_filename_component(FILE_EXT "${FILE}" EXT)
+    string(TOLOWER "${FILE_EXT}" FILE_EXT)
+    string(SUBSTRING "${FILE_EXT}" 1 -1 FILE_EXT)
+
+    get_property(ENABLED_LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES)
+    foreach (LANG ${ENABLED_LANGUAGES})
+        list(FIND CMAKE_${LANG}_SOURCE_FILE_EXTENSIONS "${FILE_EXT}" TEMP)
+        if (NOT ${TEMP} EQUAL -1)
+            set(${RETURN_VAR} "${LANG}" PARENT_SCOPE)
+            return()
+        endif ()
+    endforeach()
+
+    set(${RETURN_VAR} "" PARENT_SCOPE)
+endfunction ()
+
+
+# Helper function to get compilers used by a target.
+function (sanitizer_target_compilers TARGET RETURN_VAR)
+    # Check if all sources for target use the same compiler. If a target uses
+    # e.g. C and Fortran mixed and uses different compilers (e.g. clang and
+    # gfortran) this can trigger huge problems, because different compilers may
+    # use different implementations for sanitizers.
+    set(BUFFER "")
+    get_target_property(TSOURCES ${TARGET} SOURCES)
+    foreach (FILE ${TSOURCES})
+        # If expression was found, FILE is a generator-expression for an object
+        # library. Object libraries will be ignored.
+        string(REGEX MATCH "TARGET_OBJECTS:([^ >]+)" _file ${FILE})
+        if ("${_file}" STREQUAL "")
+            sanitizer_lang_of_source(${FILE} LANG)
+            if (LANG)
+                list(APPEND BUFFER ${CMAKE_${LANG}_COMPILER_ID})
+            endif ()
+        endif ()
+    endforeach ()
+
+    list(REMOVE_DUPLICATES BUFFER)
+    set(${RETURN_VAR} "${BUFFER}" PARENT_SCOPE)
+endfunction ()
+
+
+# Helper function to check compiler flags for language compiler.
+function (sanitizer_check_compiler_flag FLAG LANG VARIABLE)
+    if (${LANG} STREQUAL "C")
+        include(CheckCCompilerFlag)
+        check_c_compiler_flag("${FLAG}" ${VARIABLE})
+
+    elseif (${LANG} STREQUAL "CXX")
+        include(CheckCXXCompilerFlag)
+        check_cxx_compiler_flag("${FLAG}" ${VARIABLE})
+
+    elseif (${LANG} STREQUAL "Fortran")
+        # CheckFortranCompilerFlag was introduced in CMake 3.x. To be compatible
+        # with older Cmake versions, we will check if this module is present
+        # before we use it. Otherwise we will define Fortran coverage support as
+        # not available.
+        include(CheckFortranCompilerFlag OPTIONAL RESULT_VARIABLE INCLUDED)
+        if (INCLUDED)
+            check_fortran_compiler_flag("${FLAG}" ${VARIABLE})
+        elseif (NOT CMAKE_REQUIRED_QUIET)
+            message(STATUS "Performing Test ${VARIABLE}")
+            message(STATUS "Performing Test ${VARIABLE}"
+                " - Failed (Check not supported)")
+        endif ()
+    endif()
+endfunction ()
+
+
+# Helper function to test compiler flags.
+function (sanitizer_check_compiler_flags FLAG_CANDIDATES NAME PREFIX)
+    set(CMAKE_REQUIRED_QUIET ${${PREFIX}_FIND_QUIETLY})
+
+    get_property(ENABLED_LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES)
+    foreach (LANG ${ENABLED_LANGUAGES})
+        # Sanitizer flags are not dependend on language, but the used compiler.
+        # So instead of searching flags foreach language, search flags foreach
+        # compiler used.
+        set(COMPILER ${CMAKE_${LANG}_COMPILER_ID})
+        if (NOT DEFINED ${PREFIX}_${COMPILER}_FLAGS)
+            foreach (FLAG ${FLAG_CANDIDATES})
+                if(NOT CMAKE_REQUIRED_QUIET)
+                    message(STATUS "Try ${COMPILER} ${NAME} flag = [${FLAG}]")
+                endif()
+
+                set(CMAKE_REQUIRED_FLAGS "${FLAG}")
+                unset(${PREFIX}_FLAG_DETECTED CACHE)
+                sanitizer_check_compiler_flag("${FLAG}" ${LANG}
+                    ${PREFIX}_FLAG_DETECTED)
+
+                if (${PREFIX}_FLAG_DETECTED)
+                    # If compiler is a GNU compiler, search for static flag, if
+                    # SANITIZE_LINK_STATIC is enabled.
+                    if (SANITIZE_LINK_STATIC AND (${COMPILER} STREQUAL "GNU"))
+                        string(TOLOWER ${PREFIX} PREFIX_lower)
+                        sanitizer_check_compiler_flag(
+                            "-static-lib${PREFIX_lower}" ${LANG}
+                            ${PREFIX}_STATIC_FLAG_DETECTED)
+
+                        if (${PREFIX}_STATIC_FLAG_DETECTED)
+                            set(FLAG "-static-lib${PREFIX_lower} ${FLAG}")
+                        endif ()
+                    endif ()
+
+                    set(${PREFIX}_${COMPILER}_FLAGS "${FLAG}" CACHE STRING
+                        "${NAME} flags for ${COMPILER} compiler.")
+                    mark_as_advanced(${PREFIX}_${COMPILER}_FLAGS)
+                    break()
+                endif ()
+            endforeach ()
+
+            if (NOT ${PREFIX}_FLAG_DETECTED)
+                set(${PREFIX}_${COMPILER}_FLAGS "" CACHE STRING
+                    "${NAME} flags for ${COMPILER} compiler.")
+                mark_as_advanced(${PREFIX}_${COMPILER}_FLAGS)
+
+                message(WARNING "${NAME} is not available for ${COMPILER} "
+                        "compiler. Targets using this compiler will be "
+                        "compiled without ${NAME}.")
+            endif ()
+        endif ()
+    endforeach ()
+endfunction ()
+
+
+# Helper to assign sanitizer flags for TARGET.
+function (sanitizer_add_flags TARGET NAME PREFIX)
+    # Get list of compilers used by target and check, if sanitizer is available
+    # for this target. Other compiler checks like check for conflicting
+    # compilers will be done in add_sanitizers function.
+    sanitizer_target_compilers(${TARGET} TARGET_COMPILER)
+    list(LENGTH TARGET_COMPILER NUM_COMPILERS)
+    if ("${${PREFIX}_${TARGET_COMPILER}_FLAGS}" STREQUAL "")
+        return()
+    endif()
+
+    # Set compile- and link-flags for target.
+    set_property(TARGET ${TARGET} APPEND_STRING
+        PROPERTY COMPILE_FLAGS " ${${PREFIX}_${TARGET_COMPILER}_FLAGS}")
+    set_property(TARGET ${TARGET} APPEND_STRING
+        PROPERTY COMPILE_FLAGS " ${SanBlist_${TARGET_COMPILER}_FLAGS}")
+    set_property(TARGET ${TARGET} APPEND_STRING
+        PROPERTY LINK_FLAGS " ${${PREFIX}_${TARGET_COMPILER}_FLAGS}")
+endfunction ()

Modified: sandbox/jng/cmake_v2/cmake_build.sh
===================================================================
--- sandbox/jng/cmake_v2/cmake_build.sh	2018-01-08 06:37:48 UTC (rev 9288)
+++ sandbox/jng/cmake_v2/cmake_build.sh	2018-01-08 09:24:32 UTC (rev 9289)
@@ -35,6 +35,7 @@
         --help)
             echo "Usage: $0 (options)"
             echo "Options:"
+            echo "  --cmake_build_dir [CMake build directory]"
             echo "  --oem_working_dir [installation directory]"
             echo "  --build [32(default)|64]"
             echo "  --config [Release(default)|Debug]"
@@ -146,7 +147,7 @@
     ninja
     check_build
 else
-    cmake $SOURCE_DIR -DMG_CPU=$BUILD_CPU -DWITH_JAVA=TRUE -DCMAKE_BUILD_TYPE=$BUILD_CONFIG
+    cmake $SOURCE_DIR -DMG_CPU=$BUILD_CPU -DWITH_JAVA=TRUE -DCMAKE_BUILD_TYPE=$BUILD_CONFIG -DMG_OEM_WORK_DIR=$OEM_WORK_DIR
     check_build
     make
     check_build



More information about the mapguide-commits mailing list