Skip to content

Commit 38a31fb

Browse files
author
robert
committed
Added OSG_DEBUG_DP macro
git-svn-id: http://www.openscenegraph.org/svn/osg/OpenSceneGraph/trunk@11554 16af8721-9629-0410-8352-f15c8da7e697
0 parents  commit 38a31fb

File tree

3,511 files changed

+864445
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

3,511 files changed

+864445
-0
lines changed

AUTHORS.txt

+418
Large diffs are not rendered by default.

CMakeLists.txt

+949
Large diffs are not rendered by default.

CMakeModules/CheckAtomicOps.cmake

+122
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
# Check for availability of atomic operations
2+
# This module defines
3+
# OPENTHREADS_HAVE_ATOMIC_OPS
4+
5+
INCLUDE(CheckCXXSourceRuns)
6+
7+
# Do step by step checking,
8+
CHECK_CXX_SOURCE_RUNS("
9+
#include <cstdlib>
10+
11+
int main()
12+
{
13+
unsigned value = 0;
14+
void* ptr = &value;
15+
__sync_add_and_fetch(&value, 1);
16+
__sync_synchronize();
17+
__sync_sub_and_fetch(&value, 1);
18+
if (!__sync_bool_compare_and_swap(&value, 0, 1))
19+
return EXIT_FAILURE;
20+
21+
if (!__sync_bool_compare_and_swap(&ptr, ptr, ptr))
22+
return EXIT_FAILURE;
23+
24+
return EXIT_SUCCESS;
25+
}
26+
" _OPENTHREADS_ATOMIC_USE_GCC_BUILTINS)
27+
28+
CHECK_CXX_SOURCE_RUNS("
29+
#include <stdlib.h>
30+
31+
int main(int, const char**)
32+
{
33+
unsigned value = 0;
34+
void* ptr = &value;
35+
__add_and_fetch(&value, 1);
36+
__synchronize(value);
37+
__sub_and_fetch(&value, 1);
38+
if (!__compare_and_swap(&value, 0, 1))
39+
return EXIT_FAILURE;
40+
41+
if (!__compare_and_swap((unsigned long*)&ptr, (unsigned long)ptr, (unsigned long)ptr))
42+
return EXIT_FAILURE;
43+
44+
return EXIT_SUCCESS;
45+
}
46+
" _OPENTHREADS_ATOMIC_USE_MIPOSPRO_BUILTINS)
47+
48+
CHECK_CXX_SOURCE_RUNS("
49+
#include <atomic.h>
50+
#include <cstdlib>
51+
52+
int main(int, const char**)
53+
{
54+
uint_t value = 0;
55+
void* ptr = &value;
56+
atomic_inc_uint_nv(&value);
57+
membar_consumer();
58+
atomic_dec_uint_nv(&value);
59+
if (0 != atomic_cas_uint(&value, 0, 1))
60+
return EXIT_FAILURE;
61+
62+
if (ptr != atomic_cas_ptr(&ptr, ptr, ptr))
63+
return EXIT_FAILURE;
64+
65+
return EXIT_SUCCESS;
66+
}
67+
" _OPENTHREADS_ATOMIC_USE_SUN)
68+
69+
CHECK_CXX_SOURCE_RUNS("
70+
#include <windows.h>
71+
#include <intrin.h>
72+
#include <cstdlib>
73+
74+
#pragma intrinsic(_InterlockedAnd)
75+
#pragma intrinsic(_InterlockedOr)
76+
#pragma intrinsic(_InterlockedXor)
77+
78+
int main(int, const char**)
79+
{
80+
volatile long value = 0;
81+
long data = 0;
82+
long* volatile ptr = &data;
83+
84+
InterlockedIncrement(&value);
85+
MemoryBarrier();
86+
InterlockedDecrement(&value);
87+
88+
if (0 != InterlockedCompareExchange(&value, 1, 0))
89+
return EXIT_FAILURE;
90+
91+
if (ptr != InterlockedCompareExchangePointer((PVOID volatile*)&ptr, (PVOID)ptr, (PVOID)ptr))
92+
return EXIT_FAILURE;
93+
94+
return EXIT_SUCCESS;
95+
}
96+
" _OPENTHREADS_ATOMIC_USE_WIN32_INTERLOCKED)
97+
98+
CHECK_CXX_SOURCE_RUNS("
99+
#include <libkern/OSAtomic.h>
100+
101+
int main()
102+
{
103+
volatile int32_t value = 0;
104+
long data = 0;
105+
long * volatile ptr = &data;
106+
107+
OSAtomicIncrement32(&value);
108+
OSMemoryBarrier();
109+
OSAtomicDecrement32(&value);
110+
OSAtomicCompareAndSwapInt(value, 1, &value);
111+
OSAtomicCompareAndSwapPtr(ptr, ptr, (void * volatile *)&ptr);
112+
}
113+
" _OPENTHREADS_ATOMIC_USE_BSD_ATOMIC)
114+
115+
116+
IF(NOT _OPENTHREADS_ATOMIC_USE_GCC_BUILTINS AND
117+
NOT _OPENTHREADS_ATOMIC_USE_MIPOSPRO_BUILTINS AND
118+
NOT _OPENTHREADS_ATOMIC_USE_SUN AND
119+
NOT _OPENTHREADS_ATOMIC_USE_WIN32_INTERLOCKED AND
120+
NOT _OPENTHREADS_ATOMIC_USE_BSD_ATOMIC)
121+
SET(_OPENTHREADS_ATOMIC_USE_MUTEX 1)
122+
ENDIF()
+116
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
################################################################################################
2+
# this Macro find a generic dependency, handling debug suffix
3+
# all the paramenter are required, in case of lists, use "" in calling
4+
################################################################################################
5+
6+
MACRO(FIND_DEPENDENCY DEPNAME INCLUDEFILE LIBRARY_NAMES_BASE SEARCHPATHLIST DEBUGSUFFIX EXSUFFIX)
7+
8+
MESSAGE(STATUS "searching ${DEPNAME} -->${INCLUDEFILE}<-->${LIBRARY_NAMES_BASE}<-->${SEARCHPATHLIST}<--")
9+
10+
SET(MY_PATH_INCLUDE )
11+
SET(MY_PATH_LIB )
12+
13+
FOREACH( MYPATH ${SEARCHPATHLIST} )
14+
SET(MY_PATH_INCLUDE ${MY_PATH_INCLUDE} ${MYPATH}/include)
15+
SET(MY_PATH_LIB ${MY_PATH_LIB} ${MYPATH}/lib)
16+
ENDFOREACH( MYPATH ${SEARCHPATHLIST} )
17+
18+
FIND_PATH("${DEPNAME}_INCLUDE_DIR" ${INCLUDEFILE}
19+
${MY_PATH_INCLUDE}
20+
NO_DEFAULT_PATH
21+
)
22+
MARK_AS_ADVANCED("${DEPNAME}_INCLUDE_DIR")
23+
#MESSAGE( " ${DEPNAME}_INCLUDE_DIR --> ${${DEPNAME}_INCLUDE_DIR}<--")
24+
25+
SET(LIBRARY_NAMES "")
26+
FOREACH(LIBNAME ${LIBRARY_NAMES_BASE})
27+
LIST(APPEND LIBRARY_NAMES "${LIBNAME}${EXSUFFIX}")
28+
ENDFOREACH(LIBNAME)
29+
FIND_LIBRARY("${DEPNAME}_LIBRARY"
30+
NAMES ${LIBRARY_NAMES}
31+
PATHS ${MY_PATH_LIB}
32+
NO_DEFAULT_PATH
33+
)
34+
SET(LIBRARY_NAMES_DEBUG "")
35+
FOREACH(LIBNAME ${LIBRARY_NAMES_BASE})
36+
LIST(APPEND LIBRARY_NAMES_DEBUG "${LIBNAME}${DEBUGSUFFIX}${EXSUFFIX}")
37+
ENDFOREACH(LIBNAME)
38+
FIND_LIBRARY("${DEPNAME}_LIBRARY_DEBUG"
39+
NAMES ${LIBRARY_NAMES_DEBUG}
40+
PATHS ${MY_PATH_LIB}
41+
NO_DEFAULT_PATH
42+
)
43+
MARK_AS_ADVANCED("${DEPNAME}_LIBRARY")
44+
#MESSAGE( " ${DEPNAME}_LIBRARY --> ${${DEPNAME}_LIBRARY}<--")
45+
SET( ${DEPNAME}_FOUND "NO" )
46+
IF(${DEPNAME}_INCLUDE_DIR AND ${DEPNAME}_LIBRARY)
47+
SET( ${DEPNAME}_FOUND "YES" )
48+
IF(NOT ${DEPNAME}_LIBRARY_DEBUG)
49+
MESSAGE("-- Warning Debug ${DEPNAME} not found, using: ${${DEPNAME}_LIBRARY}")
50+
SET(${DEPNAME}_LIBRARY_DEBUG "${${DEPNAME}_LIBRARY}")
51+
ENDIF(NOT ${DEPNAME}_LIBRARY_DEBUG)
52+
ENDIF(${DEPNAME}_INCLUDE_DIR AND ${DEPNAME}_LIBRARY)
53+
ENDMACRO(FIND_DEPENDENCY DEPNAME INCLUDEFILE LIBRARY_NAMES_BASE SEARCHPATHLIST DEBUGSUFFIX)
54+
55+
56+
################################################################################################
57+
# this Macro is tailored to Mike dependencies
58+
################################################################################################
59+
60+
MACRO(SEARCH_3RDPARTY OSG_3RDPARTY_BIN)
61+
FIND_DEPENDENCY(TIFF tiff.h libtiff ${OSG_3RDPARTY_BIN} "D" "_i")
62+
FIND_DEPENDENCY(FREETYPE ft2build.h "freetype;freetype234;freetype234MT;freetype235;freetype237;freetype238" ${OSG_3RDPARTY_BIN} "d" "")
63+
IF(FREETYPE_FOUND)
64+
#forcing subsequent FindFreeType stuff to not search for other variables.... kind of a hack
65+
SET(FREETYPE_INCLUDE_DIR_ft2build ${FREETYPE_INCLUDE_DIR} CACHE PATH "" FORCE)
66+
SET(FREETYPE_INCLUDE_DIR_freetype2 ${FREETYPE_INCLUDE_DIR} CACHE PATH "" FORCE)
67+
MARK_AS_ADVANCED(FREETYPE_INCLUDE_DIR_ft2build FREETYPE_INCLUDE_DIR_freetype2)
68+
SET(FREETYPE_INCLUDE_DIRS "${FREETYPE_INCLUDE_DIR_ft2build};${FREETYPE_INCLUDE_DIR_freetype2}")
69+
ENDIF(FREETYPE_FOUND)
70+
FIND_DEPENDENCY(CURL curl/curl.h "libcurl;curllib" ${OSG_3RDPARTY_BIN} "D" "")
71+
FIND_DEPENDENCY(JPEG jpeglib.h libjpeg ${OSG_3RDPARTY_BIN} "D" "")
72+
FIND_DEPENDENCY(GDAL gdal.h "gdal;gdal16" ${OSG_3RDPARTY_BIN} "d" "_i")
73+
FIND_DEPENDENCY(GLUT GL/glut.h glut32 ${OSG_3RDPARTY_BIN} "D" "")
74+
IF(GLUT_FOUND)
75+
#forcing subsequent FindGlut stuff to not search for other variables.... kind of a hack
76+
SET(GLUT_glut_LIBRARY ${GLUT_LIBRARY} CACHE FILEPATH "")
77+
MARK_AS_ADVANCED(GLUT_glut_LIBRARY)
78+
ENDIF(GLUT_FOUND)
79+
FIND_DEPENDENCY(GIFLIB gif_lib.h "ungif;libungif" ${OSG_3RDPARTY_BIN} "D" "")
80+
FIND_DEPENDENCY(ZLIB zlib.h "z;zlib;zlib1" ${OSG_3RDPARTY_BIN} "D" "")
81+
IF(ZLIB_FOUND)
82+
FIND_DEPENDENCY(PNG png.h "libpng;libpng13" ${OSG_3RDPARTY_BIN} "D" "")
83+
IF(PNG_FOUND)
84+
#forcing subsequent FindPNG stuff to not search for other variables.... kind of a hack
85+
SET(PNG_PNG_INCLUDE_DIR ${PNG_INCLUDE_DIR} CACHE FILEPATH "")
86+
MARK_AS_ADVANCED(PNG_PNG_INCLUDE_DIR)
87+
ENDIF(PNG_FOUND)
88+
ENDIF(ZLIB_FOUND)
89+
#luigi#INCLUDE(FindOSGDepends.cmake)
90+
ENDMACRO(SEARCH_3RDPARTY OSG_3RDPARTY_BIN)
91+
92+
93+
94+
95+
################################################################################################
96+
# this is code for handling optional 3DPARTY usage
97+
################################################################################################
98+
99+
OPTION(USE_3DPARTY_BIN "Set to ON to use Mike prebuilt dependencies situated side of OpenSceneGraph source. Use OFF for avoiding." ON)
100+
IF(USE_3DPARTY_BIN)
101+
GET_FILENAME_COMPONENT(PARENT_DIR ${PROJECT_SOURCE_DIR} PATH)
102+
SET(TEST_3DPARTY_DIR "${PARENT_DIR}/3rdparty")
103+
IF(NOT EXISTS ${TEST_3DPARTY_DIR})
104+
IF(MSVC71)
105+
SET(TEST_3DPARTY_DIR "${PARENT_DIR}/3rdParty_win32binaries_vs71")
106+
ELSEIF(MSVC80)
107+
SET(TEST_3DPARTY_DIR "${PARENT_DIR}/3rdParty_win32binaries_vs80sp1")
108+
ELSEIF(MSVC90)
109+
SET(TEST_3DPARTY_DIR "${PARENT_DIR}/3rdParty_win32binaries_vs90sp1")
110+
ENDIF()
111+
ENDIF(NOT EXISTS ${TEST_3DPARTY_DIR})
112+
SET(ACTUAL_3DPARTY_DIR "${TEST_3DPARTY_DIR}" CACHE PATH "Location of 3rdparty dependencies")
113+
IF(EXISTS ${ACTUAL_3DPARTY_DIR})
114+
SEARCH_3RDPARTY(${ACTUAL_3DPARTY_DIR})
115+
ENDIF(EXISTS ${ACTUAL_3DPARTY_DIR})
116+
ENDIF(USE_3DPARTY_BIN)

0 commit comments

Comments
 (0)