Browse Source

Merge pull request #31 from tony/freebsd-compat

FreeBSD support and improve Linux compatibility
Denis Muratshin 10 years ago
parent
commit
a9a1986e0a
2 changed files with 95 additions and 68 deletions
  1. 94 67
      CMakeLists.txt
  2. 1 1
      examples/Game/part1/proj.cmake/CMakeLists.txt

+ 94 - 67
CMakeLists.txt

@@ -8,27 +8,29 @@ set(OX_HAVE_LIBCURL 0)
 set(OX_HAVE_HTTP 0)
 set(OX_HAVE_HTTP 0)
 set(OX_USE_SDL2 1)
 set(OX_USE_SDL2 1)
 
 
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
 
 
 find_package(OpenGL)
 find_package(OpenGL)
+set(OXYGINE_INCLUDE_DIRS ${OXYGINE_INCLUDE_DIRS} ${OPENGL_INCLUDE_DIRS})
+
+if (EMSCRIPTEN) #don't need SDL2
+else()
+	if(WIN32)
+		set(ENV{SDL2DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../SDL/include)
+		set(CORE_LIBS ${CORE_LIBS} SDL2main SDL2)
+	else(WIN32)
+		find_package(CURL)
+	endif()
 
 
-if (EMSCRIPTEN)
-	#don't need SDL2
-elseif (WIN32)	
-	#hardcoded path to SDL2 on windows
-	set(SDL2_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../SDL/include)
-else(WIN32)
-	find_path(SDL2_INCLUDE_DIRS NAMES SDL2/SDL.h)
-	message(STATUS ${SDL2_INCLUDE_DIRS_FOUND})
+	find_package(SDL2)
 
 
-	if (SDL2_INCLUDE_DIRS)		
-		set(SDL2_INCLUDE_DIRS ${SDL2_INCLUDE_DIRS}/SDL2)
-		message(STATUS "found")		
+	if (SDL2_FOUND)
+		message(STATUS "SDL2 found")
+		include_directories(${SDL2_INCLUDE_DIR})
 	else()
 	else()
-		message(STATUS "SDL not found")
-		set(SDL2_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../SDL/include)					
+		message(STATUS "SDL2 not found")
+		set(SDL2_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../SDL/include)
 	endif()
 	endif()
-
-	find_package(CURL)
 endif(EMSCRIPTEN)
 endif(EMSCRIPTEN)
 
 
 
 
@@ -43,7 +45,7 @@ set(FOLDERS src src/closure src/minizip src/core
 
 
 if (EMSCRIPTEN)
 if (EMSCRIPTEN)
 	set(PLATFORM emscripten)
 	set(PLATFORM emscripten)
-elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux") 	
+elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
 	set(PLATFORM linux)
 	set(PLATFORM linux)
 elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
 elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
 	set(PLATFORM ios)
 	set(PLATFORM ios)
@@ -56,11 +58,9 @@ endif()
 
 
 set(THIRD_PARTY ${OXYGINE_ROOT}/third_party/${PLATFORM})
 set(THIRD_PARTY ${OXYGINE_ROOT}/third_party/${PLATFORM})
 
 
-
-
 if (EMSCRIPTEN)
 if (EMSCRIPTEN)
 	set(OX_HAVE_LIBPNG 1)
 	set(OX_HAVE_LIBPNG 1)
-	set(OX_HAVE_HTTP 1)	
+	set(OX_HAVE_HTTP 1)
 	set(OX_USE_SDL2 0)
 	set(OX_USE_SDL2 0)
 
 
 	set(SOURCES ${OXYGINE_SRC}/core/emscripten/HttpRequestEmscriptenTask.cpp)
 	set(SOURCES ${OXYGINE_SRC}/core/emscripten/HttpRequestEmscriptenTask.cpp)
@@ -68,16 +68,10 @@ if (EMSCRIPTEN)
 
 
 	file(GLOB OXYGINE_JS_LIBRARIES ${OXYGINE_SRC}/core/emscripten/*.js)
 	file(GLOB OXYGINE_JS_LIBRARIES ${OXYGINE_SRC}/core/emscripten/*.js)
 
 
-elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux") 	
-	
-	set(OX_HAVE_LIBJPEG 1)
-	set(OX_HAVE_LIBPNG 1)
-
 elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
 elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
 elseif(MSVC)
 elseif(MSVC)
-
 	set(OX_HAVE_LIBJPEG 1)
 	set(OX_HAVE_LIBJPEG 1)
-	set(OX_HAVE_LIBPNG 1)	
+	set(OX_HAVE_LIBPNG 1)
 	set(OX_HAVE_LIBCURL 1)
 	set(OX_HAVE_LIBCURL 1)
 	set(OX_HAVE_HTTP 1)
 	set(OX_HAVE_HTTP 1)
 
 
@@ -85,16 +79,78 @@ elseif(MSVC)
 
 
 	set(OX_DEFINITIONS	${OX_DEFINITIONS} -D_CRT_SECURE_NO_WARNINGS)
 	set(OX_DEFINITIONS	${OX_DEFINITIONS} -D_CRT_SECURE_NO_WARNINGS)
 
 
-elseif(MINGW)	
-
+elseif(MINGW)
 	set(libprefix lib)
 	set(libprefix lib)
 
 
-	set(OX_HAVE_LIBPNG 1)	
+	set(OX_HAVE_LIBPNG 1)
 	set(OX_HAVE_LIBCURL 1)
 	set(OX_HAVE_LIBCURL 1)
 	set(OX_HAVE_HTTP 1)
 	set(OX_HAVE_HTTP 1)
-
+else()  # anything else (POSIX we assume)
+	set(OX_HAVE_LIBJPEG 1)
+	set(OX_HAVE_LIBPNG 1)
 endif()
 endif()
 
 
+#add png library
+if (OX_HAVE_LIBPNG)
+	set(OX_DEFINITIONS	${OX_DEFINITIONS}
+		-DOX_HAVE_LIBPNG)
+	if (MSVC)
+		include_directories(${THIRD_PARTY}/libpng)
+		set(LIBPNG ${libprefix}png)
+		if (MSVC_VERSION EQUAL "1900")
+			set(LIBPNG ${LIBPNG}-2015)
+		endif()
+		set(CORE_LIBS ${CORE_LIBS} ${LIBPNG})
+	elseif(EMSCRIPTEN)
+		include_directories(${THIRD_PARTY}/libpng)
+		set(LIBPNG ${libprefix}png)
+		set(LIBPNG libz libpng16)
+		set(CORE_LIBS ${CORE_LIBS} ${LIBPNG})
+	else()
+		find_package(PNG REQUIRED)
+		set (CORE_LIBS
+			${CORE_LIBS}
+			${PNG_LIBRARIES}
+		)
+		include_directories(
+			${PNG_INCLUDE_DIR}
+		)
+
+		set(OXYGINE_INCLUDE_DIRS
+			${OXYGINE_INCLUDE_DIRS}
+			${PNG_INCLUDE_DIR}
+		)
+	endif()
+endif(OX_HAVE_LIBPNG)
+
+#add jpeg library
+if (OX_HAVE_LIBJPEG)
+	set(OX_DEFINITIONS	${OX_DEFINITIONS}
+		-DOX_HAVE_LIBJPEG)
+	if (MSVC)
+		if (MSVC_VERSION EQUAL "1900")
+			set(LIBJPEG ${LIBJPEG}-2015)
+		endif()
+		set(CORE_LIBS ${CORE_LIBS} ${LIBJPEG})
+		include_directories(${THIRD_PARTY}/libjpeg)
+		set(LIBJPEG ${libprefix}jpeg)
+	else()
+		find_package(JPEG REQUIRED)
+		set (CORE_LIBS
+			${CORE_LIBS}
+			${JPEG_LIBRARIES}
+		)
+		include_directories(
+			${JPEG_INCLUDE_DIR}
+		)
+		set(OXYGINE_INCLUDE_DIRS
+			${OXYGINE_INCLUDE_DIRS}
+			${JPEG_INCLUDE_DIR}
+		)
+	endif()
+endif(OX_HAVE_LIBJPEG)
+
+
 if (OX_HAVE_LIBCURL)	
 if (OX_HAVE_LIBCURL)	
 	set(FOLDERS ${FOLDERS} src/core/curl)
 	set(FOLDERS ${FOLDERS} src/core/curl)
 	include_directories(${THIRD_PARTY}/curl/)
 	include_directories(${THIRD_PARTY}/curl/)
@@ -121,6 +177,8 @@ endforeach(ITEM)
 
 
 set(OXYGINE_INCLUDE_DIRS 
 set(OXYGINE_INCLUDE_DIRS 
 	${OXYGINE_SRC}
 	${OXYGINE_SRC}
+	${SDL2_INCLUDE_DIR}
+	${OPENGL_INCLUDE_DIR}
 	${THIRD_PARTY}/pthreads/include/
 	${THIRD_PARTY}/pthreads/include/
 	${THIRD_PARTY}/zlib)
 	${THIRD_PARTY}/zlib)
 
 
@@ -149,9 +207,11 @@ set(CORE_LIBS
 
 
 
 
 if (OX_USE_SDL2)
 if (OX_USE_SDL2)
-	set(CORE_LIBS ${CORE_LIBS}
-		SDL2main SDL2)
-	set(OXYGINE_INCLUDE_DIRS ${OXYGINE_INCLUDE_DIRS} ${SDL2_INCLUDE_DIRS})
+	if (WIN32)
+	elseif(EMSCRIPTEN)
+	else(WIN32)
+		set(CORE_LIBS ${CORE_LIBS} ${SDL2_LIBRARY})
+	endif(WIN32)
 endif(OX_USE_SDL2)	
 endif(OX_USE_SDL2)	
 
 
 
 
@@ -166,39 +226,6 @@ else(WIN32)
 endif(WIN32)
 endif(WIN32)
 
 
 
 
-
-if (OX_HAVE_LIBPNG)		
-	set(OX_DEFINITIONS	${OX_DEFINITIONS} -DOX_HAVE_LIBPNG)
-	include_directories(${THIRD_PARTY}/libpng)
-	set(LIBPNG ${libprefix}png)
-
-	if (MSVC)		
-		if (MSVC_VERSION EQUAL "1900")
-			set(LIBPNG ${LIBPNG}-2015)
-		endif()
-	elseif(EMSCRIPTEN)
-		set(LIBPNG libz libpng16)
-	endif()	
-
-	set(CORE_LIBS ${CORE_LIBS} ${LIBPNG})
-endif(OX_HAVE_LIBPNG)
-
-
-if (OX_HAVE_LIBJPEG)	
-	set(OX_DEFINITIONS	${OX_DEFINITIONS} -DOX_HAVE_LIBJPEG)
-	include_directories(${THIRD_PARTY}/libjpeg)
-	set(LIBJPEG ${libprefix}jpeg)
-	
-	if (MSVC)
-		if (MSVC_VERSION EQUAL "1900")
-			set(LIBJPEG ${LIBJPEG}-2015)
-		endif()	
-	endif()
-
-	set(CORE_LIBS ${CORE_LIBS} ${LIBJPEG})
-endif(OX_HAVE_LIBJPEG)
-
-
 if (NOT EMSCRIPTEN)
 if (NOT EMSCRIPTEN)
 	set(CORE_LIBS ${CORE_LIBS}
 	set(CORE_LIBS ${CORE_LIBS}
 		${libprefix}z${libprefix})
 		${libprefix}z${libprefix})
@@ -235,7 +262,7 @@ set(OXYGINE_JS_LIBRARIES
 	${OXYGINE_JS_LIBRARIES}
 	${OXYGINE_JS_LIBRARIES}
 	PARENT_SCOPE)
 	PARENT_SCOPE)
 
 
-message(STATUS "SDL includes: ${SDL2_INCLUDE_DIRS}")
+message(STATUS "SDL includes: ${SDL2_INCLUDE_DIR}")
 message(STATUS "Libs:     ${CORE_LIBS}")
 message(STATUS "Libs:     ${CORE_LIBS}")
 message(STATUS "Platform: ${PLATFORM}")
 message(STATUS "Platform: ${PLATFORM}")
 
 

+ 1 - 1
examples/Game/part1/proj.cmake/CMakeLists.txt

@@ -6,7 +6,7 @@ add_definitions(${OXYGINE_DEFINITIONS})
 include_directories(${OXYGINE_INCLUDE_DIRS})
 include_directories(${OXYGINE_INCLUDE_DIRS})
 link_directories(${OXYGINE_LIBRARY_DIRS})
 link_directories(${OXYGINE_LIBRARY_DIRS})
 
 
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wswitch")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
 add_executable(GamePart1 ../src/Game.cpp ../src/Joystick.cpp ../src/Player.cpp ../src/Unit.cpp ../src/entry_point.cpp ../src/example.cpp ../src/res.cpp  ../src/Game.h ../src/Joystick.h ../src/Player.h ../src/Unit.h ../src/example.h ../src/res.h )
 add_executable(GamePart1 ../src/Game.cpp ../src/Joystick.cpp ../src/Player.cpp ../src/Unit.cpp ../src/entry_point.cpp ../src/example.cpp ../src/res.cpp  ../src/Game.h ../src/Joystick.h ../src/Player.h ../src/Unit.h ../src/example.h ../src/res.h )
 
 
 if (WIN32) #disable console mode for VC++
 if (WIN32) #disable console mode for VC++