Browse Source

Added SFML cmake support, only builds the SFML sample related to the version of SFML detected

David Wimsey 11 years ago
parent
commit
e2e42d2481

+ 2 - 0
Build/.gitignore

@@ -25,6 +25,8 @@ invaders
 pyinvaders
 luainvaders
 sdl2
+sfml
+sfml2
 scores.txt
 options.dat
 log.txt

+ 40 - 1
Build/CMakeLists.txt

@@ -482,7 +482,6 @@ if(BUILD_SAMPLES)
         		message("-- Can SDL2 sample be built - yes")
 			include_directories(${SDL_INCLUDE_DIR} ${GLEW_INCLUDE_DIR})
 
-			#bl_sample(sdl2 ${sample_LIBRARIES}  ${SDL_LIBRARY} -lXxf86vm -lSDL2_image ${GLEW_LIBRARY})
 			bl_sample(sdl2 ${sample_LIBRARIES}  ${SDL_LIBRARY} ${SDL_IMAGE_LIBRARY} ${GLEW_LIBRARY})
 			# The samples always set this as their current working directory
 			install(DIRECTORY DESTINATION ${SAMPLES_DIR}/basic/sdl2)
@@ -499,6 +498,46 @@ if(BUILD_SAMPLES)
         message("-- Can SDL2 sample be built - SDL2 not found")
     endif()
 
+
+	message("-- Can SFML 1.x sample be built")
+	find_package(SFML)
+	if(NOT SFML_FOUND)
+		message("-- Can SFML 1.x sample be built - no")
+	else()
+		message("-- Can SFML 1.x sample be built - yes")
+
+		include_directories(${SFML_INCLUDE_DIR})
+
+		bl_sample(sfml ${sample_LIBRARIES} ${SFML_GRAPHICS_LIBRARY} ${SFML_WINDOW_LIBRARY} ${SFML_SYSTEM_LIBRARY})
+			# The samples always set this as their current working directory
+			install(DIRECTORY DESTINATION ${SAMPLES_DIR}/basic/sfml)
+			install(TARGETS sfml
+				RUNTIME DESTINATION ${SAMPLES_DIR}/sfml
+				BUNDLE DESTINATION ${SAMPLES_DIR})
+	endif()
+
+	message("-- Can SFML 2.x sample be built")
+	if(NOT SFML2_FOUND)
+		message("-- Can SFML 2.x sample be built - no")
+	else()
+		find_package(GLEW)
+                if(GLEW_FOUND)
+			message("-- Can SFML 2.x sample be built - yes: with GLEW")
+			add_definitions( -DENABLE_GLEW )
+		else()
+			message("-- Can SFML 2.x sample be built - yes: without GLEW")
+		endif()
+
+		include_directories(${SFML2_INCLUDE_DIR})
+
+		bl_sample(sfml2 ${sample_LIBRARIES} ${SFML2_GRAPHICS_LIBRARY} ${SFML2_WINDOW_LIBRARY} ${SFML2_SYSTEM_LIBRARY})
+			# The samples always set this as their current working directory
+			install(DIRECTORY DESTINATION ${SAMPLES_DIR}/basic/sfml2)
+			install(TARGETS sfml2
+				RUNTIME DESTINATION ${SAMPLES_DIR}/sfml2
+				BUNDLE DESTINATION ${SAMPLES_DIR})
+	endif()
+
     # Build and install the tutorials
     foreach(tutorial ${tutorials})
         bl_sample(${tutorial} ${sample_LIBRARIES})

+ 62 - 0
Build/cmake/FindSFML.cmake

@@ -0,0 +1,62 @@
+
+find_path(SFML_INCLUDE_DIR Config.hpp
+	HINTS
+	ENV SFML_DIR
+	PATH_SUFFIXES SFML
+	# path suffixes to search inside ENV{SFML_DIR}
+	include/SFML include
+)
+
+find_library(SFML_SYSTEM_LIBRARY
+	NAMES sfml-system
+	HINTS
+	ENV SFML_DIR
+	PATH_SUFFIXES lib 
+)
+find_library(SFML_GRAPHICS_LIBRARY
+	NAMES sfml-graphics
+	HINTS
+	ENV SFML_DIR
+	PATH_SUFFIXES lib 
+)
+find_library(SFML_WINDOW_LIBRARY
+	NAMES sfml-window
+	HINTS
+	ENV SFML_DIR
+	PATH_SUFFIXES lib 
+)
+
+if(SFML_INCLUDE_DIR AND EXISTS "${SFML_INCLUDE_DIR}/Config.hpp")
+	file(STRINGS "${SFML_INCLUDE_DIR}/Config.hpp" SFML_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SFML_VERSION_MAJOR[ \t]+[0-9]+$")
+	file(STRINGS "${SFML_INCLUDE_DIR}/Config.hpp" SFML_VERSION_MINOR_LINE REGEX "^#define[ \t]+SFML_VERSION_MINOR[ \t]+[0-9]+$")
+	string(REGEX REPLACE "^#define[ \t]+SFML_VERSION_MAJOR[ \t]+([0-9]+)$" "\\1" SFML_MAJOR_VERSION "${SFML_VERSION_MAJOR_LINE}")
+	string(REGEX REPLACE "^#define[ \t]+SFML_VERSION_MINOR[ \t]+([0-9]+)$" "\\1" SFML_MINOR_VERSION "${SFML_VERSION_MINOR_LINE}")
+	unset(SFML_VERSION_MAJOR_LINE)
+	unset(SFML_VERSION_MINOR_LINE)
+
+	set(SFML_VERSION_STRING ${SFML_MAJOR_VERSION}.${SFML_MINOR_VERSION})
+endif()
+
+
+include(FindPackageHandleStandardArgs)
+
+if(SFML_MAJOR_VERSION GREATER 1)
+	set(SFML2_MAJOR_VERSION ${SFML_MAJOR_VERSION})
+	set(SFML2_MINOR_VERSION ${SFML_MINOR_VERSION})
+	set(SFML2_VERSION_STRING ${SFML2_MAJOR_VERSION}.${SFML2_MINOR_VERSION})
+
+	set(SFML2_INCLUDE_DIR ${SFML_INCLUDE_DIR})
+	set(SFML2_GRAPHICS_LIBRARY ${SFML_GRAPHICS_LIBRARY})
+	set(SFML2_SYSTEM_LIBRARY ${SFML_SYSTEM_LIBRARY})
+	set(SFML2_WINDOW_LIBRARY ${SFML_WINDOW_LIBRARY})
+
+	FIND_PACKAGE_HANDLE_STANDARD_ARGS(SFML2
+		REQUIRED_VARS SFML2_SYSTEM_LIBRARY SFML2_GRAPHICS_LIBRARY SFML2_WINDOW_LIBRARY SFML2_INCLUDE_DIR
+		VERSION_VAR SFML2_VERSION_STRING
+	)
+else()
+	FIND_PACKAGE_HANDLE_STANDARD_ARGS(SFML
+		REQUIRED_VARS SFML_SYSTEM_LIBRARY SFML_GRAPHICS_LIBRARY SFML_WINDOW_LIBRARY SFML_INCLUDE_DIR
+		VERSION_VAR SFML_VERSION_STRING
+	)
+endif()

+ 22 - 0
Build/cmake/SampleFileList.cmake

@@ -81,6 +81,28 @@ set(sdl2_SRC_FILES
     ${PROJECT_SOURCE_DIR}/Samples/basic/sdl2/src/SystemInterfaceSDL2.cpp
 )
 
+set(sfml_HDR_FILES
+    ${PROJECT_SOURCE_DIR}/Samples/basic/sfml/src/RenderInterfaceSFML.h
+    ${PROJECT_SOURCE_DIR}/Samples/basic/sfml/src/SystemInterfaceSFML.h
+)
+
+set(sfml_SRC_FILES
+    ${PROJECT_SOURCE_DIR}/Samples/basic/sfml/src/main.cpp
+    ${PROJECT_SOURCE_DIR}/Samples/basic/sfml/src/RenderInterfaceSFML.cpp
+    ${PROJECT_SOURCE_DIR}/Samples/basic/sfml/src/SystemInterfaceSFML.cpp
+)
+
+set(sfml2_HDR_FILES
+    ${PROJECT_SOURCE_DIR}/Samples/basic/sfml2/src/RenderInterfaceSFML.h
+    ${PROJECT_SOURCE_DIR}/Samples/basic/sfml2/src/SystemInterfaceSFML.h
+)
+
+set(sfml2_SRC_FILES
+    ${PROJECT_SOURCE_DIR}/Samples/basic/sfml2/src/main.cpp
+    ${PROJECT_SOURCE_DIR}/Samples/basic/sfml2/src/RenderInterfaceSFML.cpp
+    ${PROJECT_SOURCE_DIR}/Samples/basic/sfml2/src/SystemInterfaceSFML.cpp
+)
+
 set(directx_HDR_FILES
     ${PROJECT_SOURCE_DIR}/Samples/basic/directx/src/RenderInterfaceDirectX.h
 )

+ 2 - 1
Build/cmake/gen_samplelists.sh

@@ -7,7 +7,8 @@ hdr='set(sample_HDR_FILES'
 srcdir='${PROJECT_SOURCE_DIR}'
 srcpath=Samples
 samples=( 'shell'
-	'basic/customlog' 'basic/drag' 'basic/loaddocument' 'basic/ogre3d' 'basic/treeview' 'basic/sdl2'
+	'basic/customlog' 'basic/drag' 'basic/loaddocument' 'basic/ogre3d' 'basic/treeview'
+	'basic/sdl2' 'basic/sfml' 'basic/sfml2'
 	'basic/directx' 'basic/directx10'
 	'tutorial/template' 'tutorial/datagrid' 'tutorial/datagrid_tree' 'tutorial/tutorial_drag'
 	'invaders' 'luainvaders' 'pyinvaders'