|
| 1 | +cmake_minimum_required(VERSION 3.24) |
| 2 | +project(SeismicReader VERSION 1.0.0 LANGUAGES CXX) |
| 3 | + |
| 4 | +# Set the C++ standard to C++17 |
| 5 | +set(CMAKE_CXX_STANDARD 17) |
| 6 | +set(CMAKE_CXX_STANDARD_REQUIRED ON) |
| 7 | + |
| 8 | +# Specify MDIO installation directory (set by bootstrap.sh) |
| 9 | +set(MDIO_INSTALL_DIR "${CMAKE_SOURCE_DIR}/inst") |
| 10 | + |
| 11 | +# Add library directories |
| 12 | +link_directories( |
| 13 | + ${MDIO_INSTALL_DIR}/lib |
| 14 | + ${MDIO_INSTALL_DIR}/lib/drivers |
| 15 | +) |
| 16 | + |
| 17 | +# CURL is built and installed by the MDIO installer; no need for separate find_package. |
| 18 | + |
| 19 | +# Define MDIO linker flags - corrected format to match SCons configuration |
| 20 | +set(MDIO_LINK_FLAGS |
| 21 | + "-Wl,-rpath,${MDIO_INSTALL_DIR}/lib,-rpath,${MDIO_INSTALL_DIR}/lib/drivers,--whole-archive,-L${MDIO_INSTALL_DIR}/lib,-L${MDIO_INSTALL_DIR}/lib/drivers,\ |
| 22 | +-lnlohmann_json_schema_validator,\ |
| 23 | +-ltensorstore_driver_zarr_bzip2_compressor,\ |
| 24 | +-ltensorstore_driver_zarr_driver,\ |
| 25 | +-ltensorstore_driver_zarr_spec,\ |
| 26 | +-ltensorstore_driver_zarr_zlib_compressor,\ |
| 27 | +-ltensorstore_driver_zarr_zstd_compressor,\ |
| 28 | +-ltensorstore_driver_zarr_blosc_compressor,\ |
| 29 | +-ltensorstore_kvstore_gcs_http,\ |
| 30 | +-ltensorstore_kvstore_gcs_gcs_resource,\ |
| 31 | +-ltensorstore_kvstore_gcs_validate,\ |
| 32 | +-ltensorstore_kvstore_gcs_http_gcs_resource,\ |
| 33 | +-ltensorstore_kvstore_s3,\ |
| 34 | +-ltensorstore_kvstore_s3_aws_credentials_resource,\ |
| 35 | +-ltensorstore_kvstore_s3_credentials_default_credential_provider,\ |
| 36 | +-ltensorstore_kvstore_s3_credentials_environment_credential_provider,\ |
| 37 | +-ltensorstore_kvstore_s3_credentials_file_credential_provider,\ |
| 38 | +-ltensorstore_kvstore_s3_credentials_ec2_credential_provider,\ |
| 39 | +-ltensorstore_kvstore_s3_s3_metadata,\ |
| 40 | +-ltensorstore_kvstore_s3_s3_resource,\ |
| 41 | +-ltensorstore_driver_json,\ |
| 42 | +-ltensorstore_internal_cache_cache_pool_resource,\ |
| 43 | +-ltensorstore_internal_data_copy_concurrency_resource,\ |
| 44 | +-ltensorstore_kvstore_file,\ |
| 45 | +-ltensorstore_internal_file_io_concurrency_resource,\ |
| 46 | +-ltensorstore_internal_cache_kvs_backed_chunk_cache,\ |
| 47 | +-labsl,\ |
| 48 | +-lblosc,\ |
| 49 | +-ltensorstore,\ |
| 50 | +-lre2,\ |
| 51 | +-lriegeli,\ |
| 52 | +-ltinyxml2_tinyxml2,\ |
| 53 | +-lcurl,\ |
| 54 | +-lopenssl,\ |
| 55 | +--no-whole-archive,\ |
| 56 | +-lpthread,\ |
| 57 | +-lm" |
| 58 | +) |
| 59 | + |
| 60 | +# Debug: Print out the MDIO_LINK_FLAGS |
| 61 | +message(STATUS "MDIO_LINK_FLAGS: ${MDIO_LINK_FLAGS}") |
| 62 | + |
| 63 | +# Create the executable target. (Assumes main.cpp exists in your project.) |
| 64 | +add_executable(read main.cc) |
| 65 | + |
| 66 | +# Append the linker flags to the target's link flags. |
| 67 | +set_target_properties(read PROPERTIES LINK_FLAGS "${MDIO_LINK_FLAGS}") |
| 68 | + |
| 69 | +# Add compile definitions |
| 70 | +target_compile_definitions(read PRIVATE HAVE_MDIO MAX_NUM_SLICES=32) |
| 71 | + |
| 72 | +# Add MDIO and third-party include directories for target 'read' |
| 73 | +# Collect all immediate subdirectories from the MDIO include directory. |
| 74 | +file(GLOB CHILD_DIRS LIST_DIRECTORIES true "${MDIO_INSTALL_DIR}/include/*") |
| 75 | + |
| 76 | +# Also include the top-level include directory so that headers like "mdio/mdio.h" are found. |
| 77 | +list(INSERT CHILD_DIRS 0 "${MDIO_INSTALL_DIR}/include") |
| 78 | + |
| 79 | +# Remove any unwanted directories (for example, the gtest-src directory) |
| 80 | +foreach(dir ${CHILD_DIRS}) |
| 81 | + get_filename_component(basename ${dir} NAME) |
| 82 | + if(basename MATCHES "gtest-src") |
| 83 | + list(REMOVE_ITEM CHILD_DIRS "${dir}") |
| 84 | + endif() |
| 85 | +endforeach() |
| 86 | + |
| 87 | +# Append additional directories that the installer uses but might not be one-level deep. |
| 88 | +list(APPEND CHILD_DIRS |
| 89 | + "${MDIO_INSTALL_DIR}/include/nlohmann_json-src/include" |
| 90 | + "${MDIO_INSTALL_DIR}/include/half-src/include" |
| 91 | +) |
| 92 | + |
| 93 | +target_include_directories(read PRIVATE ${CHILD_DIRS}) |
| 94 | + |
| 95 | +# Debug: Print out the include directories for target 'read' |
| 96 | +get_target_property(READ_INCLUDES read INCLUDE_DIRECTORIES) |
| 97 | +message(STATUS "Target 'read' include directories: ${READ_INCLUDES}") |
0 commit comments