Răsfoiți Sursa

Merge pull request #52 from BtbN/pfix

Several CMake fixes and enhancements
Jim 11 ani în urmă
părinte
comite
fd9d395509

+ 7 - 5
CMakeLists.txt

@@ -11,8 +11,6 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
 include(ObsHelpers)
 include(ObsCpack)
 
-add_definitions(-DOBS_VERSION="${OBS_VERSION}")
-
 if(MSVC AND NOT EXISTS "${CMAKE_BINARY_DIR}/ALL_BUILD.vcxproj.user")
 	file(GENERATE
 		OUTPUT "${CMAKE_BINARY_DIR}/ALL_BUILD.vcxproj.user"
@@ -31,9 +29,9 @@ if(${CMAKE_C_COMPILER_ID} MATCHES "Clang" OR ${CMAKE_CXX_COMPILER_ID} MATCHES "C
 endif()
 
 if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANG)
-	set(CMAKE_CXX_FLAGS "-Wall -Wextra -Wno-unused-function ${CMAKE_CXX_FLAGS}")
-	set(CMAKE_C_FLAGS "-Wall -Wextra -Wno-unused-function -Wno-missing-field-initializers ${CMAKE_C_FLAGS} -std=gnu99")
-	
+	set(CMAKE_CXX_FLAGS "-Wall -Wextra -Wno-unused-function -Werror-implicit-function-declaration -Wno-missing-field-initializers ${CMAKE_CXX_FLAGS} -fno-strict-aliasing")
+	set(CMAKE_C_FLAGS "-Wall -Wextra -Wno-unused-function -Werror-implicit-function-declaration ${CMAKE_C_FLAGS} -std=gnu99 -fno-strict-aliasing")
+
 	option(USE_LIBC++ "Use libc++ instead of libstdc++" ${APPLE})
 	if(USE_LIBC++)
 		set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
@@ -55,6 +53,10 @@ endif()
 
 if(NOT INSTALLER_RUN)
 	add_subdirectory(deps)
+
+	add_definitions(-DHAVE_CONFIG_H=1)
+	include_directories("${CMAKE_BINARY_DIR}/config")
+
 	add_subdirectory(libobs)
 
 	if(WIN32)

+ 1 - 1
cmake/Modules/ObsCpack.cmake

@@ -15,7 +15,7 @@ set(CPACK_PACKAGE_VERSION_PATCH "1")
 set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
 
 if(EXISTS "${CMAKE_SOURCE_DIR}/.git")
-	execute_process(COMMAND git describe --always
+	execute_process(COMMAND git describe --always --dirty=-modified
 		OUTPUT_VARIABLE OBS_VERSION
 		WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
 		OUTPUT_STRIP_TRAILING_WHITESPACE)

+ 19 - 0
cmake/Modules/ObsHelpers.cmake

@@ -232,6 +232,25 @@ macro(install_obs_data target datadir datadest)
 	endif()
 endmacro()
 
+macro(install_obs_datatarget target datadest)
+	install(TARGETS ${target}
+		LIBRARY DESTINATION "${OBS_DATA_DESTINATION}/${datadest}"
+		RUNTIME DESTINATION "${OBS_DATA_DESTINATION}/${datadest}")
+	add_custom_command(TARGET ${target} POST_BUILD
+		COMMAND "${CMAKE_COMMAND}" -E copy
+			"$<TARGET_FILE:${target}>"
+			"${OBS_OUTPUT_DIR}/$<CONFIGURATION>/data/${datadest}/$<TARGET_FILE_NAME:${target}>"
+		VERBATIM)
+
+	if(DEFINED ENV{obsInstallerTempDir})
+		add_custom_command(TARGET ${target} POST_BUILD
+			COMMAND "${CMAKE_COMMAND}" -E copy
+				"$<TARGET_FILE:${target}>"
+				"$ENV{obsInstallerTempDir}/${OBS_DATA_DESTINATION}/${datadest}/$<TARGET_FILE_NAME:${target}>"
+			VERBATIM)
+	endif()
+endmacro()
+
 macro(install_obs_plugin_data target datadir)
 	install_obs_plugin(${target})
 	install_obs_data(${target} "${datadir}" "obs-plugins/${target}")

+ 3 - 5
libobs-opengl/CMakeLists.txt

@@ -3,9 +3,7 @@ project(libobs-opengl)
 include_directories(SYSTEM "${CMAKE_SOURCE_DIR}/libobs")
 
 find_package(OpenGL REQUIRED)
-include_directories(${OPENGL_INCLUDE_DIRS})
-include_directories(SYSTEM glew/include)
-add_definitions(-DGLEW_STATIC)
+include_directories(${OPENGL_INCLUDE_DIR})
 
 add_definitions(-DLIBOBS_EXPORTS)
 
@@ -22,8 +20,8 @@ elseif(APPLE)
 			LANGUAGE C)
 	
 	find_library(COCOA Cocoa)
-	mark_as_advanced(COCOA)
 	include_directories(${COCOA})
+	mark_as_advanced(COCOA)
 
 	find_library(IOSURF IOSurface)
 	include_directories(${IOSURF})
@@ -67,6 +65,6 @@ set_target_properties(libobs-opengl
 target_link_libraries(libobs-opengl
 	libobs
 	${libobs-opengl_PLATFORM_DEPS}
-	${OPENGL_LIBRARIES})
+	${OPENGL_gl_LIBRARY})
 
 install_obs_core(libobs-opengl)

+ 10 - 1
libobs/CMakeLists.txt

@@ -17,7 +17,6 @@ include_directories(${Libavformat_INCLUDE_DIR})
 add_definitions(${Libavformat_DEFINITIONS})
 
 add_definitions(-DLIBOBS_EXPORTS)
-add_definitions(-DPTW32_STATIC_LIB)
 
 if(WIN32)
 	set(libobs_PLATFORM_SOURCES
@@ -27,6 +26,8 @@ if(WIN32)
 	set(libobs_PLATFORM_DEPS
 		w32-pthreads
 		winmm.lib)
+
+	add_definitions(-DPTW32_STATIC_LIB)
 elseif(APPLE)
 	set(libobs_PLATFORM_SOURCES
 		obs-cocoa.c
@@ -57,6 +58,14 @@ if(MSVC)
 	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHc-")
 endif()
 
+configure_file(
+	"${CMAKE_CURRENT_SOURCE_DIR}/config.h.in"
+	"${CMAKE_BINARY_DIR}/config/config.h")
+
+set(libobs_config_HEADERS
+	config.h
+	obs-config.h)
+
 set(libobs_callback_SOURCES
 	callback/calldata.c
 	callback/decl.c

+ 5 - 0
libobs/config.h.in

@@ -0,0 +1,5 @@
+
+#pragma once
+
+#define OBS_VERSION "@OBS_VERSION@"
+

+ 27 - 0
libobs/obs-config.h

@@ -0,0 +1,27 @@
+/******************************************************************************
+    Copyright (C) 2014 by Hugh Bailey <[email protected]>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+******************************************************************************/
+
+#pragma once
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+
+#define OBS_VERSION "unknown"
+
+#endif
+

+ 7 - 1
plugins/linux-pulseaudio/CMakeLists.txt

@@ -1,4 +1,10 @@
-find_package(PulseAudio REQUIRED)
+project(linux-pulseaudio)
+
+find_package(PulseAudio)
+if(NOT PulseAudio_FOUND)
+	message(STATUS "PulseAudio not found, disabling PulseAudio plugin")
+	return()
+endif()
 
 include_directories(SYSTEM "${CMAKE_SOURCE_DIR}/libobs")
 

+ 2 - 0
plugins/linux-xshm/CMakeLists.txt

@@ -1,3 +1,5 @@
+project(linux-xshm)
+
 find_package(X11 REQUIRED)
 
 include_directories(SYSTEM "${CMAKE_SOURCE_DIR}/libobs")