Revision: 75122 http://sourceforge.net/p/brlcad/code/75122 Author: starseeker Date: 2020-03-26 02:07:27 +0000 (Thu, 26 Mar 2020) Log Message: ----------- Enable utahrle
Modified Paths: -------------- brlcad/branches/thirdparty_rework/src/other/CMakeLists.txt Modified: brlcad/branches/thirdparty_rework/src/other/CMakeLists.txt =================================================================== --- brlcad/branches/thirdparty_rework/src/other/CMakeLists.txt 2020-03-26 02:06:38 UTC (rev 75121) +++ brlcad/branches/thirdparty_rework/src/other/CMakeLists.txt 2020-03-26 02:07:27 UTC (rev 75122) @@ -72,33 +72,17 @@ if (${CMAKE_PROJECT_NAME}_REGEX_BUILD) - check_library_exists(c regcomp "" HAVE_LIBC_REGEX) + # Platform differences in default linker behavior make it difficult to + # guarantee that our libregex symbols will override libc. We'll avoid the + # issue by renaming our libregex symbols to be incompatible with libc. + ExternalProject_Add(REGEX_BLD + SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libregex" + BUILD_ALWAYS ${EXTERNAL_BUILD_UPDATE} + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR} -DLIB_DIR=${LIB_DIR} -DBIN_DIR=${BIN_DIR} + -DCMAKE_INSTALL_RPATH=${CMAKE_BUILD_RPATH} -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} + -DREGEX_PREFIX_STR=libregex_ + ) - if (BUILD_SHARED_LIBS AND HAVE_LIBC_REGEX AND "${BRLCAD_REGEX}" MATCHES "BUNDLED") - - # Our tests indicate that the system libc defines regex symbols, but - # we're still building with our local libregex. - # - # Platform differences in default linker behavior make it difficult - # to guarantee that our libregex symbols will override libc. We'll - # avoid the issue by renaming our libregex symbols to be - # incompatible with libc. - ExternalProject_Add(REGEX_BLD - SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libregex" - BUILD_ALWAYS ${EXTERNAL_BUILD_UPDATE} - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR} -DLIB_DIR=${LIB_DIR} -DBIN_DIR=${BIN_DIR} -DCMAKE_INSTALL_RPATH=${CMAKE_BUILD_RPATH} -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} -DREGEX_PREFIX_STR=libregex_ - ) - - else (BUILD_SHARED_LIBS AND HAVE_LIBC_REGEX AND "${BRLCAD_REGEX}" MATCHES "BUNDLED") - - ExternalProject_Add(REGEX_BLD - SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libregex" - BUILD_ALWAYS ${EXTERNAL_BUILD_UPDATE} - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR} - ) - - endif (BUILD_SHARED_LIBS AND HAVE_LIBC_REGEX AND "${BRLCAD_REGEX}" MATCHES "BUNDLED") - ExternalProject_Target(regex REGEX_BLD OUTPUT_FILE libregex${CMAKE_SHARED_LIBRARY_SUFFIX}.1.0.4 STATIC_OUTPUT_FILE libregex${CMAKE_STATIC_LIBRARY_SUFFIX} @@ -138,7 +122,9 @@ ExternalProject_Add(ZLIB_BLD SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libz" BUILD_ALWAYS ${EXTERNAL_BUILD_UPDATE} - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR} -DLIB_DIR=${LIB_DIR} -DBIN_DIR=${BIN_DIR} -DCMAKE_INSTALL_RPATH=${CMAKE_BUILD_RPATH} -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} -DZ_PREFIX_STR=brl_ + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR} -DLIB_DIR=${LIB_DIR} -DBIN_DIR=${BIN_DIR} + -DCMAKE_INSTALL_RPATH=${CMAKE_BUILD_RPATH} -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} + -DZ_PREFIX_STR=brl_ ) if (NOT MSVC) ExternalProject_Target(zlib ZLIB_BLD @@ -187,7 +173,8 @@ ExternalProject_Add(LZ4_BLD SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lz4" BUILD_ALWAYS ${EXTERNAL_BUILD_UPDATE} - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR} -DLIB_DIR=${LIB_DIR} -DBIN_DIR=${BIN_DIR} -DCMAKE_INSTALL_RPATH=${CMAKE_BUILD_RPATH} -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR} -DLIB_DIR=${LIB_DIR} -DBIN_DIR=${BIN_DIR} + -DCMAKE_INSTALL_RPATH=${CMAKE_BUILD_RPATH} -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} ) ExternalProject_Target(lz4 LZ4_BLD OUTPUT_FILE liblz4${CMAKE_SHARED_LIBRARY_SUFFIX} @@ -226,7 +213,8 @@ ExternalProject_Add(NETPBM_BLD SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libnetpbm" BUILD_ALWAYS ${EXTERNAL_BUILD_UPDATE} - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR} -DLIB_DIR=${LIB_DIR} -DBIN_DIR=${BIN_DIR} -DCMAKE_INSTALL_RPATH=${CMAKE_BUILD_RPATH} -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR} -DLIB_DIR=${LIB_DIR} -DBIN_DIR=${BIN_DIR} + -DCMAKE_INSTALL_RPATH=${CMAKE_BUILD_RPATH} -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} ) ExternalProject_Target(netpbm NETPBM_BLD OUTPUT_FILE libnetpbm${CMAKE_SHARED_LIBRARY_SUFFIX} @@ -286,7 +274,12 @@ if (${CMAKE_PROJECT_NAME}_PNG_BUILD) ExternalProject_Add(PNG_BLD SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libpng" - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR} -DCMAKE_INSTALL_LIBDIR=${LIB_DIR} -DCMAKE_PREFIX_PATH=${CMAKE_BINARY_DIR}/${LIB_DIR} -DCMAKE_INSTALL_RPATH=${CMAKE_BUILD_RPATH} -DPNG_STATIC=${BUILD_STATIC_LIBS} -DZLIB_ROOT=${CMAKE_BINARY_DIR} -DPNG_PREFIX=brl_ -DSKIP_INSTALL_FILES=ON -DSKIP_INSTALL_EXECUTABLES=ON -DSKIP_INSTALL_EXPORT=ON -DPNG_TESTS=OFF -Dld-version-script=OFF + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR} -DCMAKE_INSTALL_LIBDIR=${LIB_DIR} + -DCMAKE_PREFIX_PATH=${CMAKE_BINARY_DIR}/${LIB_DIR} -DCMAKE_INSTALL_RPATH=${CMAKE_BUILD_RPATH} + -DPNG_STATIC=${BUILD_STATIC_LIBS} -DZLIB_ROOT=${CMAKE_BINARY_DIR} -DSKIP_INSTALL_FILES=ON + -DSKIP_INSTALL_EXECUTABLES=ON -DSKIP_INSTALL_EXPORT=ON -DPNG_TESTS=OFF -Dld-version-script=OFF + -DPNG_PREFIX=brl_ + DEPENDS ${ZLIB_LIBRARIES} ) ExternalProject_Target(png PNG_BLD @@ -314,12 +307,11 @@ endif (${CMAKE_PROJECT_NAME}_PNG_BUILD) -if (0) -# libutahrle Library - The directory to perform ADD_SUBDIRECTORY on -# and the include directory for utahrle are different, so override the -# macro's setting of UTAHRLE_INCLUDE_DIR here. -set(UTAHRLE_HAVE_COMMON_H 1) +############################################################################### +# libutahrle - Runtime Length Encoding image file support +############################################################################### + set(utahrle_DESCRIPTION " Option for enabling and disabling compilation of the Utah Raster Toolkit library provided with BRL-CAD's source code. Default is AUTO, @@ -326,26 +318,48 @@ responsive to the toplevel BRLCAD_BUNDLED_LIBS option and testing first for a system version if BRLCAD_BUNDLED_LIBS is also AUTO. ") -THIRD_PARTY(libutahrle UTAHRLE utahrle utahrle_DESCRIPTION REQUIRED_VARS BRLCAD_LEVEL3 - ALIASES ENABLE_UTAHRLE FLAGS NOSYS) -if(BRLCAD_UTAHRLE_BUILD) +THIRD_PARTY(libutahrle UTAHRLE utahrle utahrle_DESCRIPTION REQUIRED_VARS BRLCAD_LEVEL3 ALIASES ENABLE_UTAHRLE FLAGS NOSYS) + +if (${CMAKE_PROJECT_NAME}_UTAHRLE_BUILD) + + set(UTAHRLE_MAJOR_VERSION 19) + set(UTAHRLE_MINOR_VERSION 0) + set(UTAHRLE_PATCH_VERSION 1) + set(UTAHRLE_VERSION ${UTAHRLE_MAJOR_VERSION}.${UTAHRLE_MINOR_VERSION}.${UTAHRLE_PATCH_VERSION}) + + ExternalProject_Add(UTAHRLE_BLD + SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libutahrle" + BUILD_ALWAYS ${EXTERNAL_BUILD_UPDATE} + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR} -DLIB_DIR=${LIB_DIR} -DBIN_DIR=${BIN_DIR} + -DCMAKE_INSTALL_RPATH=${CMAKE_BUILD_RPATH} -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS} + ) + + ExternalProject_Target(utahrle UTAHRLE_BLD + OUTPUT_FILE libutahrle${CMAKE_SHARED_LIBRARY_SUFFIX}.${UTAHRLE_VERSION} + STATIC_OUTPUT_FILE libutahrle${CMAKE_STATIC_LIBRARY_SUFFIX} + SYMLINKS "${LIB_DIR}/libutahrle${CMAKE_SHARED_LIBRARY_SUFFIX};${LIB_DIR}/libutahrle${CMAKE_SHARED_LIBRARY_SUFFIX}.${UTAHRLE_MAJOR_VERSION}" + LINK_TARGET "libutahrle${CMAKE_SHARED_LIBRARY_SUFFIX}" + STATIC_LINK_TARGET "libutahrle${CMAKE_STATIC_LIBRARY_SUFFIX}" + RPATH + ) + ExternalProject_ByProducts(UTAHRLE_BLD ${INCLUDE_DIR} + rle.h + rle_code.h + rle_config.h + rle_put.h + rle_raw.h + ) + + set(UTAHRLE_LIBRARIES utahrle CACHE STRING "Building bundled libregex" FORCE) + set(UTAHRLE_INCLUDE_DIRS "${BRLCAD_SOURCE_DIR}/${INCLUDE_DIR}" CACHE STRING "Directory containing regex headers." FORCE) + + SetTargetFolder(UTAHRLE_BLD "Third Party Libraries") SetTargetFolder(utahrle "Third Party Libraries") - SetTargetFolder(utahrle-static "Third Party Libraries") - set(UTAHRLE_INCLUDE_DIR "${BRLCAD_SOURCE_DIR}/src/other/libutahrle/include" CACHE STRING "directory with rle.h header" FORCE) - set(BRLCAD_UTAHRLE_INCLUDE_DIR "${UTAHRLE_INCLUDE_DIR}" CACHE STRING "directory with rle.h header" FORCE) - mark_as_advanced(UTAHRLE_INCLUDE_DIR) - mark_as_advanced(BRLCAD_UTAHRLE_INCLUDE_DIR) - # manage installed headers - get_directory_property(libutahrle_headers_orig DIRECTORY libutahrle DEFINITION LIBUTAHRLE_PUBLIC_HDRS) - set(libutahrle_headers) - foreach(utahh ${libutahrle_headers_orig}) - get_filename_component(utahhf ${utahh} NAME) - set(libutahrle_headers ${libutahrle_headers} libutahrle/include/${utahhf}) - endforeach(utahh ${libutahrle_headers_orig}) - BRLCAD_MANAGE_FILES(libutahrle_headers ${INCLUDE_DIR}) -endif(BRLCAD_UTAHRLE_BUILD) +endif (${CMAKE_PROJECT_NAME}_UTAHRLE_BUILD) +if (0) + # Tcl/Tk presents a number of complexities for BRL-CAD and CMake. # BRL-CAD requires far more knowledge of the details of a Tcl/Tk # installation than most programs, which unfortunately means the This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. _______________________________________________ BRL-CAD Source Commits mailing list brlcad-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/brlcad-commits