cmake_minimum_required(VERSION 3.0) if (UNIX) add_definitions(-D_POSIX_C_SOURCE=200809L) endif() include(CheckSymbolExists) check_symbol_exists(getrusage sys/resource.h HAVE_GETRUSAGE) ## # Determine the software version from VCS # Fallback to descriptive version if VCS unavailable # NB: the "unconfirmed-" part refers to this being a fallback option # and the reported version may or may not be accurate. set(VERSION_FALLBACK "unconfirmed-release-3.0") set(VERSION_FILE ${CMAKE_CURRENT_BINARY_DIR}/version.cpp) set(VERSION_FILE_IN ${CMAKE_CURRENT_SOURCE_DIR}/version.cpp.in) set(VERSION_CACHE_FILE ${CMAKE_CURRENT_BINARY_DIR}/version.cache) find_package(Git) add_custom_target( genversion COMMAND ${CMAKE_COMMAND} -D OUTPUT=${VERSION_FILE} -D TEMPLATE=${VERSION_FILE_IN} -D VERSION_FALLBACK=${VERSION_FALLBACK} -D VERSION_EXTRA=${VERSION_EXTRA} -D VERSION_CACHE_FILE=${VERSION_CACHE_FILE} -D GIT_EXECUTABLE=${GIT_EXECUTABLE} -P ${CMAKE_SOURCE_DIR}/scripts/genversion.cmake WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} ) add_custom_command( OUTPUT ${VERSION_FILE} DEPENDS genversion ) configure_file ( "${CMAKE_CURRENT_SOURCE_DIR}/TMC3Config.h.in" "${PROJECT_BINARY_DIR}/tmc3/TMC3Config.h" ) # # NB: avoid the use of wild cards for source files in this directory, # since cmake is unable to detect additions or removals in such cases # resulting in obscure broken builds when switching branches or # otherwise adding/removing files. # # Dependencies are permitted to use the wild card since they are # not expected to change without modifying this CMakeLists.txt. # file(GLOB PROJECT_IN_FILES "TMC3Config.h.in" "version.cpp.in" ) file(GLOB PROJECT_INC_FILES "AttributeDecoder.h" "AttributeEncoder.h" "BitReader.h" "BitWriter.h" "OctreeNeighMap.h" "PCCKdTree.h" "PCCMath.h" "PCCMisc.h" "PCCPointSet.h" "PCCPointSetProcessing.h" "PCCTMC3Common.h" "PCCTMC3Decoder.h" "PCCTMC3Encoder.h" "RAHT.h" "TMC3.h" "constants.h" "geometry.h" "geometry_octree.h" "geometry_trisoup.h" "hls.h" "io_hls.h" "io_tlv.h" "osspecific.h" "pcc_chrono.h" "ringbuf.h" "tables.h" "version.h" "../dependencies/nanoflann/*.hpp" "../dependencies/nanoflann/*.h" "../dependencies/arithmetic-coding/inc/*.h" "../dependencies/program-options-lite/*.h" ) file(GLOB PROJECT_CPP_FILES "AttributeDecoder.cpp" "AttributeEncoder.cpp" "OctreeNeighMap.cpp" "RAHT.cpp" "TMC3.cpp" "decoder.cpp" "encoder.cpp" "geometry_octree.cpp" "geometry_octree_decoder.cpp" "geometry_octree_encoder.cpp" "geometry_trisoup_decoder.cpp" "geometry_trisoup_encoder.cpp" "io_hls.cpp" "io_tlv.cpp" "osspecific.cpp" "pcc_chrono.cpp" "tables.cpp" "../dependencies/arithmetic-coding/src/*.cpp" "../dependencies/program-options-lite/*.cpp" ) source_group (inc FILES ${PROJECT_INC_FILES}) source_group (input FILES ${PROJECT_IN_FILES}) source_group (cpp FILES ${PROJECT_CPP_FILES}) include_directories( "${PROJECT_BINARY_DIR}/tmc3" "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/../dependencies/nanoflann" "${CMAKE_CURRENT_SOURCE_DIR}/../dependencies/arithmetic-coding/inc" "${CMAKE_CURRENT_SOURCE_DIR}/../dependencies/program-options-lite" ) add_executable (tmc3 ${PROJECT_CPP_FILES} ${PROJECT_INC_FILES} ${PROJECT_IN_FILES} ${VERSION_FILE} ) add_dependencies(tmc3 genversion) install (TARGETS tmc3 DESTINATION bin)