Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ fort.*
RUN/PICS
*.sublime-*
RUN/
/golden_record/
*.pdf
\#*
*.so
Expand Down
120 changes: 94 additions & 26 deletions cmake/Util.cmake
Original file line number Diff line number Diff line change
@@ -1,39 +1,107 @@
include(FetchContent)

function(find_or_fetch DEPENDENCY)
if(DEFINED ENV{CODE})
set(${DEPENDENCY}_SOURCE_DIR $ENV{CODE}/${DEPENDENCY})
message(STATUS "Using ${DEPENDENCY} in $ENV{CODE}/${DEPENDENCY}")
else()
set(REPO_URL https://github.com/itpplasma/${DEPENDENCY}.git)
set(REMOTE_BRANCH "")

if(${DEPENDENCY} STREQUAL "libneo")
if(DEFINED LIBNEO_BRANCH AND NOT "${LIBNEO_BRANCH}" STREQUAL "")
string(STRIP "${LIBNEO_BRANCH}" REMOTE_BRANCH)
elseif(DEFINED ENV{LIBNEO_BRANCH} AND NOT "$ENV{LIBNEO_BRANCH}" STREQUAL "")
string(STRIP "$ENV{LIBNEO_BRANCH}" REMOTE_BRANCH)
string(TOUPPER "${DEPENDENCY}" _dep_upper)
string(TOLOWER "${DEPENDENCY}" _dep_lower)

set(_source_dir "")
set(_use_local FALSE)

# Allow explicit override via <DEPENDENCY>_SOURCE_DIR cache variable
set(_override_var "${_dep_upper}_SOURCE_DIR")
if(DEFINED ${_override_var})
get_filename_component(_candidate "${${_override_var}}" ABSOLUTE "${CMAKE_SOURCE_DIR}")
if(IS_DIRECTORY "${_candidate}")
set(_source_dir "${_candidate}")
set(_use_local TRUE)
else()
message(FATAL_ERROR "${_override_var}='${_candidate}' is not a directory")
endif()
endif()

if(NOT _use_local AND DEFINED ENV{CODE})
get_filename_component(_candidate "$ENV{CODE}/${_dep_lower}" ABSOLUTE)
if(IS_DIRECTORY "${_candidate}")
set(_source_dir "${_candidate}")
set(_use_local TRUE)
endif()
endif()

if(_use_local)
message(STATUS "Using ${_dep_lower} in ${_source_dir}")
set(${_dep_upper}_SOURCE_DIR "${_source_dir}" CACHE PATH "" FORCE)
if("${_dep_lower}" STREQUAL "libneo")
set(LIBNEO_ENABLE_TESTS OFF CACHE BOOL "" FORCE)
endif()
add_subdirectory("${_source_dir}" "${CMAKE_CURRENT_BINARY_DIR}/${_dep_lower}" EXCLUDE_FROM_ALL)
return()
endif()

set(_repo_url "https://github.com/itpplasma/${_dep_lower}.git")
set(_repo_var "${_dep_upper}_REPO_URL")
if(DEFINED ${_repo_var} AND NOT "${${_repo_var}}" STREQUAL "")
set(_repo_url "${${_repo_var}}")
elseif(DEFINED ENV{${_repo_var}} AND NOT "$ENV{${_repo_var}}" STREQUAL "")
set(_repo_url "$ENV{${_repo_var}}")
endif()
if("${_dep_lower}" STREQUAL "libneo")
set(_branch "")
set(_branch_source "")
if(DEFINED LIBNEO_BRANCH AND NOT "${LIBNEO_BRANCH}" STREQUAL "")
string(STRIP "${LIBNEO_BRANCH}" _branch)
set(_branch_source "cache")
elseif(DEFINED ENV{LIBNEO_BRANCH} AND NOT "$ENV{LIBNEO_BRANCH}" STREQUAL "")
string(STRIP "$ENV{LIBNEO_BRANCH}" _branch)
set(_branch_source "env")
endif()

if(NOT _branch STREQUAL "")
execute_process(
COMMAND git ls-remote --heads ${_repo_url} ${_branch}
OUTPUT_VARIABLE _branch_exists
RESULT_VARIABLE _branch_check_status
OUTPUT_STRIP_TRAILING_WHITESPACE
)
set(_branch_valid FALSE)
if(_branch_check_status EQUAL 0 AND NOT _branch_exists STREQUAL "")
set(_branch_valid TRUE)
endif()
if(NOT _branch_valid)
message(WARNING "LIBNEO branch '${_branch}' (source: ${_branch_source}) not found; falling back to auto-detected branch")
set(_branch "")
endif()
endif()

if(REMOTE_BRANCH STREQUAL "")
get_branch_or_main(${REPO_URL} REMOTE_BRANCH)
if(_branch STREQUAL "")
get_branch_or_main(${_repo_url} _branch)
endif()
message(STATUS "Using ${DEPENDENCY} branch ${REMOTE_BRANCH} from ${REPO_URL}")

FetchContent_Declare(
${DEPENDENCY}
DOWNLOAD_EXTRACT_TIMESTAMP TRUE
GIT_REPOSITORY ${REPO_URL}
GIT_TAG ${REMOTE_BRANCH}
)
FetchContent_Populate(${DEPENDENCY})

message(STATUS "Using ${_dep_lower} branch ${_branch} from ${_repo_url}")

set(LIBNEO_ENABLE_TESTS OFF CACHE BOOL "" FORCE)
else()
set(_branch "")
set(_branch_var "${_dep_upper}_BRANCH")
if(DEFINED ${_branch_var} AND NOT "${${_branch_var}}" STREQUAL "")
string(STRIP "${${_branch_var}}" _branch)
elseif(DEFINED ENV{${_branch_var}} AND NOT "$ENV{${_branch_var}}" STREQUAL "")
string(STRIP "$ENV{${_branch_var}}" _branch)
endif()

if(_branch STREQUAL "")
get_branch_or_main(${_repo_url} _branch)
endif()

message(STATUS "Using ${_dep_lower} branch ${_branch} from ${_repo_url}")
endif()

add_subdirectory(${${DEPENDENCY}_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}/${DEPENDENCY}
EXCLUDE_FROM_ALL
FetchContent_Declare(${_dep_lower}
GIT_REPOSITORY ${_repo_url}
GIT_TAG ${_branch}
GIT_PROGRESS TRUE
DOWNLOAD_EXTRACT_TIMESTAMP TRUE
)
FetchContent_MakeAvailable(${_dep_lower})
endfunction()


Expand Down
13 changes: 11 additions & 2 deletions test/golden_record/compare_golden_results.sh
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,17 @@ compare_cases() {

for CASE in $TEST_CASES; do
total_cases=$((total_cases + 1))

echo "Comparing $CASE case..."

if [ ! -d "$REFERENCE_DIR/$CASE" ]; then
echo " ⚠ Skipping (missing in reference run)"
continue
fi
if [ ! -d "$CURRENT_DIR/$CASE" ]; then
echo " ✗ Current run missing directory: $CURRENT_DIR/$CASE"
missing_cases=$((missing_cases + 1))
continue
fi

# Check if this is the classifier_fast case with multiple files
if [ "$CASE" = "classifier_fast" ]; then
Expand Down Expand Up @@ -134,4 +143,4 @@ else
echo "Some tests failed or had missing files."
fi

exit $exit_code
exit $exit_code
Loading