File: FindMissingVersions.cmake

package info (click to toggle)
yade 2025.2.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 33,308 kB
  • sloc: cpp: 93,298; python: 50,409; sh: 577; makefile: 162
file content (86 lines) | stat: -rw-r--r-- 3,977 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# This is a supplementary file for libVersions module. It forces finding versions of those
# libraries that do not have a detectable version number inside them
# The only way to determine version is by reading the actual source files.
# I do this by checking their md5sum.

# This doesn't work inside docker. Because uname -m returns parent architectuure, not the docker one.
# if(CMAKE_VERSION VERSION_LESS "3.17.0") # https://stackoverflow.com/questions/11944060/how-to-detect-target-architecture-using-cmake
#     EXECUTE_PROCESS( COMMAND uname -m COMMAND tr -d '\n' OUTPUT_VARIABLE ARCHITECTURE )
# else()                                  # https://cmake.org/cmake/help/latest/variable/CMAKE_HOST_SYSTEM_PROCESSOR.html  - new cmake version calls uname -m natively
#     set(ARCHITECTURE CMAKE_HOST_SYSTEM_PROCESSOR)
# endif()

# So let's use dpkg. A very simple and efficient method....
EXECUTE_PROCESS( COMMAND /usr/bin/dpkg --print-architecture COMMAND tr -d '\n' OUTPUT_VARIABLE ARCHITECTURE )
if (NOT ARCHITECTURE) # .... which doesn't work on other linux distributions. So someone might want to fix this later.
    # Warning: uname -m doesn't work properly inside i386 docker (but seems to work with ppc64le and aarch64)
    EXECUTE_PROCESS( COMMAND /usr/sbin/uname -m COMMAND tr -d '\n' OUTPUT_VARIABLE ARCHITECTURE )
    if (NOT ARCHITECTURE)
        set(ARCHITECTURE "unknown")
    endif()
endif()

message( STATUS "Architecture: ${ARCHITECTURE}" )

##################################################################################
##### Find version of freeglut by reading md5sum of include/GL/freeglut_std.h
##### I have downloaded all available freeglut versions and did on them:
#####       find -type f -name "freeglut_std.h" -exec md5sum {} \;

IF(ENABLE_GUI)
FIND_PACKAGE(GLUT)
find_path(FORCE_FREEGLUT_PATH freeglut_std.h ${GLUT_INCLUDE_DIR}/GL "/usr/include/GL")
message(STATUS "Found freeglut: ${FORCE_FREEGLUT_PATH}")

execute_process(COMMAND "/usr/bin/md5sum" "${FORCE_FREEGLUT_PATH}/freeglut_std.h"
    RESULT_VARIABLE _FORCE_FREEGLUT_SEARCH_SUCCESS
    OUTPUT_VARIABLE _FORCE_FREEGLUT_VALUES
    ERROR_VARIABLE  _FORCE_FREEGLUT_ERROR_VALUE
    OUTPUT_STRIP_TRAILING_WHITESPACE)

separate_arguments(_FORCE_FREEGLUT_VALUES)

# make sure there is anything. In case if freeglut3-dev package is not installed
IF(_FORCE_FREEGLUT_VALUES)
	list(GET _FORCE_FREEGLUT_VALUES 0 _FORCE_FREEGLUT_MDSUM)

	MESSAGE(STATUS "md5sum of freegult ${FORCE_FREEGLUT_PATH}/freeglut_std.h is: ${_FORCE_FREEGLUT_MDSUM}")

	if("${_FORCE_FREEGLUT_MDSUM}" STREQUAL "fce0117bba35ec344ed467bddc4e65e6")
		set(FREEGLUT_VERSION_MAJOR 2)
		set(FREEGLUT_VERSION_MINOR 6)
		set(FREEGLUT_VERSION_PATCH 0)
		set(FREEGLUT_VERSION_STR "2.6.0")
	elseif("${_FORCE_FREEGLUT_MDSUM}" STREQUAL "2ee37030c339df044b960e22ae55bf61")
		set(FREEGLUT_VERSION_MAJOR 2)
		set(FREEGLUT_VERSION_MINOR 6)
		set(FREEGLUT_VERSION_PATCH 1)
		set(FREEGLUT_VERSION_STR "2.6.0rc1")
	elseif("${_FORCE_FREEGLUT_MDSUM}" STREQUAL "6470390b023f271342287319770e5f51")
		set(FREEGLUT_VERSION_MAJOR 2)
		set(FREEGLUT_VERSION_MINOR 8)
		set(FREEGLUT_VERSION_PATCH 0)
		set(FREEGLUT_VERSION_STR "2.8.0")
	elseif("${_FORCE_FREEGLUT_MDSUM}" STREQUAL "791a2febd8584ec530cdd7676191b6d5")
		set(FREEGLUT_VERSION_MAJOR 2)
		set(FREEGLUT_VERSION_MINOR 8)
		set(FREEGLUT_VERSION_PATCH 1)
		set(FREEGLUT_VERSION_STR "2.8.1")
	elseif("${_FORCE_FREEGLUT_MDSUM}" STREQUAL "5d350938fc0be29757a26e466fff6414")
		set(FREEGLUT_VERSION_MAJOR 3)
		set(FREEGLUT_VERSION_MINOR 0)
		set(FREEGLUT_VERSION_PATCH 0)
		set(FREEGLUT_VERSION_STR "3.0.0")
	else()
		set(FREEGLUT_VERSION_MAJOR -1)
		set(FREEGLUT_VERSION_MINOR -1)
		set(FREEGLUT_VERSION_PATCH -1)
		set(FREEGLUT_VERSION_STR "unknown")
	endif()
	ADD_DEFINITIONS("-DFREEGLUT_VERSION_MAJOR=${FREEGLUT_VERSION_MAJOR}")
	MESSAGE(STATUS "freegult version is ${FREEGLUT_VERSION_STR}")
ENDIF(_FORCE_FREEGLUT_VALUES)
ENDIF(ENABLE_GUI)

## Add below md5sums of other source files if necessary.