Skip to content

Commit 7fe6cdd

Browse files
committed
initial commit
0 parents  commit 7fe6cdd

File tree

3,906 files changed

+1026509
-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,906 files changed

+1026509
-0
lines changed

.gitignore

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Visual Studio
2+
[Bb]in/
3+
[Dd]ebug/
4+
[Rr]elease/
5+
x64/
6+
7+
*.opensdf
8+
*.sdf
9+
*.user
10+
*.suo
11+
12+
# Xcode and OS X
13+
build/
14+
*.pbxuser
15+
!default.pbxuser
16+
*.mode1v3
17+
!default.mode1v3
18+
*.mode2v3
19+
!default.mode2v3
20+
*.perspectivev3
21+
!default.perspectivev3
22+
xcuserdata
23+
*.xccheckout
24+
*.moved-aside
25+
DerivedData
26+
*.hmap
27+
*.ipa
28+
contents.xcworkspacedata
29+
Debug/
30+
Release/
31+
Lib/
32+
.DS_Store
33+
.Trashes

3.x_to_4.x_upgrade.txt

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
Major changes from version 3:
2+
3+
RakPeer::Startup() and RakPeer::Connect() now return enumeration results, rather than true or false.
4+
Security rewritten. InitializeSecurity now does not work unless LIBCAT_SECURITY is set to 1 in NativeFeatureIncludesOverrides.h. You pass the remote public key to RakPeer::Connect(), instead of RakPeer::InitializeSecurity()
5+
RakNetworkFactory has been deleted. Instead, most classes have a static function GetInstance() and DestroyInstance() defined by the macro STATIC_FACTORY_DECLARATIONS
6+
Deleted RakPeer::RPC, AutoRPC, ConnectionGraph, ReplicaManager, ReplicaManager2, Router, LightweightDatabase, and RakNetTransport. Use newer versions of these classes/function instead.
7+
BitStream now takes const references for all input parameters. If you want to cast, use SerializeCasted(), WriteCasted, and ReadCasted(), or else just copy the variable to the desired type first.
8+
RakNetTimeMS, RakNetTime, and RakNetTimeUS have been renamed and put in namespaces RakNet::TimeMS, RakNet::Time, and RakNet::TimeUS
9+
Most classes are now in the RakNet namespace.
10+
Added _FILE_AND_LINE_ to RakNetDefines.h so the user can strip out this information if desired.
11+
C# is now supported. See Help\swigtutorial.html
12+
NetworkIDObject and NetworkIDManager systems largely rewritten. IsNetworkIDAuthority() no longer is needed, so was removed.
13+
RakPeer::Startup() no longer takes a threadSleepTimer parameter.
14+
ID_UNCONNECTED_PONG now returns the pong always in 4 bytes (RakNet::TimeMS). Furthermore, the timestamp is in network order. Use BitStreams to read the timestamp out.
15+
IsConnected() was replaced with GetConnectionState()

CMakeLists.txt

+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
cmake_minimum_required(VERSION 2.6)
2+
3+
project(RakNet)
4+
5+
if( NOT APPLE )
6+
# check 64 bit
7+
if( CMAKE_SIZEOF_VOID_P MATCHES "4" )
8+
set( HAVE_64_BIT 0 )
9+
else( CMAKE_SIZEOF_VOID_P MATCHES "4")
10+
set( HAVE_64_BIT 1 )
11+
endif( CMAKE_SIZEOF_VOID_P MATCHES "4")
12+
endif( NOT APPLE )
13+
14+
IF (WIN32 AND NOT UNIX)
15+
set (PROGRAMFILESX86 $ENV{PROGRAMFILES})
16+
string(REPLACE "\\" "/" PROGRAMFILESX86 ${PROGRAMFILESX86})
17+
ENDIF(WIN32 AND NOT UNIX)
18+
19+
IF (WIN32 AND NOT UNIX)
20+
set(RAKNET_LIBRARY_LIBS ws2_32.lib)
21+
ELSE(WIN32 AND NOT UNIX)
22+
set(RAKNET_LIBRARY_LIBS pthread)
23+
ENDIF(WIN32 AND NOT UNIX)
24+
25+
26+
# Options
27+
option( RAKNET_ENABLE_SAMPLES "Generate RakNet sample projects if true." TRUE )
28+
option( RAKNET_ENABLE_DLL "Generate the DLL project if true." TRUE )
29+
option( RAKNET_ENABLE_STATIC "Generate the static library project if true." TRUE )
30+
option( RAKNET_GENERATE_INCLUDE_ONLY_DIR "Setup a include/RakNet/ directory in which all the headers are copied." FALSE )
31+
32+
set( RAKNETHEADERFILES ${RakNet_SOURCE_DIR}/Source ) #This name doesn't follow CMake conventions but for retro compatibility I'll let it there.
33+
34+
if( RAKNET_GENERATE_INCLUDE_ONLY_DIR )
35+
set( RAKNET_INCLUDE_ONLY_DIR ${RakNet_SOURCE_DIR}/include ) # this will be visible by client code
36+
set( RAKNET_NAMED_INCLUDE_ONLY_DIR ${RAKNET_INCLUDE_ONLY_DIR}/RakNet )
37+
message( STATUS "Setting up the ${RAKNET_NAMED_INCLUDE_ONLY_DIR} directory..." )
38+
# Now setup the include/RakNet/*.h files.
39+
file( MAKE_DIRECTORY ${RAKNET_NAMED_INCLUDE_ONLY_DIR} )
40+
file( COPY ${RAKNETHEADERFILES}/ DESTINATION ${RAKNET_NAMED_INCLUDE_ONLY_DIR} FILES_MATCHING PATTERN "*.h" )
41+
message( STATUS "DONE: Setting up the ${RAKNET_NAMED_INCLUDE_ONLY_DIR} directory." )
42+
endif()
43+
44+
set( RAKNET_INCLUDE_DIRS ${RAKNETHEADERFILES} ${RAKNET_INCLUDE_ONLY_DIR} PARENT_SCOPE ) # Visible from outside
45+
46+
include(./CmakeIncludes/CmakeMacros.txt)
47+
FIXLINKOPTIONS()
48+
FIXCOMPILEOPTIONS()
49+
50+
51+
add_subdirectory(Lib)
52+
53+
54+
set(RAKNET_COMMON_LIBS RakNetLibStatic)
55+
56+
if( RAKNET_GENERATE_SAMPLES )
57+
add_subdirectory(Samples)
58+
endif()

CmakeIncludes/CmakeMacros.txt

+107
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
#This file includes the global macros for the RakNet CMake files
2+
3+
MACRO(STANDARDSUBPROJECT PROJECTNAME)#Many of the projects just need the cpp files compiled and the header added to the project, this avoids repeating code
4+
project(${PROJECTNAME})
5+
FILE(GLOB ALL_CPP_SRCS *.cpp)
6+
FILE(GLOB ALL_HEADER_SRCS *.h)
7+
FILE(GLOB READMES readme.txt Specification.txt)
8+
include_directories(${RAKNETHEADERFILES} ./)
9+
FIXCOMPILEOPTIONS()
10+
add_executable(${PROJECTNAME} ${ALL_CPP_SRCS} ${ALL_HEADER_SRCS} ${READMES})
11+
target_link_libraries(${PROJECTNAME} ${RAKNET_COMMON_LIBS})
12+
set_target_properties(${PROJECTNAME} PROPERTIES PROJECT_GROUP Samples)
13+
ENDMACRO(STANDARDSUBPROJECT)
14+
15+
MACRO(STANDARDSUBPROJECTWITHOPTIONS PROJECTNAME EXTRAINCLUDES EXTRASOURCES EXTRALIBS)#Same as STANDARDSUBPROJECT but allows options changing
16+
project(${PROJECTNAME})
17+
FILE(GLOB ALL_CPP_SRCS *.cpp)
18+
FILE(GLOB ALL_HEADER_SRCS *.h)
19+
FILE(GLOB READMES readme.txt Specification.txt)
20+
FIXCOMPILEOPTIONS()
21+
include_directories(${RAKNETHEADERFILES} ./ ${EXTRAINCLUDES})
22+
add_executable(${PROJECTNAME} ${ALL_CPP_SRCS} ${ALL_HEADER_SRCS} ${EXTRASOURCES} ${READMES})
23+
target_link_libraries(${PROJECTNAME} ${RAKNET_COMMON_LIBS} ${EXTRALIBS})
24+
set_target_properties(${PROJECTNAME} PROPERTIES PROJECT_GROUP Samples)
25+
ENDMACRO(STANDARDSUBPROJECTWITHOPTIONS)
26+
27+
MACRO(STANDARDSUBPROJECTWITHOPTIONSSET PROJECTNAME)#Same as STANDARDSUBPROJECT but allows options changing, Items are passed by setting them for times when passing variable to the macro doesn't work
28+
project(${PROJECTNAME})
29+
FILE(GLOB ALL_CPP_SRCS *.cpp)
30+
FILE(GLOB ALL_HEADER_SRCS *.h)
31+
FILE(GLOB READMES readme.txt Specification.txt)
32+
FIXCOMPILEOPTIONS()
33+
include_directories(${RAKNETHEADERFILES} ./ ${EXTRAINCLUDES})
34+
add_executable(${PROJECTNAME} ${ALL_CPP_SRCS} ${ALL_HEADER_SRCS} ${EXTRASOURCES} ${READMES})
35+
target_link_libraries(${PROJECTNAME} ${RAKNET_COMMON_LIBS} ${EXTRALIBS})
36+
set_target_properties(${PROJECTNAME} PROPERTIES PROJECT_GROUP Samples)
37+
ENDMACRO(STANDARDSUBPROJECTWITHOPTIONSSET)
38+
39+
MACRO(STANDARDCSUBPROJECT PROJECTNAME)#Same as STANDARDSUBPROJECT but for C files
40+
project(${PROJECTNAME})
41+
FILE(GLOB ALL_C_SRCS *.c)
42+
FILE(GLOB ALL_HEADER_SRCS *.h)
43+
FILE(GLOB READMES readme.txt Specification.txt)
44+
include_directories(${RAKNETHEADERFILES} ./)
45+
FIXCOMPILEOPTIONS()
46+
add_executable(${PROJECTNAME} ${ALL_C_SRCS} ${ALL_HEADER_SRCS} ${READMES})
47+
target_link_libraries(${PROJECTNAME} ${RAKNET_COMMON_LIBS})
48+
set_target_properties(${PROJECTNAME} PROPERTIES PROJECT_GROUP Samples)
49+
ENDMACRO(STANDARDCSUBPROJECT)
50+
51+
MACRO(GETCURRENTFOLDER)#Gets the current foldername without the path
52+
string(REGEX REPLACE
53+
".+/(.?)"
54+
"\\1"
55+
current_folder "${CMAKE_CURRENT_SOURCE_DIR}")
56+
ENDMACRO(GETCURRENTFOLDER)
57+
58+
MACRO(VSUBFOLDER PROJECTNAME FOLDERNAME)#A macro interface for adding solution folders with a patched cmake
59+
set_target_properties(${PROJECTNAME} PROPERTIES PROJECT_GROUP ${FOLDERNAME})
60+
ENDMACRO(VSUBFOLDER)
61+
62+
MACRO(STANDARDNOTFOUNDMESSAGE NAME PLIBRARIES PINCLUDES EXTRA_INFORMATION)#If the libraries are not found, what to display
63+
message(STATUS "${NAME} was not found, paths were set to:\nLibrary: ${PLIBRARIES}\nInclude: ${PINCLUDES}\n${EXTRA_INFORMATION}The project will not compile unless installed to those locations.\nAs an alternative you can install the libraries and rerun cmake\n and see if the autosearch finds them")
64+
ENDMACRO(STANDARDNOTFOUNDMESSAGE)
65+
66+
MACRO(ADDCPPDEF DEF)#Currently replaces CXX flags with a define for WIN32 projects, may be changed
67+
IF(WIN32)
68+
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D ${DEF}")
69+
ENDIF()
70+
ENDMACRO(ADDCPPDEF)
71+
72+
MACRO(FIXCOMPILEOPTIONS)#Fix added compile options that may cause problems, also fix warnings
73+
74+
IF(NOT ${CMAKE_GENERATOR} STREQUAL "MSYS Makefiles")
75+
IF(WIN32 AND NOT UNIX)
76+
STRING(REGEX REPLACE "/Z[0-9a-zA-Z]+" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
77+
STRING(REGEX REPLACE "/Z[0-9a-zA-Z]+" "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
78+
ADDCPPDEF(_CRT_SECURE_NO_DEPRECATE)
79+
ADDCPPDEF(_CRT_NONSTDC_NO_DEPRECATE)
80+
SET(CMAKE_CXX_WARNING_LEVEL 0)
81+
IF(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
82+
STRING(REGEX REPLACE "/W[0-4]" "/W0" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
83+
ELSE(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
84+
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W0")
85+
ENDIF(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
86+
87+
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w")# -nowarn 4018 -nowarn 4305 -nowarn 4244")
88+
ENDIF(WIN32 AND NOT UNIX)
89+
ENDIF(NOT ${CMAKE_GENERATOR} STREQUAL "MSYS Makefiles")
90+
ENDMACRO(FIXCOMPILEOPTIONS)
91+
92+
MACRO(FIXLINKOPTIONS)#Fix added link options that may cause problems
93+
IF(WIN32 AND NOT UNIX)
94+
IF(NOT ${CMAKE_GENERATOR} STREQUAL "MSYS Makefiles")
95+
STRING(REGEX REPLACE "/STACK:[0-9]+" "" CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}")
96+
STRING(REGEX REPLACE "/STACK:[0-9]+" "" CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
97+
STRING(REGEX REPLACE "/machine:[0-9a-zA-Z]+" "" CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}")
98+
STRING(REGEX REPLACE "/machine:[0-9a-zA-Z]+" "" CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
99+
ENDIF(NOT ${CMAKE_GENERATOR} STREQUAL "MSYS Makefiles")
100+
ENDIF(WIN32 AND NOT UNIX)
101+
ENDMACRO(FIXLINKOPTIONS)
102+
103+
MACRO(FINDREADMES)
104+
FILE(GLOB READMES readme.txt)
105+
ENDMACRO(FINDREADMES)
106+
107+
include(${RakNet_SOURCE_DIR}/CmakeIncludes/FindMacros.txt)#The macros for setting variables and performing finds

0 commit comments

Comments
 (0)