# CMake file for development of IMF Player # This CMake file is used under Linux normally. cmake_minimum_required(VERSION 2.4) IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.4) cmake_policy(SET CMP0005 OLD) cmake_policy(SET CMP0003 OLD) #include(PCHSupport_26.cmake) ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.4) MESSAGE( "Preparing the Build-System for IMF Player" ) # This parts detects, if we are working on a 64-bit System #IF( NOT APPLE ) # IF( CMAKE_SIZEOF_VOID_P MATCHES 4 ) # set( HAVE_64_BIT 0 ) # ELSEIF( CMAKE_SIZEOF_VOID_P MATCHES 8 ) # set( HAVE_64_BIT 1 ) # ELSE( CMAKE_SIZEOF_VOID_P MATCHES 4 ) # set( HAVE_64_BIT 0 ) # ENDIF( CMAKE_SIZEOF_VOID_P MATCHES 4 ) #ENDIF( NOT APPLE ) #set( HAVE_64_BIT 0 ) OPTION(DEBUG "enable debug build" Yes) OPTION(SDL "SDL support (will not work without)" Yes) IF (DEBUG) SET(CMAKE_BUILD_TYPE Debug) ELSE (DEBUG) SET(CMAKE_BUILD_TYPE Release) ENDIF (DEBUG) # Platform specific things can be put here # Compilers and other specific variables can be found here: # http://www.cmake.org/Wiki/CMake_Useful_Variables # Check wether in what system it is configured IF(NOT HAVE_64_BIT AND BUILD_TYPE STREQUAL LINUX64) MESSAGE( "Warning: Building 64-bit Version on 32-bit machine is not supported!" ) ENDIF(NOT HAVE_64_BIT AND BUILD_TYPE STREQUAL LINUX64) # Directory creation of all the builds EXEC_PROGRAM(mkdir ARGS -p ${CMAKE_CURRENT_SOURCE_DIR}/build OUTPUT_VARIABLE NULL) EXEC_PROGRAM(mkdir ARGS -p ${CMAKE_CURRENT_SOURCE_DIR}/build/Linux32 OUTPUT_VARIABLE NULL) EXEC_PROGRAM(mkdir ARGS -p ${CMAKE_CURRENT_SOURCE_DIR}/build/Linux64 OUTPUT_VARIABLE NULL) EXEC_PROGRAM(mkdir ARGS -p ${CMAKE_CURRENT_SOURCE_DIR}/build/Win32 OUTPUT_VARIABLE NULL) EXEC_PROGRAM(mkdir ARGS -p ${CMAKE_CURRENT_SOURCE_DIR}/build/Xcode OUTPUT_VARIABLE NULL) PROJECT(imfplayer) # main includes INCLUDE_DIRECTORIES(optional-includes/generated) INCLUDE_DIRECTORIES(src) #INCLUDE_DIRECTORIES(src/fileio) #INCLUDE_DIRECTORIES(src/hardware) #INCLUDE_DIRECTORIES(src/sdl/music) AUX_SOURCE_DIRECTORY(src ROOT_S) AUX_SOURCE_DIRECTORY(src/hardware HARDWARE_S) AUX_SOURCE_DIRECTORY(src/sdl/music SDLMUSIC_S) SET(ALL_SRCS ${ROOT_S} ${HARDWARE_S} ${SDLMUSIC_S}) IF(UNIX) # Compilation under Linux ADD_DEFINITIONS("-c -fmessage-length=0") IF(BUILD_TYPE STREQUAL WIN32) set(PREFIX /usr/i586-mingw32msvc/include) set(CMAKE_INCLUDE_PATH ${PREFIX}) set(CMAKE_C_COMPILER i586-mingw32msvc-gcc) set(CMAKE_CXX_COMPILER i586-mingw32msvc-g++) set(CMAKE_FIND_ROOT_PATH ${PREFIX}) set(CMAKE_INSTALL_PREFIX ${PREFIX}) SET(BUILD_DIR Win32) ADD_DEFINITIONS(-DWIN32) ADD_DEFINITIONS(-DTARGET_WIN32) ELSEIF(BUILD_TYPE STREQUAL LINUX32) ADD_DEFINITIONS("-DTARGET_LNX") IF(HAVE_64_BIT) ADD_DEFINITIONS(-D__i386__) ADD_DEFINITIONS(-m32) ELSE(HAVE_64_BIT) ENDIF(HAVE_64_BIT) SET(BUILD_DIR Linux32) ELSEIF(BUILD_TYPE STREQUAL LINUX64) ADD_DEFINITIONS("-DTARGET_LNX") SET(BUILD_DIR Linux64) ELSE(BUILD_TYPE STREQUAL WIN32) ENDIF(BUILD_TYPE STREQUAL WIN32) SET(OPTIMIZE_COMPILER_FLAG -O3) ENDIF(UNIX) IF (SDL) ADD_DEFINITIONS(-DSDL) IF(BUILD_TYPE STREQUAL WIN32) INCLUDE_DIRECTORIES(/usr/i586-mingw32msvc/include/SDL) ELSE(BUILD_TYPE STREQUAL WIN32) INCLUDE_DIRECTORIES(/usr/include/SDL) ENDIF(BUILD_TYPE STREQUAL WIN32) ENDIF (SDL) IF(DEBUG) ADD_DEFINITIONS(-DDEBUG) ENDIF(DEBUG) # Executable definition ADD_EXECUTABLE(imfplayer ${ALL_SRCS}) # Linking part under Linux IF(SDL) IF(BUILD_TYPE STREQUAL WIN32) TARGET_LINK_LIBRARIES(imfplayer mingw32) TARGET_LINK_LIBRARIES(imfplayer SDLmain) TARGET_LINK_LIBRARIES(imfplayer SDL) ELSEIF(BUILD_TYPE STREQUAL LINUX32) IF(HAVE_64_BIT) TARGET_LINK_LIBRARIES(imfplayer SDL-1.2) ELSE(HAVE_64_BIT) TARGET_LINK_LIBRARIES(imfplayer SDL) ENDIF(HAVE_64_BIT) ELSE(BUILD_TYPE STREQUAL LINUX32) TARGET_LINK_LIBRARIES(imfplayer SDL) ENDIF(BUILD_TYPE STREQUAL WIN32) ENDIF(SDL) IF(BUILD_TYPE STREQUAL LINUX32) IF(HAVE_64_BIT) SET_TARGET_PROPERTIES(imfplayer PROPERTIES LINK_FLAGS -L/usr/lib32) SET_TARGET_PROPERTIES(imfplayer PROPERTIES LINK_FLAGS -m32) ENDIF(HAVE_64_BIT) ENDIF(BUILD_TYPE STREQUAL LINUX32) IF(BUILD_TYPE STREQUAL WIN32) SET_TARGET_PROPERTIES(imfplayer PROPERTIES LINK_FLAGS -L/usr/i586-mingw32msvc/lib) SET_TARGET_PROPERTIES(imfplayer PROPERTIES LINK_FLAGS -mwindows) ENDIF(BUILD_TYPE STREQUAL WIN32) # Set binary(executable) file name. In Windows this filename needs the exe extension # The Windows Version has an icon in the executable IF(BUILD_TYPE STREQUAL WIN32) SET_TARGET_PROPERTIES(imfplayer PROPERTIES OUTPUT_NAME "build/${BUILD_DIR}/IMFPlayer.exe") ELSE(BUILD_TYPE STREQUAL WIN32) SET_TARGET_PROPERTIES(imfplayer PROPERTIES OUTPUT_NAME "build/${BUILD_DIR}/IMFPlayer") ENDIF(BUILD_TYPE STREQUAL WIN32) IF(NOT DEFINED BUILD_TYPE) SET(BUILD_TYPE LINUX32) MESSAGE( "WARNING: You did not specify the build type with the -DBUILD_TYPE= Parameter. LINUX32 has been choosen" ) MESSAGE( "Available Builds are: WIN32, LINUX32, LINUX64, For 64-bit Linux use 'cmake . -DBUILD_TYPE=LINUX64'" ) ENDIF(NOT DEFINED BUILD_TYPE) MESSAGE( "BUILD_TYPE = ${BUILD_TYPE}" ) MESSAGE( "BUILD_DIR = ${BUILD_DIR}" ) MESSAGE( "DEBUG = ${DEBUG}" ) MESSAGE( "CMAKE_C_COMPILER = ${CMAKE_C_COMPILER}" ) MESSAGE( "CMAKE_C_FLAGS = ${CMAKE_C_FLAGS}" ) MESSAGE( "CMAKE_CXX_COMPILER = ${CMAKE_CXX_COMPILER}" ) MESSAGE( "CMAKE_CXX_FLAGS = ${CMAKE_CXX_FLAGS}" ) MESSAGE( "OPENGL = ${OPENGL}" ) MESSAGE( "OGG = ${OGG}" ) MESSAGE( "TREMOR = ${TREMOR}" ) MESSAGE( "64BIT = ${HAVE_64_BIT}" )