PROJECT( hsadminc ) CMAKE_MINIMUM_REQUIRED( VERSION 2.6 ) # # look for packages needed for the build to succeed # # find boost libraries SET(Boost_USE_MULTITHREADED ON) SET(Boost_USE_STATIC_RUNTIME OFF) FIND_PACKAGE( Boost 1.44 REQUIRED COMPONENTS date_time filesystem iostreams regex system unit_test_framework thread ) # find doxygen FIND_PACKAGE( Doxygen 1.7.3 ) # find GnuTLS FIND_PACKAGE( GnuTLS 2.8.6 REQUIRED ) # # set compiler and linker flags # # compiler SET( CMAKE_CXX_FLAGS_DEBUG "-g3 -O0" ) SET( CMAKE_CXX_FLAGS_RELEASE "-O3" ) SET( CMAKE_CXX_FLAGS_RELWITHDEBINFO "-g3 -O3" ) SET( CMAKE_CXX_FLAGS_MINSIZEREL "-Os" ) # gcc specific IF( CMAKE_COMPILER_IS_GNUCC ) SET( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wold-style-cast -pedantic -Wall -Wextra -Winit-self -Wshadow -Wconversion -Wlogical-op -Wnormalized=nfc -Winline -std=c++0x" ) SET( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -std=c++0x" ) SET( CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -std=c++0x" ) SET( CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} -std=c++0x" ) ENDIF() #linker SET( CMAKE_LINK_FLAGS_DEBUG "-g -O0" ) SET( CMAKE_LINK_FLAGS_RELEASE "-O3" ) SET( CMAKE_LINK_FLAGS_RELWITHDEBINFO "-g -O3" ) SET( CMAKE_LINK_FLAGS_MINSIZEREL "-O3" ) # GNU ld specific IF( CMAKE_COMPILER_IS_GNUCC ) SET( CMAKE_LINK_FLAGS_DEBUG "${CMAKE_LINK_FLAGS_RELEASE} --relax" ) SET( CMAKE_LINK_FLAGS_RELEASE "${CMAKE_LINK_FLAGS_RELEASE} --relax" ) SET( CMAKE_LINK_FLAGS_RELWITHDEBINFO "${CMAKE_LINK_FLAGS_RELWITHDEBINFO} --relax" ) SET( CMAKE_LINK_FLAGS_MINSIZEREL "${CMAKE_LINK_FLAGS_MINSIZEREL} -s --gc-sections --relax" ) ENDIF() # build the release as default SET( CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS_RELEASE} ) SET( CMAKE_LINK_FLAGS ${CMAKE_LINK_FLAGS_RELEASE} ) # make sure the boost include files are available INCLUDE_DIRECTORIES( ${Boost_INCLUDE_DIRS} ) # all libs that will be linked to hsadminc SET( HSADMINC_LIB ${Boost_LIBRARIES} gnutls ) # now this is where the source is ADD_SUBDIRECTORY( source ) # packaging IF( ${UNIX} ) SET( CPACK_GNERATOR "DEB;RPM;" ) SET( CPACK_PACKAGE_DESCRIPTION "hsadmin command line client" ) SET( CPACK_PACKAGE_DESCRIPTION_SUMMARY "a command line tool to access servers of the configuration tool hsadmin developed by Hostsharing e.G." ) SET( CPACK_PACKAGE_NAME "hsadminc" ) SET( CPACK_DEBIAN_PACKAGE_DEPENDS "boost (>= 1.44), gnutls (>= 2.8.6)" ) SET( CPACK_PACKAGE_CONTACT "Christof Donat" ) SET( CPACK_PACKAGE_VENDOR "Hostsharing e.G." ) SET( CPACK_PACKAGE_VERSION_MAJOR "0" ) SET( CPACK_PACKAGE_VERSION_MINOR "0" ) SET( CPACK_PACKAGE_VERSION_PATCH "1" ) SET( VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}" ) ENDIF() # currently WIN32 is not supported #IF( ${WIN32} ) # SET( CPACK_GNERATOR "NSIS;" ) # SET( CPACK_NSIS_MUI_ICON "" ) # SET( CPACK_NSIS_MUI_UNIICON "" ) # SET( CPACK_PACKAGE_ICON "" ) # SET( CPACK_NSIS_EXTRA_INSTALL_COMMANDS "" ) # SET( CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "" ) # SET( CPACK_NSIS_COMPRESSOR "" ) # SET( CPACK_NSIS_MODIFY_PATH "" ) # SET( CPACK_NSIS_DISPLAY_NAME "" ) # SET( CPACK_NSIS_INSTALLED_ICON_NAME "" ) # SET( CPACK_NSIS_HELP_LINK "" ) # SET( CPACK_NSIS_URL_INFO_ABOUT "" ) # SET( CPACK_NSIS_CONTACT "" ) # SET( CPACK_NSIS_CREATE_ICONS_EXTRA "" ) # SET( CPACK_NSIS_DELETE_ICONS_EXTRA "" ) # SET( CPACK_NSIS_MENU_LINKS "" ) # SET( CPACK_NSIS_MUI_FINISHPAGE_RUN "" ) #ENDIF() # currently OSX is not supported #IF( ${APPLE} ) # SET( CPACK_GNERATOR "MACOSX_BUNDLE;" ) # SET( CPACK_PACKAGE_FILE_NAME "" ) # SET( CPACK_PACKAGE_ICON "" ) # SET( CPACK_BUNDLE_NAME "" ) # SET( CPACK_BUNDLE_ICON "" ) # SET( CPACK_BUNDLE_PLIST "" ) # SET( CPACK_BUNDLE_STARTUP_COMMAND "" ) #ENDIF() # # doxygen documentation # CONFIGURE_FILE( doc/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile ) ADD_CUSTOM_TARGET( doxygen ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile ) SET_PROPERTY( DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CKEAN_FILES doc ) GET_TARGET_PROPERTY( DOC_TARGET doc TYPE ) IF( NOT DOC_TARGET ) ADD_CUSTOM_TARGET( doc ) ENDIF() ADD_DEPENDENCIES( doc doxygen ) SET( DOC_PATH "share/doc/${CPACK_PACKAGE_NAME}-${VERSION}" ) INSTALL( DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doc/html DESTINATION DOC_PATH )