| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285 |
- # RWD version for newsfsys with PVOC EX support
- cmake_minimum_required(VERSION 2.8.3)
- project (CDP)
- # ENABLE_TESTING()
- if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
- set(CMAKE_COMPILER_IS_CLANG 1)
- endif()
- message(STATUS "${CMAKE_HOME_DIRECTORY}")
- message(STATUS "installing to ${CMAKE_INSTALL_PREFIX}")
- set(CMAKE_CXX_FLAGS_RELEASE "-O3 -std=c++11 -stdlib=libc++")
- set(CMAKE_C_FLAGS_RELEASE "-O3 ")
- set(CMAKE_VERBOSE_MAKEFILE OFF)
- # Project definitions
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_HOME_DIRECTORY}/NewRelease")
- message(STATUS "building to ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
- # Relative install paths
- set(EXECUTABLE_INSTALL_DIR "bin")
- function(my_install name)
- install(TARGETS ${name}
- RUNTIME DESTINATION "${EXECUTABLE_INSTALL_DIR}" )
- endfunction(my_install)
- set(LIBRARY_INSTALL_DIR "lib")
- message(STATUS "LIBRARY INSTALL DIR: ${LIBRARY_INSTALL_DIR}")
- include(TestBigEndian)
- include(CheckFunctionExists)
- include(CheckIncludeFile)
- include(CheckIncludeFileCXX)
- include(CheckLibraryExists)
- include(CMakeParseArguments)
- include(CheckCCompilerFlag)
- include(CheckCXXCompilerFlag)
- # If FAIL_MISSING is true and the dependencies are not fulfilled,
- # it will abort the cmake run.
- # If FAIL_MISSING is false, it will set the option to OFF.
- # If the target is not enabled, it will do nothing.
- # example: check_deps(BUILD_NEW_PARSER FLEX_EXECUTABLE BISON_EXECUTABLE)
- function(check_deps option)
- if(${option})
- set(i 1)
- while( ${i} LESS ${ARGC} )
- set(dep ${ARGV${i}})
- if(NOT ${dep})
- if(FAIL_MISSING)
- message(FATAL_ERROR
- "${option} is enabled, but ${dep}=\"${${dep}}\"")
- else()
- message(STATUS "${dep}=\"${${dep}}\", so disabling ${option}")
- set(${option} OFF PARENT_SCOPE)
- # Set it in the local scope too
- set(${option} OFF)
- endif()
- endif()
- math(EXPR i "${i}+1")
- endwhile()
- endif()
- if(${option})
- message(STATUS "${option} is enabled")
- else()
- message(STATUS "${option} is disabled")
- endif()
- endfunction(check_deps)
- ### COMPILER OPTIMIZATION FLAGS
- option(USE_COMPILER_OPTIMIZATIONS "Use the default CDP compiler optimization flags" ON)
- if(USE_COMPILER_OPTIMIZATIONS)
- include(cmake/CompilerOptimizations.cmake)
- endif()
- if(APPLE)
- set(OSX_VERSION " ")
- endif()
- # Include this after the install path definitions so we can override them here.
- # Also after function definitions so we can use them there
- find_file(CUSTOM_CMAKE "Custom.cmake" HINTS ${CMAKE_HOME_DIRECTORY})
- if(CUSTOM_CMAKE)
- message(STATUS "Including Custom.cmake file: ${CUSTOM_CMAKE}")
- include(${CUSTOM_CMAKE})
- else()
- message(STATUS "Not using Custom.cmake file.")
- endif()
- if(WIN32 AND NOT MSVC)
- if(EXISTS "C:/MinGW/include")
- include_directories(C:/MinGW/include)
- else()
- MESSAGE(STATUS "MinGW include dir not found")
- endif()
- set(CMAKE_MODULE_LINKER_FLAGS
- "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--add-stdcall-alias")
- endif()
- if(WIN32)
- set(CMAKE_SHARED_LIBRARY_PREFIX "")
- set(CMAKE_SHARED_MODULE_PREFIX "")
- set(EXTRA_LIBRARIES
- kernel32
- user32
- ole32
- winspool
- odbc32
- gdi32
- comdlg32
- advapi32
- shell32
- oleaut32
- uuid)
- else()
- set(EXTRA_LIBRARIES "m")
- endif(WIN32)
- if(CMAKE_SYSTEM_NAME MATCHES "Linux")
- set(LINUX YES)
- else()
- set(LINUX NO)
- endif()
- ## USER OPTIONS ##
- option(FAIL_MISSING "Fail when a required external dependency is not present (useful for packagers)" OFF)
- option(BUILD_RELEASE "Build for release" ON)
- # Optional targets, they should all default to ON (check_deps will disable them if not possible to build)
- ##
- set(BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR})
- check_c_compiler_flag(-fvisibility=hidden HAS_VISIBILITY_HIDDEN)
- check_cxx_compiler_flag(-fvisibility=hidden HAS_CXX_VISIBILITY_HIDDEN)
- if (HAS_VISIBILITY_HIDDEN)
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden")
- endif()
- if (HAS_CXX_VISBILITY_HIDDEN)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden")
- endif()
- if(APPLE)
- if(BUILD_INSTALLER)
- set(CS_FRAMEWORK_DEST "${CMAKE_INSTALL_PREFIX}")
- endif()
- set(DEFAULT_OSX_SYSROOT /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/)
- if(NOT CMAKE_OSX_SYSROOT AND EXISTS ${DEFAULT_OSX_SYSROOT})
- set(CMAKE_OSX_SYSROOT ${DEFAULT_OSX_SYSROOT})
- endif()
- if(EXISTS ${CMAKE_OSX_SYSROOT})
- set(CMAKE_OSX_DEPLOYMENT_TARGET 10.8)
- endif()
- endif()
- set(CDPLIB "lib")
- if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
- add_definitions("-Wno-format")
- # add_compiler_flags("-g")
- endif()
- set(BUILD_BIN_DIR ${BUILD_DIR/bin})
- set(BUILD_LIB_DIR ${BUILD_DIR}/lib)
- message(STATUS "BUILD_BIN_DIR set to ${BUILD_BIN_DIR}")
- message(STATUS "BUILD_LIB_DIR set to ${BUILD_LIB_DIR}")
- # OS specific checks
- TEST_BIG_ENDIAN(BIG_ENDIAN)
- ## CONFIGURATION ##
- SET(BUILD_SHARED_LIBS OFF)
- ## HEADER/LIBRARY/OTHER CHECKS ##
- option(USE_LOCAL_PORTAUDIO "Build and use PA programs" ON)
- if(USE_LOCAL_PORTAUDIO)
- message(STATUS "paprogs to be built")
- else()
- message(STATUS "paprogs not built")
- endif()
-
- set(HEADERS_TO_CHECK
- unistd.h io.h fcntl.h stdint.h
- sys/time.h sys/types.h termios.h
- values.h winsock.h sys/socket.h
- dirent.h )
- foreach(header ${HEADERS_TO_CHECK})
- # Convert to uppercase and replace [./] with _
- string(TOUPPER ${header} tmp)
- string(REGEX REPLACE [./] "_" upper_header ${tmp})
- check_include_file(${header} HAVE_${upper_header})
- endforeach()
- ##set(LIBCDP_CFLAGS -D__BUILDING_LIBCDP)
- include_directories(./dev/include)
- #RWD for PVOCEX support
- include_directories(./dev/newinclude)
- #if(WIN32)
- include_directories(${PORTAUDIO_INCLUDE_DIRECTORY})
- #endif(WIN32)
- include_directories(${CMAKE_CURRENT_BINARY_DIR})
- # Add the install target
- ###??
- set(LIBCDP_LIBS
- ${PORTAUDIO_LIBRARY})
- if(WIN32)
- list(APPEND LIBCDP_LIBS "${CDP_WINDOWS_LIBRARIES}")
- endif()
- if(LINUX)
- message(STATUS "Building on Linux")
- add_definitions( -Dunix -Dlinux -D_X86_ -DFILE_AMB_SUPPORT)
- list(APPEND LIBCDP_LIBS m)
- endif()
- if(APPLE)
- message(STATUS "Building on OSX")
- # we - CDP - need the macosx directive to distribute; not wanted for a personal build
- # e.g. -mmacosx-version-min=10.8
- add_definitions( -Dunix)
- list(APPEND LIBCDP_LIBS m)
- endif()
- if(WIN32)
- message(STATUS "Building on Windows")
- add_definitions(-DWIN32 -D_WIN32)
- endif()
- #add_compiler_flags(${LIBCDP_CFLAGS} TARGETS ${CDPLIB})
- add_subdirectory(dev)
- # # uninstall target
- # configure_file(
- # "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
- # "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
- # IMMEDIATE @ONLY)
- # add_custom_target(uninstall
- # COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
- ## target etags/tags
- if(UNIX)
- add_custom_target(tags COMMAND etags `find ${CMAKE_CURRENT_SOURCE_DIR} -name \\*.cc -or -name \\*.hh -or -name \\*.cpp -or -name \\*.h -or -name \\*.c | grep -v " " `)
- add_custom_target(etags DEPENDS tags)
- endif()
- # build a CPack driven installer package
- #include (InstallRequiredSystemLibraries)
- set (CPACK_PACKAGE_NAME "cdp")
- set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING")
- set (CPACK_PACKAGE_VERSION "8.0.1")
- set (CPACK_PACKAGE_VERSION_MAJOR "8")
- set (CPACK_PACKAGE_VERSION_MINOR "0")
- set (CPACK_PACKAGE_VERSION_PATCH "1")
- include (CPack)
|