X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=extras%2Fbuildsystem%2Fcmake%2Finclude%2Fconfig.cmake;h=c0980e6d764fd0ff8aa01cc5da35f2cdd7ddd691;hb=abe53d9192e8545a512a7be28c8ded31e40febf4;hp=abcdb15ece11b35ed71b4e8af2b3d32d9cf2ed5a;hpb=0aa23c298e4b4ef628f9af21b369c19bccc07f54;p=vlc diff --git a/extras/buildsystem/cmake/include/config.cmake b/extras/buildsystem/cmake/include/config.cmake index abcdb15ece..c0980e6d76 100644 --- a/extras/buildsystem/cmake/include/config.cmake +++ b/extras/buildsystem/cmake/include/config.cmake @@ -10,6 +10,43 @@ include( ${CMAKE_SOURCE_DIR}/cmake/vlc_add_compile_flag.cmake ) include( ${CMAKE_SOURCE_DIR}/cmake/vlc_check_type.cmake ) include( ${CMAKE_SOURCE_DIR}/cmake/pkg_check_modules.cmake ) +########################################################### +# VERSION +########################################################### + +set(VLC_VERSION_MAJOR 0) +set(VLC_VERSION_MINOR 9) +set(VLC_VERSION_PATCH 0) +set(VLC_VERSION_EXTRA "-svn") + +set(PACKAGE "vlc") +set(PACKAGE_STRING "vlc") +set(VERSION_MESSAGE "vlc-${VLC_VERSION_MAJOR}.${VLC_VERSION_MINOR}.${VLC_VERSION_PATCH}${VLC_VERSION_EXTRA}") +set(COPYRIGHT_MESSAGE "Copyright © the VideoLAN team") +set(COPYRIGHT_YEARS "2001-2008") + +########################################################### +# Options +########################################################### + +OPTION( ENABLE_HTTPD "Enable httpd server" ON ) +OPTION( ENABLE_VLM "Enable vlm" ON ) +OPTION( ENABLE_DYNAMIC_PLUGINS "Enable dynamic plugin" ON ) +OPTION( UPDATE_CHECK "Enable automatic new version checking" OFF ) +OPTION( ENABLE_NO_SYMBOL_CHECK "Don't check symbols of modules against libvlc. (Enabling this option speeds up compilation)" ON ) + +IF (NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "build type determining compiler flags" FORCE ) +endif(NOT CMAKE_BUILD_TYPE ) + +if(CMAKE_BUILD_TYPE STREQUAL "Debug") + set(DEBUG ON) + set(NDEBUG ON) +endif(CMAKE_BUILD_TYPE STREQUAL "Debug") + +set( HAVE_DYNAMIC_PLUGINS ${ENABLE_DYNAMIC_PLUGINS}) +set( LIBEXT ${CMAKE_SHARED_MODULE_SUFFIX}) + ########################################################### # Headers checks ########################################################### @@ -19,23 +56,35 @@ vlc_check_include_files (stddef.h stdlib.h sys/stat.h) vlc_check_include_files (stdio.h stdint.h inttypes.h) vlc_check_include_files (signal.h unistd.h dirent.h) vlc_check_include_files (netinet/in.h netinet/udplite.h) +vlc_check_include_files (arpa/inet.h net/if.h) vlc_check_include_files (netdb.h fcntl.h sys/time.h poll.h) -vlc_check_include_files (errno.h time.h) +vlc_check_include_files (errno.h time.h alloca.h) +vlc_check_include_files (limits.h) + +vlc_check_include_files (string.h strings.h getopt.h) + +vlc_check_include_files (dlfcn.h dl.h) vlc_check_include_files (kernel/OS.h) +vlc_check_include_files (memory.h) vlc_check_include_files (mach-o/dyld.h) +vlc_check_include_files (pthread.h) + +find_package (Threads) ########################################################### # Functions/structures checks ########################################################### - +set(CMAKE_REQUIRED_LIBRARIES c) set(CMAKE_EXTRA_INCLUDE_FILES string.h) vlc_check_functions_exist(strcpy strcasecmp) vlc_check_functions_exist(strcasestr strdup) vlc_check_functions_exist(strndup stricmp strnicmp) vlc_check_functions_exist(atof strtoll atoll lldiv) -vlc_check_functions_exist(strlcpy) +vlc_check_functions_exist(strlcpy stristr strnlen strsep) +vlc_check_functions_exist(strtod strtof strtol stroul) +vlc_check_functions_exist(stroull) set(CMAKE_EXTRA_INCLUDE_FILES) set(CMAKE_EXTRA_INCLUDE_FILES stdio.h) @@ -46,6 +95,28 @@ set(CMAKE_EXTRA_INCLUDE_FILES libc.h) vlc_check_functions_exist(fork) set(CMAKE_EXTRA_INCLUDE_FILES) +set(CMAKE_EXTRA_INCLUDE_FILES stdlib.h) +vlc_check_functions_exist(putenv getenv setenv) +vlc_check_functions_exist(putenv getenv setenv) +set(CMAKE_EXTRA_INCLUDE_FILES) + +set(CMAKE_EXTRA_INCLUDE_FILES stdio.h) +vlc_check_functions_exist(snprintf asprintf) +vlc_check_functions_exist(putenv getenv setenv) +set(CMAKE_EXTRA_INCLUDE_FILES) + +set(CMAKE_EXTRA_INCLUDE_FILES unistd.h) +vlc_check_functions_exist(isatty getcwd getuid) +set(CMAKE_EXTRA_INCLUDE_FILES) + +set(CMAKE_EXTRA_INCLUDE_FILES sys/stat.h) +vlc_check_functions_exist(lstat fstat stat) +set(CMAKE_EXTRA_INCLUDE_FILES) + +set(CMAKE_REQUIRED_LIBRARIES) + +check_library_exists(poll poll "" HAVE_POLL) + check_c_source_compiles( "#include int main() { char* cs = nl_langinfo(CODESET); }" @@ -62,10 +133,15 @@ check_c_source_compiles ( #endif int main() { return 0;}" HAVE_STDINT_H_WITH_UINTMAX) -check_symbol_exists(ntohl "sys/param.h" NTOHL_IN_SYS_PARAM_H) -check_symbol_exists(scandir "dirent.h" HAVE_SCANDIR) -check_symbol_exists(scandir "dirent.h" HAVE_SCANDIR) +check_symbol_exists(ntohl "sys/param.h" NTOHL_IN_SYS_PARAM_H) +check_symbol_exists(scandir "dirent.h" HAVE_SCANDIR) +check_symbol_exists(scandir "dirent.h" HAVE_SCANDIR) check_symbol_exists(localtime_r "time.h" HAVE_LOCALTIME_R) +check_symbol_exists(alloca "alloca.h" HAVE_ALLOCA) + +check_symbol_exists(va_copy "stdarg.h" HAVE_VACOPY) +check_symbol_exists(__va_copy "stdarg.h" HAVE___VA_COPY) + check_symbol_exists(getnameinfo "sys/types.h;sys/socket.h;netdb.h" HAVE_GETNAMEINFO) check_symbol_exists(getaddrinfo "sys/types.h;sys/socket.h;netdb.h" HAVE_GETADDRINFO) @@ -73,8 +149,40 @@ if(NOT HAVE_GETADDRINFO) check_library_exists(getaddrinfo nsl "" HAVE_GETADDRINFO) endif(NOT HAVE_GETADDRINFO) -find_library(HAVE_ICONV iconv) -set( ICONV_CONST " " ) +vlc_check_functions_exist(iconv) +if(NOT HAVE_ICONV) + set(LIBICONV "iconv") + check_library_exists(iconv iconv "" HAVE_ICONV) +endif(NOT HAVE_ICONV) +set(CMAKE_REQUIRED_LIBRARIES ${LIBICONV}) +CHECK_C_SOURCE_COMPILES(" #include + int main() { return iconv(0, (char **)0, 0, (char**)0, 0); }" ICONV_NO_CONST) +if( ICONV_NO_CONST ) + set( ICONV_CONST "const" ) +else( ICONV_NO_CONST ) + set( ICONV_CONST " ") +endif( ICONV_NO_CONST ) +set(CMAKE_REQUIRED_LIBRARIES) + +check_library_exists(rt clock_nanosleep "" HAVE_CLOCK_NANOSLEEP) +if (HAVE_CLOCK_NANOSLEEP) + set(LIBRT "rt") +endif (HAVE_CLOCK_NANOSLEEP) + +check_library_exists(m pow "" HAVE_LIBM) +if (HAVE_LIBM) + set (LIBM "m") +endif (HAVE_LIBM) + +check_symbol_exists(connect "sys/types.h;sys/socket.h" HAVE_CONNECT) +if(NOT HAVE_CONNECT) + check_library_exists(connect socket HAVE_CONNECT) + if(NOT HAVE_CONNECT) + vlc_module_add_link_libraries(libvlc connect) + vlc_module_add_link_libraries(cdda connect) + vlc_module_add_link_libraries(cddax connect) + endif(NOT HAVE_CONNECT) +endif(NOT HAVE_CONNECT) ########################################################### # Other check @@ -87,16 +195,27 @@ include( ${CMAKE_SOURCE_DIR}/cmake/vlc_test_inline.cmake ) if(APPLE) include( ${CMAKE_SOURCE_DIR}/cmake/vlc_find_frameworks.cmake ) + if(ENABLE_NO_SYMBOL_CHECK) + set(DYNAMIC_LOOKUP "-undefined dynamic_lookup") + else(ENABLE_NO_SYMBOL_CHECK) + set(DYNAMIC_LOOKUP) + endif(ENABLE_NO_SYMBOL_CHECK) set(CMAKE_SHARED_MODULE_CREATE_CXX_FLAGS - "${CMAKE_SHARED_MODULE_CREATE_CXX_FLAGS} -undefined dynamic_lookup") - set(CMAKE_SHARED_MODULE_CREATE_C_FLAGS - "${CMAKE_SHARED_MODULE_CREATE_C_FLAGS} -undefined dynamic_lookup") + "${CMAKE_SHARED_MODULE_CREATE_CXX_FLAGS} ${DYNAMIC_LOOKUP}") + set(CMAKE_SHARED_MODULE_CREATE_C_FLAGS + "${CMAKE_SHARED_MODULE_CREATE_C_FLAGS} ${DYNAMIC_LOOKUP}") - set(HAVE_DL_DYLD ON INTERNAL) set(SYS_DARWIN 1) - + add_definitions(-std=gnu99) # Hack for obj-c files to be compiled with gnu99 vlc_enable_modules(macosx minimal_macosx access_eyetv quartztext) + vlc_check_include_files (ApplicationServices/ApplicationServices.h) + vlc_check_include_files (Carbon/Carbon.h) + vlc_check_include_files (CoreAudio/CoreAudio.h) + + # check_symbol_exists (CFLocaleCopyCurrent "CoreFoundation/CoreFoundation.h" "" HAVE_CFLOCALECOPYCURRENT) + # check_symbol_exists (CFPreferencesCopyAppValue "CoreFoundation/CoreFoundation.h" "" HAVE_CFPREFERENCESCOPYAPPVALUE) + vlc_find_frameworks(Cocoa Carbon OpenGL AGL IOKit Quicktime WebKit QuartzCore Foundation ApplicationServices) vlc_module_add_link_libraries(macosx @@ -125,19 +244,32 @@ if(APPLE) add_executable(VLC MACOSX_BUNDLE src/vlc.c) target_link_libraries(VLC libvlc) + set( MacOS ${CMAKE_CURRENT_BINARY_DIR}/VLC.app/Contents/MacOS ) add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/VLC.app/Contents/MacOS/modules - COMMAND ln -s ${CMAKE_CURRENT_BINARY_DIR}/modules ${CMAKE_CURRENT_BINARY_DIR}/VLC.app/Contents/MacOS/lib - ) - add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/VLC.app/Contents/MacOS/lib - COMMAND ln -s ${CMAKE_CURRENT_BINARY_DIR}/modules ${CMAKE_CURRENT_BINARY_DIR}/VLC.app/Contents/MacOS/lib + TARGET VLC + POST_BUILD + COMMAND rm -Rf ${CMAKE_CURRENT_BINARY_DIR}/tmp + COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/tmp/modules/gui/macosx + COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/tmp/extras/package/macosx + COMMAND for i in vlc.xcodeproj Resources README.MacOSX.rtf\; do cp -R ${CMAKE_CURRENT_SOURCE_DIR}/extras/package/macosx/$$i ${CMAKE_CURRENT_BINARY_DIR}/tmp/extras/package/macosx\; done + COMMAND for i in AUTHORS COPYING THANKS\;do cp ${CMAKE_CURRENT_SOURCE_DIR}/$$i ${CMAKE_CURRENT_BINARY_DIR}/tmp\; done + COMMAND for i in AppleRemote.h AppleRemote.m about.h about.m applescript.h applescript.m controls.h controls.m equalizer.h equalizer.m intf.h intf.m macosx.m misc.h misc.m open.h open.m output.h output.m playlist.h playlist.m playlistinfo.h playlistinfo.m prefs_widgets.h prefs_widgets.m prefs.h prefs.m vout.h voutqt.m voutgl.m wizard.h wizard.m extended.h extended.m bookmarks.h bookmarks.m sfilters.h sfilters.m update.h update.m interaction.h interaction.m embeddedwindow.h embeddedwindow.m fspanel.h fspanel.m vout.m\; do cp ${CMAKE_CURRENT_SOURCE_DIR}/modules/gui/macosx/$$i ${CMAKE_CURRENT_BINARY_DIR}/tmp/modules/gui/macosx\; done + COMMAND cd ${CMAKE_CURRENT_BINARY_DIR}/tmp/extras/package/macosx && xcodebuild -target vlc | grep -vE '^\([ \\t]|$$\)' && cd ../../../../ && cp ${CMAKE_CURRENT_BINARY_DIR}/tmp/extras/package/macosx/build/Default/VLC.bundle/Contents/Info.plist ${CMAKE_CURRENT_BINARY_DIR}/VLC.app/Contents && cp -R ${CMAKE_CURRENT_BINARY_DIR}/tmp/extras/package/macosx/build/Default/VLC.bundle/Contents/Resources/English.lproj ${CMAKE_CURRENT_BINARY_DIR}/VLC.app/Contents/Resources + COMMAND cp -r ${CMAKE_CURRENT_SOURCE_DIR}/extras/package/macosx/Resources ${CMAKE_CURRENT_BINARY_DIR}/VLC.app/Contents + COMMAND find -d ${CMAKE_CURRENT_BINARY_DIR}/VLC.app/Contents/Resources -type d -name \\.svn -exec rm -rf {} "\;" + COMMAND rm -rf ${MacOS}/modules ${MacOS}/locale ${MacOS}/share + COMMAND ln -s ${CMAKE_CURRENT_SOURCE_DIR}/share ${MacOS}/share + COMMAND ln -s ${CMAKE_CURRENT_BINARY_DIR}/modules ${MacOS}/modules + COMMAND find ${CMAKE_BINARY_DIR}/po -name *.gmo -exec sh -c \"mkdir -p ${MacOS}/locale/\\`basename {}|sed s/\\.gmo//\\`/LC_MESSAGES\; ln -s {} ${MacOS}/locale/\\`basename {}|sed s/\\.gmo//\\`/LC_MESSAGES/vlc.mo\" "\;" + COMMAND ln -sf VLC ${MacOS}/clivlc #useless? + COMMAND printf "APPLVLC#" > ${CMAKE_CURRENT_BINARY_DIR}/VLC.app/Contents/PkgInfo ) + set( MacOS ) endif(APPLE) ########################################################### -# version and info setup +# info ########################################################### macro(command_to_configvar command var) @@ -152,21 +284,10 @@ command_to_configvar( "whoami" VLC_COMPILE_BY ) command_to_configvar( "hostname" VLC_COMPILE_HOST ) command_to_configvar( "hostname" VLC_COMPILE_DOMAIN ) command_to_configvar( "${CMAKE_C_COMPILER} --version" VLC_COMPILER ) +# FIXME: WTF? this is not the configure line! command_to_configvar( "${CMAKE_C_COMPILER} --version" CONFIGURE_LINE ) set( VLC_COMPILER "${CMAKE_C_COMPILER}" ) -set(PACKAGE "vlc") -set(PACKAGE_STRING "vlc") -set(VERSION_MESSAGE "vlc-0.9.0-svn") -set(COPYRIGHT_MESSAGE "Copyright VLC Team") -set(COPYRIGHT_YEARS "2001-2007") - -########################################################### -# Options -########################################################### - -OPTION( ENABLE_HTTPD "Enable httpd server" ON ) -OPTION( ENABLE_VLM "Enable vlm" ON ) ########################################################### # Modules: Following are all listed in options @@ -220,14 +341,80 @@ vlc_disable_modules(motion) ########################################################### # libraries ########################################################### - +OPTION( ENABLE_CONTRIB "Attempt to use VLC contrib system to get the third-party libraries" ON ) +if(ENABLE_CONTRIB) + set( CONTRIB_INCLUDE ${CMAKE_SOURCE_DIR}/extras/contrib/include) + set( CONTRIB_LIB ${CMAKE_SOURCE_DIR}/extras/contrib/lib) + set( CONTRIB_PROGRAM ${CMAKE_SOURCE_DIR}/extras/contrib/bin) + set( CMAKE_LIBRARY_PATH ${CONTRIB_LIB} ${CMAKE_LIBRARY_PATH} ) + set( CMAKE_PROGRAM_PATH ${CONTRIB_PROGRAM} ${CMAKE_PROGRAM_PATH} ) + set( CMAKE_C_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} -L${CONTRIB_LIB}" ) + set( CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -L${CONTRIB_LIB}" ) + set( CMAKE_SHARED_MODULE_CREATE_C_FLAGS "${CMAKE_SHARED_MODULE_CREATE_C_FLAGS} -L${CONTRIB_LIB}" ) + set( CMAKE_SHARED_MODULE_CREATE_CXX_FLAGS "${CMAKE_SHARED_MODULE_CREATE_CXX_FLAGS} -L${CONTRIB_LIB}" ) + set( CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "${CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS} -L${CONTRIB_LIB}" ) + set( CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS "${CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS} -L${CONTRIB_LIB}" ) + add_definitions(-I${CONTRIB_INCLUDE}) +endif(ENABLE_CONTRIB) + +set(CMAKE_REQUIRED_INCLUDES ${CONTRIB_INCLUDE}) + +#fixme: use find_package(cddb 0.9.5) pkg_check_modules(LIBCDDB libcddb>=0.9.5) if(${LIBCDDB_FOUND}) vlc_module_add_link_libraries(cdda ${LIBCDDB_LIBRARIES}) vlc_add_module_compile_flag(cdda ${LIBCDDB_CFLAGS} ) endif(${LIBCDDB_FOUND}) +find_package(Dlopen) +set(HAVE_DL_DLOPEN ${Dlopen_FOUND}) + +find_package(FFmpeg) +if(FFmpeg_FOUND) + set(CMAKE_EXTRA_INCLUDE_FILES stdint.h) + vlc_check_include_files (ffmpeg/avcodec.h) + vlc_check_include_files (ffmpeg/avutil.h) + vlc_check_include_files (ffmpeg/swscale.h) + vlc_check_include_files (postproc/postprocess.h) + set(CMAKE_EXTRA_INCLUDE_FILES) + vlc_enable_modules(ffmpeg) + vlc_add_module_compile_flag(ffmpeg ${FFmpeg_CFLAGS} ) + vlc_module_add_link_libraries(ffmpeg ${FFmpeg_LIBRARIES}) +endif(FFmpeg_FOUND) + +find_package(Lua) +if(Lua_FOUND) + set(HAVE_LUA TRUE) + vlc_enable_modules(lua) + vlc_check_include_files (lua.h lualib.h) + vlc_add_module_compile_flag(lua ${Lua_CFLAGS} ) + vlc_module_add_link_libraries(lua ${Lua_LIBRARIES}) +endif(Lua_FOUND) + +find_package(Qt4) +if(QT4_FOUND) + set(HAVE_QT4 TRUE) + include_directories(${QT_INCLUDES}) + vlc_check_include_files (qt.h) + vlc_enable_modules(qt4) + vlc_add_module_compile_flag(qt4 ${QT_CFLAGS} ) + vlc_module_add_link_libraries(qt4 ${QT_LIBRARIES} Qt4) +endif(QT4_FOUND) + +find_package(OpenGL) +if(OPENGL_FOUND) + vlc_enable_modules(opengl) + vlc_check_include_files (gl/gl.h) + vlc_check_include_files (gl/glu.h) + vlc_check_include_files (gl/glx.h) + vlc_add_module_compile_flag(opengl ${OPENGL_CFLAGS}) + vlc_module_add_link_libraries(opengl ${OPENGL_LIBRARIES}) +endif(OPENGL_FOUND) + +set(CMAKE_REQUIRED_INCLUDES) + ########################################################### # Final configuration ########################################################### configure_file(${CMAKE_CURRENT_SOURCE_DIR}/include/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/include/config.h) +