[mapguide-commits] r9424 - in trunk/MgDev: . Common Common/Foundation Common/MdfParser Common/PlatformBase Common/Stylization Desktop Oem/DWFTK/develop/global/src Oem/DWFTK/develop/global/src/dwfcore Server Server/src/Common/Manager Server/src/UnitTesting Web cmake/modules

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Sun Dec 16 06:44:32 PST 2018


Author: jng
Date: 2018-12-16 06:44:32 -0800 (Sun, 16 Dec 2018)
New Revision: 9424

Added:
   trunk/MgDev/cmake/modules/FindMapGuideThirdparty.cmake
Modified:
   trunk/MgDev/CMakeLists.txt
   trunk/MgDev/Common/CMakeLists.txt
   trunk/MgDev/Common/Foundation/CMakeLists.txt
   trunk/MgDev/Common/MdfParser/CMakeLists.txt
   trunk/MgDev/Common/PlatformBase/CMakeLists.txt
   trunk/MgDev/Common/Stylization/CMakeLists.txt
   trunk/MgDev/Desktop/CMakeLists.txt
   trunk/MgDev/Oem/DWFTK/develop/global/src/CMakeLists.txt
   trunk/MgDev/Oem/DWFTK/develop/global/src/dwfcore/CMakeLists.txt
   trunk/MgDev/Server/CMakeLists.txt
   trunk/MgDev/Server/src/Common/Manager/CMakeLists.txt
   trunk/MgDev/Server/src/UnitTesting/CMakeLists.txt
   trunk/MgDev/Web/CMakeLists.txt
   trunk/MgDev/cmake_bootstrap.sh
   trunk/MgDev/cmake_build.sh
Log:
#2785: Update cmake_bootstrap.sh to support building the full Oem source tree. Fix up various CMakeLists.txt to support a fully built internal Oem source tree

Modified: trunk/MgDev/CMakeLists.txt
===================================================================
--- trunk/MgDev/CMakeLists.txt	2018-12-14 15:31:15 UTC (rev 9423)
+++ trunk/MgDev/CMakeLists.txt	2018-12-16 14:44:32 UTC (rev 9424)
@@ -41,6 +41,18 @@
     message (STATUS "MG_CPU is ${MG_CPU}")
 endif ((NOT MG_CPU EQUAL 32) AND (NOT MG_CPU EQUAL 64))
 
+#message(STATUS "INTERNAL_ACE = ${INTERNAL_ACE}")
+#message(STATUS "INTERNAL_CPPUNIT = ${INTERNAL_CPPUNIT}")
+#message(STATUS "INTERNAL_ZLIB = ${INTERNAL_ZLIB}")
+#message(STATUS "INTERNAL_LIBPNG = ${INTERNAL_LIBPNG}")
+#message(STATUS "INTERNAL_JPEG = ${INTERNAL_JPEG}")
+#message(STATUS "INTERNAL_FREETYPE = ${INTERNAL_FREETYPE}")
+#message(STATUS "INTERNAL_GD = ${INTERNAL_GD}")
+#message(STATUS "INTERNAL_JSON = ${INTERNAL_JSON}")
+#message(STATUS "INTERNAL_GEOS = ${INTERNAL_GEOS}")
+#message(STATUS "INTERNAL_XERCES = ${INTERNAL_XERCES}")
+#message(STATUS "WITH_JAVA = ${WITH_JAVA}")
+
 include(CheckFunctionExists)
 include(CheckIncludeFile)
 include(CheckCXXSourceCompiles)
@@ -207,27 +219,7 @@
 endif ()
 
 find_package(Sanitizers)
-find_package(GEOS REQUIRED)
-find_package(ACE REQUIRED)
-if (NOT INTERNAL_XERCES)
-    find_package(XercesC REQUIRED)
-else (NOT INTERNAL_XERCES)
-    message(STATUS "Using internal xerces-c")
-endif (NOT INTERNAL_XERCES)
-find_package(GD REQUIRED)
-find_package(Freetype REQUIRED)
-find_package(JPEG REQUIRED)
-find_package(PNG REQUIRED)
-find_package(FDO REQUIRED)
-find_package(CppUnit REQUIRED)
-find_package(TCLAP REQUIRED)
-find_package(LinuxApt REQUIRED)
-find_package(DbXmlInternal REQUIRED)
-if (INTERNAL_XERCES)
-    # This will be the same
-    set(XERCESC_INCLUDE_DIR "${DBXML_INCLUDE_DIR}")
-endif (INTERNAL_XERCES)
-find_package(Ant REQUIRED)
+find_package(MapGuideThirdparty REQUIRED)
 
 # Set internal tool paths
 set(IMAKE_TOOL ${CMAKE_CURRENT_BINARY_DIR}/BuildTools/WebTools/IMake/IMake)

Modified: trunk/MgDev/Common/CMakeLists.txt
===================================================================
--- trunk/MgDev/Common/CMakeLists.txt	2018-12-14 15:31:15 UTC (rev 9423)
+++ trunk/MgDev/Common/CMakeLists.txt	2018-12-16 14:44:32 UTC (rev 9424)
@@ -3,7 +3,10 @@
     set ( CMAKE_SHARED_LINKER_FLAGS "-Wl,--as-needed -Wl,--no-undefined -lc ${CMAKE_SHARED_LINKER_FLAGS}")
 endif( CMAKE_COMPILER_IS_GNUCXX )
 
-add_definitions( -DACE_HAS_THREAD_SAFE_ACCEPT )
+# On ubuntu at least, the system installed ACE does not define this (required by us)
+if (NOT INTERNAL_ACE)
+    add_definitions( -DACE_HAS_THREAD_SAFE_ACCEPT )
+endif (NOT INTERNAL_ACE)
 
 set(MG_COMPONENT ${MG_COMPONENT_COMMON})
 set_install_subdir("")

Modified: trunk/MgDev/Common/Foundation/CMakeLists.txt
===================================================================
--- trunk/MgDev/Common/Foundation/CMakeLists.txt	2018-12-14 15:31:15 UTC (rev 9423)
+++ trunk/MgDev/Common/Foundation/CMakeLists.txt	2018-12-16 14:44:32 UTC (rev 9424)
@@ -1,6 +1,7 @@
 project(foundation)
 
 include_directories(${ACE_INCLUDE_DIR}
+    ${XERCESC_INCLUDE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/Data
     ${CMAKE_CURRENT_SOURCE_DIR}/Exception

Modified: trunk/MgDev/Common/MdfParser/CMakeLists.txt
===================================================================
--- trunk/MgDev/Common/MdfParser/CMakeLists.txt	2018-12-14 15:31:15 UTC (rev 9423)
+++ trunk/MgDev/Common/MdfParser/CMakeLists.txt	2018-12-16 14:44:32 UTC (rev 9424)
@@ -1,6 +1,8 @@
 project(mdfparser)
 
-include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../MdfModel)
+include_directories(
+    ${CMAKE_CURRENT_SOURCE_DIR}/../MdfModel
+    ${XERCESC_INCLUDE_DIR})
 
 set (MgMdfParser_SRCS
     Common/IOColor.cpp

Modified: trunk/MgDev/Common/PlatformBase/CMakeLists.txt
===================================================================
--- trunk/MgDev/Common/PlatformBase/CMakeLists.txt	2018-12-14 15:31:15 UTC (rev 9423)
+++ trunk/MgDev/Common/PlatformBase/CMakeLists.txt	2018-12-16 14:44:32 UTC (rev 9424)
@@ -1,6 +1,7 @@
 project(platformbase)
 
 include_directories(${ACE_INCLUDE_DIR}
+    ${XERCESC_INCLUDE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/../CoordinateSystem
     ${CMAKE_CURRENT_SOURCE_DIR}/../Security

Modified: trunk/MgDev/Common/Stylization/CMakeLists.txt
===================================================================
--- trunk/MgDev/Common/Stylization/CMakeLists.txt	2018-12-14 15:31:15 UTC (rev 9423)
+++ trunk/MgDev/Common/Stylization/CMakeLists.txt	2018-12-16 14:44:32 UTC (rev 9424)
@@ -1,6 +1,7 @@
 project(stylization)
 
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}
+    ${ACE_INCLUDE_DIR}
     ${FDO_INCLUDE_DIR}
     ${FDO_INCLUDE_DIR}/ExpressionEngine
     ${CMAKE_CURRENT_SOURCE_DIR}/../MdfModel

Modified: trunk/MgDev/Desktop/CMakeLists.txt
===================================================================
--- trunk/MgDev/Desktop/CMakeLists.txt	2018-12-14 15:31:15 UTC (rev 9423)
+++ trunk/MgDev/Desktop/CMakeLists.txt	2018-12-16 14:44:32 UTC (rev 9424)
@@ -1,4 +1,7 @@
-add_definitions( -DACE_HAS_THREAD_SAFE_ACCEPT )
+# On ubuntu at least, the system installed ACE does not define this (required by us)
+if (NOT INTERNAL_ACE)
+    add_definitions( -DACE_HAS_THREAD_SAFE_ACCEPT )
+endif (NOT INTERNAL_ACE)
 
 # NOTE: Not applied for server tier projects except for mgserver main executable
 if( CMAKE_COMPILER_IS_GNUCXX )

Modified: trunk/MgDev/Oem/DWFTK/develop/global/src/CMakeLists.txt
===================================================================
--- trunk/MgDev/Oem/DWFTK/develop/global/src/CMakeLists.txt	2018-12-14 15:31:15 UTC (rev 9423)
+++ trunk/MgDev/Oem/DWFTK/develop/global/src/CMakeLists.txt	2018-12-16 14:44:32 UTC (rev 9424)
@@ -4,12 +4,18 @@
 
 find_library(pthread REQUIRED)
 find_library(uuid REQUIRED)
-if (NOT uuid-NOTFOUND)
-    #add_definitions(-DHAVE_LIBUUID)
+check_cxx_source_compiles(
+    "#include <uuid/uuid.h>
+    int main() {
+        uuid_t      _tUUID;
+    }" 
+    HAS_UUID)
+if (HAS_UUID AND NOT uuid-NOTFOUND)
     set (HAVE_LIBUUID 1)
-else (NOT uuid-NOTFOUND)
-    message(STATUS "Could not find libuuid")
-endif (NOT uuid-NOTFOUND)
+    message(STATUS "libuuid found")
+else (HAS_UUID AND NOT uuid-NOTFOUND)
+    message(WARNING "Could not find libuuid and/or its uuid.h header")
+endif (HAS_UUID AND NOT uuid-NOTFOUND)
 
 check_include_file(bits/stl_algobase.h HAVE_ALGOBASE_H)
 check_include_file(asm/atomic.h HAVE_ATOMIC_H)
@@ -16,10 +22,6 @@
 check_include_file(alsa/iatomic.h HAVE_IATOMIC_H)
 check_include_file(netinet/ether.h HAVE_NETINET_ETHER_H)
 
-#if (HAVE_NETINET_ETHER_H)
-#    add_definitions(-DHAVE_NETINET_ETHER_H)
-#endif (HAVE_NETINET_ETHER_H)
-
 if (HAVE_ATOMIC_H)
     check_cxx_source_compiles(
         "#include <asm/atomic.h>
@@ -53,7 +55,6 @@
     }" 
     CAN_COMPILE_WITH_IATOMIC_H)
     if (CAN_COMPILE_WITH_IATOMIC_H)
-        #add_definitions(-D_DWFCORE_USE_ALSA_IATOMIC_H)
         set (_DWFCORE_USE_ALSA_IATOMIC_H 1)
     else (CAN_COMPILE_WITH_IATOMIC_H)
     message(WARNING "Found alsa/atomic.h but could not compile with it")
@@ -64,12 +65,6 @@
 check_function_exists(min HAVE_MIN)
 check_function_exists(memmove HAVE_MEMMOVE)
 
-#if (HAVE_MEMMOVE)
-#   add_definitions(-DHAVE_MEMMOVE)
-#else (HAVE_MEMMOVE)
-#   message(ERROR "Could not find required function memmove")
-#endif (HAVE_MEMMOVE)
-
 if (NOT HAVE_MEMMOVE)
     message(ERROR "Could not find required function memmove")
 endif (NOT HAVE_MEMMOVE)

Modified: trunk/MgDev/Oem/DWFTK/develop/global/src/dwfcore/CMakeLists.txt
===================================================================
--- trunk/MgDev/Oem/DWFTK/develop/global/src/dwfcore/CMakeLists.txt	2018-12-14 15:31:15 UTC (rev 9423)
+++ trunk/MgDev/Oem/DWFTK/develop/global/src/dwfcore/CMakeLists.txt	2018-12-16 14:44:32 UTC (rev 9424)
@@ -107,7 +107,7 @@
 
 add_library(dwfcore-${DWFCORE_VERSION} SHARED ${dwfcore_SRCS})
 
-if (NOT uuid-NOTFOUND)
+if (HAS_UUID AND NOT uuid-NOTFOUND)
     target_link_libraries(dwfcore-${DWFCORE_VERSION}
         -Wl,-Bsymbolic
         dl
@@ -114,12 +114,12 @@
         pthread
         uuid
     )
-else (NOT uuid-NOTFOUND)
+else (HAS_UUID AND NOT uuid-NOTFOUND)
     target_link_libraries(dwfcore-${DWFCORE_VERSION}
         -Wl,-Bsymbolic
         dl
         pthread
     )
-endif (NOT uuid-NOTFOUND)
+endif (HAS_UUID AND NOT uuid-NOTFOUND)
 
 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)
\ No newline at end of file

Modified: trunk/MgDev/Server/CMakeLists.txt
===================================================================
--- trunk/MgDev/Server/CMakeLists.txt	2018-12-14 15:31:15 UTC (rev 9423)
+++ trunk/MgDev/Server/CMakeLists.txt	2018-12-16 14:44:32 UTC (rev 9424)
@@ -1,4 +1,7 @@
-add_definitions( -DACE_HAS_THREAD_SAFE_ACCEPT )
+# On ubuntu at least, the system installed ACE does not define this (required by us)
+if (NOT INTERNAL_ACE)
+    add_definitions( -DACE_HAS_THREAD_SAFE_ACCEPT )
+endif (NOT INTERNAL_ACE)
 
 set(MG_COMPONENT ${MG_COMPONENT_SERVER})
 set_install_subdir("server/")

Modified: trunk/MgDev/Server/src/Common/Manager/CMakeLists.txt
===================================================================
--- trunk/MgDev/Server/src/Common/Manager/CMakeLists.txt	2018-12-14 15:31:15 UTC (rev 9423)
+++ trunk/MgDev/Server/src/Common/Manager/CMakeLists.txt	2018-12-16 14:44:32 UTC (rev 9424)
@@ -1,5 +1,6 @@
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}
     ${ACE_INCLUDE_DIR}
+    ${XERCESC_INCLUDE_DIR}
     ${FDO_INCLUDE_DIR}
     ${MG_AUTO_GENERATED_HEADER_DIR}
     ${MG_COMMON_DIR}/MdfModel

Modified: trunk/MgDev/Server/src/UnitTesting/CMakeLists.txt
===================================================================
--- trunk/MgDev/Server/src/UnitTesting/CMakeLists.txt	2018-12-14 15:31:15 UTC (rev 9423)
+++ trunk/MgDev/Server/src/UnitTesting/CMakeLists.txt	2018-12-16 14:44:32 UTC (rev 9424)
@@ -1,5 +1,6 @@
 include_directories(${ACE_INCLUDE_DIR}
     ${CPPUNIT_INCLUDE_DIR}
+    ${XERCESC_INCLUDE_DIR}
     ${MG_COMMON_DIR}/Foundation
     ${MG_COMMON_DIR}/Geometry
     ${MG_COMMON_DIR}/PlatformBase

Modified: trunk/MgDev/Web/CMakeLists.txt
===================================================================
--- trunk/MgDev/Web/CMakeLists.txt	2018-12-14 15:31:15 UTC (rev 9423)
+++ trunk/MgDev/Web/CMakeLists.txt	2018-12-16 14:44:32 UTC (rev 9424)
@@ -1,4 +1,7 @@
-add_definitions( -DACE_HAS_THREAD_SAFE_ACCEPT )
+# On ubuntu at least, the system installed ACE does not define this (required by us)
+if (NOT INTERNAL_ACE)
+    add_definitions( -DACE_HAS_THREAD_SAFE_ACCEPT )
+endif (NOT INTERNAL_ACE)
 
 # NOTE: Not applied for server tier projects except for mgserver main executable
 if( CMAKE_COMPILER_IS_GNUCXX )

Added: trunk/MgDev/cmake/modules/FindMapGuideThirdparty.cmake
===================================================================
--- trunk/MgDev/cmake/modules/FindMapGuideThirdparty.cmake	                        (rev 0)
+++ trunk/MgDev/cmake/modules/FindMapGuideThirdparty.cmake	2018-12-16 14:44:32 UTC (rev 9424)
@@ -0,0 +1,212 @@
+# This file is strictly to check and enable system or internal Thirdparty
+# libraries
+
+include(FindPackageHandleStandardArgs)
+
+if (ALL_THIRDPARTY)
+    set(INTERNAL_ACE true)
+    set(INTERNAL_CPPUNIT true)
+    set(INTERNAL_ZLIB true)
+    set(INTERNAL_LIBPNG true)
+    set(INTERNAL_JPEG true)
+    set(INTERNAL_FREETYPE true)
+    set(INTERNAL_GD true)
+    set(INTERNAL_JSON true)
+    set(INTERNAL_GEOS true)
+    set(INTERNAL_XERCES true)
+endif (ALL_THIRDPARTY)
+
+if (INTERNAL_ACE)
+    message(STATUS "Using internal ACE")
+    #find_package(ACE REQUIRED
+    #    PATHS ${MG_OEM_WORK_DIR}/ACE/ACE_wrappers 
+    #          ${MG_OEM_WORK_DIR}/ACE/ACE_wrappers/lib)
+    find_path(ACE_INCLUDE_DIR 
+        NAMES "ace/Init_ACE.h"
+        PATHS ${MG_OEM_WORK_DIR}/ACE/ACE_wrappers)
+    find_library(ACE_LIBRARY 
+        NAMES ACE 
+        PATHS ${MG_OEM_WORK_DIR}/ACE/ACE_wrappers/lib)
+    message(STATUS "ACE Include Dir: ${ACE_INCLUDE_DIR}")
+    message(STATUS "ACE Library: ${ACE_LIBRARY}")
+    FIND_PACKAGE_HANDLE_STANDARD_ARGS(ACE DEFAULT_MSG ACE_LIBRARY ACE_INCLUDE_DIR)
+    mark_as_advanced(ACE_INCLUDE_DIR ACE_LIBRARY)
+else (INTERNAL_ACE)
+    message(STATUS "Using system-provided ACE")
+    find_package(ACE REQUIRED)
+endif (INTERNAL_ACE)
+
+if (INTERNAL_GEOS)
+    message(STATUS "Using internal GEOS")
+    #find_package(GEOS REQUIRED
+    #    PATHS ${MG_OEM_WORK_DIR}/geos/include
+    #          ${MG_OEM_WORK_DIR}/geos/src/.libs)
+    find_path(GEOS_INCLUDE_DIR 
+        NAMES "geos/version.h"
+            "geos/geom.h"
+            "geos/util.h"
+            "geos/io.h"
+            "geos/unload.h"
+        PATHS ${MG_OEM_WORK_DIR}/geos/include)
+    find_library(GEOS_LIBRARY 
+        NAMES geos
+        PATHS ${MG_OEM_WORK_DIR}/geos/src/.libs)
+    message(STATUS "GEOS Include Dir: ${GEOS_INCLUDE_DIR}")
+    message(STATUS "GEOS Library: ${GEOS_LIBRARY}")
+    FIND_PACKAGE_HANDLE_STANDARD_ARGS(GEOS DEFAULT_MSG GEOS_LIBRARY GEOS_INCLUDE_DIR)
+    mark_as_advanced(GEOS_INCLUDE_DIR GEOS_LIBRARY)
+else (INTERNAL_GEOS)
+    find_package(GEOS REQUIRED)
+endif (INTERNAL_GEOS)
+
+if (INTERNAL_XERCES)
+    message(STATUS "Using internal xerces-c")
+    #find_package(XercesC REQUIRED
+    #    PATHS ${MG_OEM_WORK_DIR}/dbxml/xerces-c-src/src
+    #          ${MG_OEM_WORK_DIR}/dbxml/xerces-c-src/src/.libs)
+    find_path(XERCESC_INCLUDE_DIR 
+        NAMES "xercesc/dom/DOM.hpp"
+        PATHS ${MG_OEM_WORK_DIR}/dbxml/xerces-c-src/src)
+    find_library(XERCESC_LIBRARIES 
+        NAMES xerces-c
+        PATHS ${MG_OEM_WORK_DIR}/dbxml/xerces-c-src/src/.libs)
+    message(STATUS "xerces-c Include Dir: ${XERCESC_INCLUDE_DIR}")
+    message(STATUS "xerces-c Library: ${XERCESC_LIBRARIES}")
+    FIND_PACKAGE_HANDLE_STANDARD_ARGS(xerces-c DEFAULT_MSG XERCESC_LIBRARIES XERCESC_INCLUDE_DIR)
+    mark_as_advanced(XERCESC_INCLUDE_DIR XERCESC_LIBRARIES)
+else (INTERNAL_XERCES)
+    find_package(XercesC REQUIRED)
+endif (INTERNAL_XERCES)
+
+if (INTERNAL_GD)
+    message(STATUS "Using internal GD")
+    #find_package(GD REQUIRED
+    #    PATHS ${MG_OEM_WORK_DIR}/gd/gd
+    #          ${MG_OEM_WORK_DIR}/gd/gd/.libs)
+    find_path(GD_INCLUDE_DIR 
+        NAMES "gd.h"
+        PATHS ${MG_OEM_WORK_DIR}/gd/gd)
+    find_library(GD_LIBRARY 
+        NAMES gd
+        PATHS ${MG_OEM_WORK_DIR}/gd/gd/.libs)
+    message(STATUS "GD Include Dir: ${GD_INCLUDE_DIR}")
+    message(STATUS "GD Library: ${GD_LIBRARY}")
+    FIND_PACKAGE_HANDLE_STANDARD_ARGS(GD DEFAULT_MSG GD_LIBRARY GD_INCLUDE_DIR)
+    mark_as_advanced(GD_INCLUDE_DIR GD_LIBRARY)
+else (INTERNAL_GD)
+    find_package(GD REQUIRED)
+endif (INTERNAL_GD)
+
+if (INTERNAL_FREETYPE)
+    message(STATUS "Using internal FreeType")
+    #find_package(Freetype REQUIRED
+    #    PATHS ${MG_OEM_WORK_DIR}/gd/freetype
+    #          ${MG_OEM_WORK_DIR}/gd/freetype/.libs)
+    find_path(FREETYPE_INCLUDE_DIRS 
+        NAMES "ft2build.h"
+        PATHS ${MG_OEM_WORK_DIR}/gd/freetype/include)
+    find_library(FREETYPE_LIBRARY
+        NAMES freetype
+        PATHS ${MG_OEM_WORK_DIR}/gd/freetype/objs/.libs)
+    message(STATUS "FreeType Include Dir: ${FREETYPE_INCLUDE_DIRS}")
+    message(STATUS "FreeType Library: ${FREETYPE_LIBRARY}")
+    FIND_PACKAGE_HANDLE_STANDARD_ARGS(FreeType DEFAULT_MSG FREETYPE_LIBRARY FREETYPE_INCLUDE_DIRS)
+    mark_as_advanced(FREETYPE_INCLUDE_DIRS FREETYPE_LIBRARY)
+else (INTERNAL_FREETYPE)
+    find_package(Freetype REQUIRED)
+endif (INTERNAL_FREETYPE)
+
+if (INTERNAL_JPEG)
+    message(STATUS "Using internal libjpeg")
+    #find_package(JPEG REQUIRED
+    #    PATHS ${MG_OEM_WORK_DIR}/gd/jpeg
+    #          ${MG_OEM_WORK_DIR}/gd/jpeg/.libs)
+    find_path(JPEG_INCLUDE_DIR 
+        NAMES "jpeglib.h"
+        PATHS ${MG_OEM_WORK_DIR}/gd/jpeg)
+    find_library(JPEG_LIBRARY 
+        NAMES jpeg
+        PATHS ${MG_OEM_WORK_DIR}/gd/jpeg/.libs)
+    message(STATUS "libjpeg Include Dir: ${JPEG_INCLUDE_DIR}")
+    message(STATUS "libjpeg Library: ${JPEG_LIBRARY}")
+    FIND_PACKAGE_HANDLE_STANDARD_ARGS(jpeg DEFAULT_MSG JPEG_LIBRARY JPEG_INCLUDE_DIR)
+    mark_as_advanced(JPEG_INCLUDE_DIR JPEG_LIBRARY)
+else (INTERNAL_JPEG)
+    find_package(JPEG REQUIRED)
+endif (INTERNAL_JPEG)
+
+if (INTERNAL_PNG)
+    message(STATUS "Using internal libpng")
+    #find_package(PNG REQUIRED
+    #    PATHS ${MG_OEM_WORK_DIR}/gd/png
+    #          ${MG_OEM_WORK_DIR}/gd/png/.libs)
+    find_path(PNG_INCLUDE_DIRS 
+        NAMES "png.h"
+        PATHS ${MG_OEM_WORK_DIR}/gd/lpng)
+    find_library(PNG_LIBRARY 
+        NAMES png
+        PATHS ${MG_OEM_WORK_DIR}/gd/lpng/.libs)
+    message(STATUS "libpng Include Dir: ${PNG_INCLUDE_DIRS}")
+    message(STATUS "libpng Library: ${PNG_LIBRARY}")
+    FIND_PACKAGE_HANDLE_STANDARD_ARGS(libpng DEFAULT_MSG PNG_LIBRARY PNG_INCLUDE_DIRS)
+    mark_as_advanced(PNG_INCLUDE_DIRS PNG_LIBRARY)
+else (INTERNAL_PNG)
+    find_package(PNG REQUIRED)
+endif (INTERNAL_PNG)
+
+if (INTERNAL_CPPUNIT)
+    message(STATUS "Using internal cppunit")
+    #find_package(CppUnit REQUIRED
+    #    PATHS ${MG_OEM_WORK_DIR}/cppunit
+    #          ${MG_OEM_WORK_DIR}/cppunit/.libs)
+    find_path(CPPUNIT_INCLUDE_DIR 
+        NAMES "cppunit/CompilerOutputter.h"
+        PATHS ${MG_OEM_WORK_DIR}/CppUnit/include)
+    find_library(CPPUNIT_LIBRARIES 
+        NAMES cppunit
+        PATHS ${MG_OEM_WORK_DIR}/CppUnit/src/cppunit/.libs)
+    message(STATUS "cppunit Include Dir: ${CPPUNIT_INCLUDE_DIR}")
+    message(STATUS "cppunit Library: ${CPPUNIT_LIBRARIES}")
+    FIND_PACKAGE_HANDLE_STANDARD_ARGS(cppunit DEFAULT_MSG CPPUNIT_LIBRARIES CPPUNIT_INCLUDE_DIR)
+    mark_as_advanced(CPPUNIT_INCLUDE_DIR CPPUNIT_LIBRARIES)
+else (INTERNAL_CPPUNIT)
+    find_package(CppUnit REQUIRED)
+endif (INTERNAL_CPPUNIT)
+
+if (INTERNAL_JSON)
+    message(STATUS "Using internal jsoncpp")
+    find_path(JsonCpp_INCLUDE_DIR 
+        NAMES "json/json.h"
+        PATHS ${MG_OEM_WORK_DIR}/jsoncpp/include)
+    find_library(JsonCpp_LIBRARY 
+        NAMES lib_json
+        PATHS ${MG_OEM_WORK_DIR}/jsoncpp/lib)
+    message(STATUS "jsoncpp Include Dir: ${JsonCpp_INCLUDE_DIR}")
+    message(STATUS "jsoncpp Library: ${JsonCpp_LIBRARY}")
+    FIND_PACKAGE_HANDLE_STANDARD_ARGS(jsoncpp DEFAULT_MSG JsonCpp_LIBRARY JsonCpp_INCLUDE_DIR)
+    mark_as_advanced(JsonCpp_INCLUDE_DIR JsonCpp_LIBRARY)
+else (INTERNAL_JSON)
+    find_package(JsonCpp REQUIRED)
+endif (INTERNAL_JSON)
+
+if (INTERNAL_ZLIB)
+    message(STATUS "Using internal zlib")
+    find_path(ZLIB_INCLUDE_DIR 
+        NAMES "zlib.h"
+        PATHS ${MG_OEM_WORK_DIR}/gd/zlib)
+    find_library(ZLIB_LIBRARY
+        NAMES z
+        PATHS ${MG_OEM_WORK_DIR}/gd/zlib)
+    message(STATUS "zlib Include Dir: ${ZLIB_INCLUDE_DIR}")
+    message(STATUS "zlib Library: ${ZLIB_LIBRARY}")
+    FIND_PACKAGE_HANDLE_STANDARD_ARGS(zlib DEFAULT_MSG ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
+    mark_as_advanced(ZLIB_INCLUDE_DIR ZLIB_LIBRARY)
+else (INTERNAL_ZLIB)
+    find_package(ZLIB REQUIRED)
+endif (INTERNAL_ZLIB)
+
+find_package(FDO REQUIRED)
+find_package(TCLAP REQUIRED)
+find_package(LinuxApt REQUIRED)
+find_package(DbXmlInternal REQUIRED)
+find_package(Ant REQUIRED)
\ No newline at end of file

Modified: trunk/MgDev/cmake_bootstrap.sh
===================================================================
--- trunk/MgDev/cmake_bootstrap.sh	2018-12-14 15:31:15 UTC (rev 9423)
+++ trunk/MgDev/cmake_bootstrap.sh	2018-12-16 14:44:32 UTC (rev 9424)
@@ -1,5 +1,9 @@
 #!/bin/sh
 
+# TODO: The MapGuie build system is not aware of FDO (beyond the built FDO binaries), so there is nothing here 
+# that knows that FDO's build system has an internally built copy of openssl/curl that can be passed on to PHP 
+# here.
+
 MG_INST_PREFIX=/usr/local/mapguideopensource-3.3.0
 OEM_WORK_DIR=~/mapguide_oem_build
 INTERNAL_ACE=0
@@ -256,14 +260,33 @@
     make && make install
     check_build
 fi
+
+# Before we build GD, set some vars for PHP that we can reuse here too
+PHP_JPEG_DIR=/usr/lib
+PHP_PNG_DIR=/usr/lib
+PHP_FREETYPE_DIR=/usr/lib
+PHP_ZLIB_DIR=/usr/lib
+if [ "$INTERNAL_JPEG" = "1" ]; then
+    PHP_JPEG_DIR="$OEM_WORK_DIR/install/libjpeg"
+fi
+if [ "$INTERNAL_LIBPNG" = "1" ]; then
+    PHP_PNG_DIR="$OEM_WORK_DIR/install/libpng/usr/local"
+fi    
+if [ "$INTERNAL_FREETYPE" = "1" ]; then
+    PHP_FREETYPE_DIR="$OEM_WORK_DIR/install/freetype"
+fi
+if [ "$INTERNAL_ZLIB" = "1" ]; then
+    PHP_ZLIB_DIR="$OEM_WORK_DIR/install/zlib"
+fi
+
 if [ "$INTERNAL_GD" = "1" ]; then
     echo "Building GD (internal)"
     cp -Rf "${SOURCE_DIR}/Oem/gd/gd" "${OEM_WORK_DIR}/gd/gd"
     cd "${OEM_WORK_DIR}/gd/gd" || exit
     if [ $BUILD_CPU -eq 64 ]; then
-        sh ./configure --enable-static --disable-shared --without-fontconfig --enable-silent-rules --with-pic --prefix="${OEM_INSTALL_STAGE}/gd"
+        sh ./configure --enable-static --disable-shared --without-fontconfig --enable-silent-rules --with-jpeg="${PHP_JPEG_DIR}" --with-png="${PHP_PNG_DIR}" --with-freetype="${PHP_FREETYPE_DIR}" --with-pic --prefix="${OEM_INSTALL_STAGE}/gd"
     else
-        sh ./configure --enable-static --disable-shared --without-fontconfig --enable-silent-rules --prefix="${OEM_INSTALL_STAGE}/gd"
+        sh ./configure --enable-static --disable-shared --without-fontconfig --enable-silent-rules --with-jpeg="${PHP_JPEG_DIR}" --with-png="${PHP_PNG_DIR}" --with-freetype="${PHP_FREETYPE_DIR}" --prefix="${OEM_INSTALL_STAGE}/gd"
     fi
     make && make install
     check_build
@@ -276,7 +299,36 @@
     scons platform=linux-gcc
     check_build
 fi
+if [ "$INTERNAL_GEOS" = "1" ]; then
+    echo "Building GEOS (internal)"
+    cp -Rf "${SOURCE_DIR}/Oem/geos" "${OEM_WORK_DIR}/geos"
+    cd "${OEM_WORK_DIR}/geos" || exit
+    # NOTE: We could build with CMake, but it isn't the "blessed" build system for the version we
+    # have internally (3.4.2), so we're sticking with autotools
+    #cmake "${SOURCE_DIR}/Oem/geos" .
 
+    # For this version of GEOS, don't run the aclocal/libtoolize/automake/autoconf quartet as we normally do, as it
+    # may produce an unusable configure script. Just run autoreconf to regenerate the configure script from configure.in
+    autoreconf
+    
+    # Fix for error:
+    # virtual void geos::geom::GeometryComponentFilter::filter_ro(const geos::geom::Geometry*): Assertion `0' failed
+    #
+    # Based on this GEOS ticket: https://trac.osgeo.org/geos/ticket/469
+    # The fix to to set the appropriate CFLAGS/CPPFLAGS/CXXFLAGS/LDFLAGS/FFLAGS before calling the configure script
+    #
+    # If we upgrade our internal copy of GEOS in the future, this should be reviewed
+    chmod +x configure
+    if [ $BUILD_CPU -eq 64 ]; then
+        CFLAGS="-m64" CPPFLAGS="-m64" CXXFLAGS="-m64" LDFLAGS="-m64" FFLAGS="-m64" LDFLAGS="-L/usr/lib64" ./configure --with-pic --enable-silent-rules --prefix="${INSTALLDIR}"
+    else
+        CFLAGS="-m32" CPPFLAGS="-m32" CXXFLAGS="-m32" LDFLAGS="-m32" FFLAGS="-m32" LDFLAGS="-L/usr/lib" ./configure --enable-silent-rules --prefix="${INSTALLDIR}"
+    fi
+    make
+    # The check build is disabled as the build will fail with automake version < 2.59
+    check_build
+fi
+
 echo "Checking if we need to build DBXML"
 # Basically perform the same checks as FindDbXml.cmake
 HAS_DBXML_HEADERS=0
@@ -394,22 +446,6 @@
     tar -jxf php-${PHP_VER}.tar.bz2 -C "${LA_WORKDIR}"
 
     echo "Configuring PHP"
-    PHP_JPEG_DIR=/usr/lib
-    PHP_PNG_DIR=/usr/lib
-    PHP_FREETYPE_DIR=/usr/lib
-    PHP_ZLIB_DIR=/usr/lib
-    if [ "$INTERNAL_JPEG" = "1" ]; then
-        PHP_JPEG_DIR="$OEM_WORK_DIR/install/libjpeg"
-    fi
-    if [ "$INTERNAL_LIBPNG" = "1" ]; then
-        PHP_PNG_DIR="$OEM_WORK_DIR/install/libpng/usr/local"
-    fi    
-    if [ "$INTERNAL_FREETYPE" = "1" ]; then
-        PHP_FREETYPE_DIR="$OEM_WORK_DIR/install/freetype"
-    fi
-    if [ "$INTERNAL_ZLIB" = "1" ]; then
-        PHP_ZLIB_DIR="$OEM_WORK_DIR/install/zlib"
-    fi
     cd "${PHP_WORKDIR}" || exit
     # TODO: Patch out the use of meta_ccld so ccache can work: https://bugs.php.net/bug.php?id=75940
     # if/when we finally move to PHP 7, this patch is already applied
@@ -442,6 +478,43 @@
 make install 2>&1 | tee "$OEM_WORK_DIR/make_install_tc.log"
 check_build
 
+OUT_INTERNAL_ACE=FALSE
+if [ "$INTERNAL_ACE" = "1" ]; then
+    OUT_INTERNAL_ACE=TRUE
+fi
+OUT_INTERNAL_CPPUNIT=FALSE
+if [ "$INTERNAL_CPPUNIT" = "1" ]; then
+    OUT_INTERNAL_CPPUNIT=TRUE
+fi
+OUT_INTERNAL_ZLIB=FALSE
+if [ "$INTERNAL_ZLIB" = "1" ]; then
+    OUT_INTERNAL_ZLIB=TRUE
+fi
+OUT_INTERNAL_LIBPNG=FALSE
+if [ "$INTERNAL_LIBPNG" = "1" ]; then
+    OUT_INTERNAL_LIBPNG=TRUE
+fi
+OUT_INTERNAL_JPEG=FALSE
+if [ "$INTERNAL_JPEG" = "1" ]; then
+    OUT_INTERNAL_JPEG=TRUE
+fi
+OUT_INTERNAL_FREETYPE=FALSE
+if [ "$INTERNAL_FREETYPE" = "1" ]; then
+    OUT_INTERNAL_FREETYPE=TRUE
+fi
+OUT_INTERNAL_GD=FALSE
+if [ "$INTERNAL_GD" = "1" ]; then
+    OUT_INTERNAL_GD=TRUE
+fi
+OUT_INTERNAL_JSON=FALSE
+if [ "$INTERNAL_JSON" = "1" ]; then
+    OUT_INTERNAL_JSON=TRUE
+fi
+OUT_INTERNAL_GEOS=FALSE
+if [ "$INTERNAL_GEOS" = "1" ]; then
+    OUT_INTERNAL_GEOS=TRUE
+fi
+
 # dump vars to setup script
 {
     echo "#!/bin/sh"
@@ -454,15 +527,15 @@
     echo "export HTTPD_PORT=$HTTPD_PORT"
     echo "export TOMCAT_PORT=$TOMCAT_PORT"
     echo "export HAVE_SYSTEM_XERCES=$HAVE_SYSTEM_XERCES"
-    echo "export INTERNAL_ACE=$INTERNAL_ACE"
-    echo "export INTERNAL_CPPUNIT=$INTERNAL_CPPUNIT"
-    echo "export INTERNAL_ZLIB=$INTERNAL_ZLIB"
-    echo "export INTERNAL_LIBPNG=$INTERNAL_LIBPNG"
-    echo "export INTERNAL_JPEG=$INTERNAL_JPEG"
-    echo "export INTERNAL_FREETYPE=$INTERNAL_FREETYPE"
-    echo "export INTERNAL_GD=$INTERNAL_GD"
-    echo "export INTERNAL_JSON=$INTERNAL_JSON"
-    echo "export INTERNAL_GEOS=$INTERNAL_GEOS"
+    echo "export INTERNAL_ACE=$OUT_INTERNAL_ACE"
+    echo "export INTERNAL_CPPUNIT=$OUT_INTERNAL_CPPUNIT"
+    echo "export INTERNAL_ZLIB=$OUT_INTERNAL_ZLIB"
+    echo "export INTERNAL_LIBPNG=$OUT_INTERNAL_LIBPNG"
+    echo "export INTERNAL_JPEG=$OUT_INTERNAL_JPEG"
+    echo "export INTERNAL_FREETYPE=$OUT_INTERNAL_FREETYPE"
+    echo "export INTERNAL_GD=$OUT_INTERNAL_GD"
+    echo "export INTERNAL_JSON=$OUT_INTERNAL_JSON"
+    echo "export INTERNAL_GEOS=$OUT_INTERNAL_GEOS"
 } > "$OEM_WORK_DIR/env_vars.sh"
 chmod +x "$OEM_WORK_DIR/env_vars.sh"
 

Modified: trunk/MgDev/cmake_build.sh
===================================================================
--- trunk/MgDev/cmake_build.sh	2018-12-14 15:31:15 UTC (rev 9423)
+++ trunk/MgDev/cmake_build.sh	2018-12-16 14:44:32 UTC (rev 9424)
@@ -91,12 +91,12 @@
 echo "Setting up CMake in: $CMAKE_BUILD_DIR"
 cd "$CMAKE_BUILD_DIR" || exit
 if test $USE_NINJA -eq 1; then
-    cmake -G Ninja "$SOURCE_DIR" -DMG_INSTALL_PREFIX="$MG_INST_PREFIX" -DMG_CPU="$BUILD_CPU" -DWITH_JAVA=TRUE -DUSE_LD_GOLD="$USE_LD_GOLD" -DINTERNAL_XERCES=$INTERNAL_XERCES -DSANITIZE_ADDRESS=$USE_ASAN -DPHP_VER="$PHP_VER" -DHTTPD_VER="$HTTPD_VER" -DCMAKE_BUILD_TYPE="$BUILD_CONFIG" -DMG_OEM_WORK_DIR="$OEM_WORK_DIR"
+    cmake -G Ninja "$SOURCE_DIR" -DMG_INSTALL_PREFIX=$MG_INST_PREFIX -DMG_CPU=$BUILD_CPU -DWITH_JAVA=TRUE -DUSE_LD_GOLD=$USE_LD_GOLD -DSANITIZE_ADDRESS=$USE_ASAN -DPHP_VER=$PHP_VER -DHTTPD_VER=$HTTPD_VER -DCMAKE_BUILD_TYPE=$BUILD_CONFIG -DMG_OEM_WORK_DIR=$OEM_WORK_DIR -DINTERNAL_XERCES=$INTERNAL_XERCES -DINTERNAL_ACE=$INTERNAL_ACE -DINTERNAL_CPPUNIT=$INTERNAL_CPPUNIT -DINTERNAL_ZLIB=$INTERNAL_ZLIB -DINTERNAL_JPEG=$INTERNAL_JPEG -DINTERNAL_PNG=$INTERNAL_PNG -DINTERNAL_FREETYPE=$INTERNAL_FREETYPE -DINTERNAL_GD=$INTERNAL_GD -DINTERNAL_JSON=$INTERNAL_JSON -DINTERNAL_GEOS=$INTERNAL_GEOS
     check_build
     ninja
     check_build
 else
-    cmake "$SOURCE_DIR" -DMG_INSTALL_PREFIX="$MG_INST_PREFIX" -DMG_CPU="$BUILD_CPU" -DWITH_JAVA=TRUE -DUSE_LD_GOLD="$USE_LD_GOLD" -DINTERNAL_XERCES=$INTERNAL_XERCES -DSANITIZE_ADDRESS=$USE_ASAN -DPHP_VER="$PHP_VER" -DHTTPD_VER="$HTTPD_VER" -DCMAKE_BUILD_TYPE="$BUILD_CONFIG" -DMG_OEM_WORK_DIR="$OEM_WORK_DIR"
+    cmake "$SOURCE_DIR" -DMG_INSTALL_PREFIX=$MG_INST_PREFIX -DMG_CPU=$BUILD_CPU -DWITH_JAVA=TRUE -DUSE_LD_GOLD=$USE_LD_GOLD -DSANITIZE_ADDRESS=$USE_ASAN -DPHP_VER=$PHP_VER -DHTTPD_VER=$HTTPD_VER -DCMAKE_BUILD_TYPE=$BUILD_CONFIG -DMG_OEM_WORK_DIR=$OEM_WORK_DIR -DINTERNAL_XERCES=$INTERNAL_XERCES -DINTERNAL_ACE=$INTERNAL_ACE -DINTERNAL_CPPUNIT=$INTERNAL_CPPUNIT -DINTERNAL_ZLIB=$INTERNAL_ZLIB -DINTERNAL_JPEG=$INTERNAL_JPEG -DINTERNAL_PNG=$INTERNAL_PNG -DINTERNAL_FREETYPE=$INTERNAL_FREETYPE -DINTERNAL_GD=$INTERNAL_GD -DINTERNAL_JSON=$INTERNAL_JSON -DINTERNAL_GEOS=$INTERNAL_GEOS
     check_build
     make
     check_build



More information about the mapguide-commits mailing list