Codebase list httraqt / upstream/1.2.1 CMakeLists.txt
upstream/1.2.1

Tree @upstream/1.2.1 (Download .tar.gz)

CMakeLists.txt @upstream/1.2.1raw · history · blame

PROJECT(httraqt)

# Configure CMake ...
CMAKE_MINIMUM_REQUIRED(VERSION 2.6 FATAL_ERROR)
CMAKE_POLICY(SET CMP0003 OLD)

# INCLUDE(CPack)
INCLUDE(CheckIncludeFile)
INCLUDE(CheckIncludeFileCXX)
INCLUDE(TestCXXAcceptsFlag)
INCLUDE(CheckCXXCompilerFlag)
INCLUDE(FindPkgConfig)

# SET(TARGET_NAME httraqt )

SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")

SET(CURRENT_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR})

INCLUDE(HTTRAQTOutOfSourceBuild) # Disallow in-source builds
INCLUDE(HTTRAQTGenerateDEF) # Convenience macro for linking Win32 DLLs using MSVC
INCLUDE(HTTRAQTDependencies)
INCLUDE(HTTRAQTWordSize) # Detect 32/64 bit platform
INCLUDE(HTTRAQTCompiler) # Detect problematic compilers

# Set the HTTraQt version
#cat README | grep -E  '^[0-9]+\.[0-9]+\.[0-9]+' | head -n 1
EXECUTE_PROCESS (
   COMMAND cat README
   COMMAND grep -E  "^[0-9]+\\.[0-9]+\\.[0-9]+"
   COMMAND head -n 1
   WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
   RESULT_VARIABLE HTTQTVERSION
   OUTPUT_VARIABLE DESCRIBE_STRING
   OUTPUT_STRIP_TRAILING_WHITESPACE)
     
IF(NOT DESCRIBE_STRING)
        SET(DESCRIBE_STRING "no valid git tag for ${PROJECT_NAME} found")
ELSE()
        STRING(REGEX MATCH "([0-9]+\\.[0-9]+\\.[0-9]+)" HTTRAQT_VERSION "${DESCRIBE_STRING}" )
        IF (NOT HTTRAQT_VERSION)
                SET(DESCRIBE_STRING "no valid git tag ${PROJECT_NAME}-x.x.x found")
        ENDIF()
ENDIF()

MESSAGE("-- Version info: ${HTTRAQT_VERSION}") 
SET(VERSION ${HTTRAQT_VERSION})

EXECUTE_PROCESS (
      COMMAND date +"%d %b %Y"
      COMMAND sed -e "s/\"//g"
      OUTPUT_VARIABLE BUILD_DATE
      OUTPUT_STRIP_TRAILING_WHITESPACE)

MESSAGE("-- Version build date: ${BUILD_DATE}")

configure_file (
  "${PROJECT_SOURCE_DIR}/sources/version.h.in"
  "${PROJECT_SOURCE_DIR}/sources/version.h" )

# here parse the VERSION
# SET(HTTRAQT_MAJOR_VERSION 1)
# SET(HTTRAQT_MINOR_VERSION 0)
# SET(HTTRAQT_RELEASE_VERSION 14)
# SET(HTTRAQT_BUILD_VERSION 0)
# SET(HTTRAQT_SO_VERSION 1)

SET(HTTRAQT_PACKAGE httraqt)
# SET(HTTRAQT_VERSION ${HTTRAQT_MAJOR_VERSION}.${HTTRAQT_MINOR_VERSION}.${HTTRAQT_RELEASE_VERSION}.${HTTRAQT_BUILD_VERSION})
SET(HTTRAQT_HOST ${CMAKE_SYSTEM} ${CMAKE_SYSTEM_PROCESSOR})
SET(HTTRAQT_COPYRIGHT "Copyright (c) 2012-2013, Eduard Kalinowski. All Rights Reserved.")
SET(HTTRAQT_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})

# Setup high-level build options
IF(WIN32 AND MSVC)
	SET(HTTRAQT_ENABLE_SYMBOL_VISIBILITY_DEFAULT ON)
ELSE(WIN32 AND MSVC)
	SET(HTTRAQT_ENABLE_SYMBOL_VISIBILITY_DEFAULT OFF)
ENDIF(WIN32 AND MSVC)

FIND_PACKAGE(Qt4 REQUIRED)


INCLUDE(FindQt4)
IF(NOT QT4_FOUND)
    MESSAGE(FATAL_ERROR "Qt4 could not be found. "
        "If it's INSTALLed in a non-standard location, specify the path to qmake in QT_QMAKE_EXECUTABLE. "
        "You can do it in interactive mode (ccmake instead of cmake) or using -DVAR=VAL syntax.")
ENDIF(NOT QT4_FOUND)

INCLUDE(HTTRAQTFindHttrack)

SET( HTTRACK_INCLUDES_DIR "" )


INCLUDE_DIRECTORIES(${QT_INCLUDES})
MESSAGE(STATUS "QT_INCLUDES ${QT_INCLUDES}")
LINK_DIRECTORIES(${QT_LIBRARY_DIR})
MESSAGE(STATUS "QT_LIBRARY_DIR ${QT_LIBRARY_DIR}")

SET ( OBJECTS_DIR temp )
SET ( MOC_DIR temp )
SET ( UI_HEADERS_DIR temp )
SET ( UI_SOURCES_DIR temp )

ADD_SUBDIRECTORY(sources/main)
ADD_SUBDIRECTORY(sources/options)
ADD_SUBDIRECTORY(sources/icons)

INCLUDE_DIRECTORIES( ${HTTRACK_INCLUDES_DIR}  ${CMAKE_SOURCE_DIR} $(CMAKE_CURRENT_SOURCE_DIR)/sources/options/includes $(CMAKE_CURRENT_SOURCE_DIR)/sources/main/includes )

#QT4_WRAP_CPP(APP_HEADERS_MOC ${HTTRACK_HEADERS} ${MAIN_HEADERS} ${OPT_HEADERS} )
QT4_WRAP_CPP(APP_HEADERS_MOC ${MAIN_HEADERS} ${OPT_HEADERS} )
QT4_WRAP_UI(APP_FORMS_HEADERS ${MAIN_FORMS} ${OPT_FORMS})
QT4_ADD_RESOURCES(APP_RESOURCES_RCC ${APP_RESOURCES})

INCLUDE_DIRECTORIES( ${HTTRACK_INCLUDES_DIR} ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})

SOURCE_GROUP( "Generated Files" FILES
    ${MOC_FILES_CPP}
    ${APP_FORMS_HEADERS}
    ${APP_RESOURCES_RCC}
)

INCLUDE(${QT_USE_FILE})
ADD_DEFINITIONS(${QT_DEFINITIONS} -DQT_PROJECT -DNO_QT3SUPPORT -DDISABLE_QT3SUPPORT)
#REMOVE_DEFINITIONS(-DQT3_SUPPORT)
#SET(QT_QT3SUPPORT_INCLUDE_DIR OFF)

ADD_EXECUTABLE(${CMAKE_PROJECT_NAME}
    ${APP_SOURCES} 
#    ${HTTRACK_SOURCES}
    ${MAIN_SOURCES}
    ${OPT_SOURCES}
    ${APP_HEADERS_MOC} 
    ${APP_FORMS_HEADERS} 
    ${APP_RESOURCES_RCC}
)

TARGET_LINK_LIBRARIES(${CMAKE_PROJECT_NAME} ${QT_LIBRARIES} httrack)

ADD_CUSTOM_TARGET (tags
    COMMAND  ctags -R -f tags ${CMAKE_SOURCE_DIR}/sources/main ${CMAKE_SOURCE_DIR}/sources/options
    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
)
# MESSAGE("CMAKE_SOURCE_DIR main ${CMAKE_SOURCE_DIR}")
# MESSAGE("CMAKE_CURRENT_BINARY_DIR main ${CMAKE_CURRENT_BINARY_DIR}")
# INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})


# Setup module enabled/disabled defaults ...
IF(WIN32)
	SET(HTTRAQT_BUILD_GLX_MODULE_DEFAULT OFF)
	SET(HTTRAQT_BUILD_OSX_MODULE_DEFAULT OFF)
	SET(HTTRAQT_BUILD_VIRTUAL_OFFSCREEN_MODULE_DEFAULT OFF)
ENDIF(WIN32)

IF(UNIX AND NOT APPLE)
	SET(HTTRAQT_BUILD_GLX_MODULE_DEFAULT OFF)
	SET(HTTRAQT_BUILD_OSX_MODULE_DEFAULT OFF)
	SET(HTTRAQT_BUILD_VIRTUAL_OFFSCREEN_MODULE_DEFAULT OFF)
ENDIF(UNIX AND NOT APPLE)

IF(APPLE)
	SET(HTTRAQT_BUILD_GLX_MODULE_DEFAULT OFF)
	SET(HTTRAQT_BUILD_OSX_MODULE_DEFAULT ON)
	SET(HTTRAQT_BUILD_VIRTUAL_OFFSCREEN_MODULE_DEFAULT OFF)
ENDIF(APPLE)


OPTION(HTTRAQT_ENABLE_SYMBOL_VISIBILITY "Minimize the number of symbols exported from shared libraries." ${HTTRAQT_ENABLE_SYMBOL_VISIBILITY_DEFAULT})
MARK_AS_ADVANCED(HTTRAQT_ENABLE_SYMBOL_VISIBILITY)

# OPTION(HTTRAQT_ENABLE_TESTING "Build the HTTraQt regression test suite." OFF)
# SET(BUILD_TESTING ${HTTRAQT_ENABLE_TESTING} CACHE INTERNAL "" FORCE)
# INCLUDE(CTest)
# MARK_AS_ADVANCED(DART_TESTING_TIMEOUT)
# IF(HTTRAQT_ENABLE_TESTING)
# 	CMAKE_MINIMUM_REQUIRED(VERSION 2.6.1 FATAL_ERROR)
# 	CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/CTestCustom.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/CTestCustom.cmake @ONLY)
# ENDIF(HTTRAQT_ENABLE_TESTING)

# Find required external packages
HTTRAQT_CHECK_REQUIRED_DEPENDENCY(HTTRAQT_HTTRACK_FOUND "libhttrack2" "http://www.httrack.com" "")
# HTTRAQT_CHECK_OPTIONAL_DEPENDENCY(HTTRAQT_BUILD_3DS_IO_MODULE HTTRAQT_3DS_FOUND "lib3ds")

# Capture system configuration
INCLUDE(HTTRAQTSystemConfiguration)

# Win32 configuration
IF(WIN32)
	IF(NOT MSVC)
		SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--enable-runtime-pseudo-reloc" CACHE STRING "" FORCE)
		SET(CMAKE_SHARED_LINKER_FLAGS "-Wl,--enable-runtime-pseudo-reloc -Wl,--export-all-symbols" CACHE STRING "" FORCE)
	ENDIF(NOT MSVC)
ENDIF(WIN32)

# Setup output directories ...
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${HTTRAQT_BINARY_DIR}/bin)

SET(HTTRAQT_LIBDIR lib) # Allows us to handle 64-bit libs if/when it becomes necessary.
IF(WIN32)
	SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${HTTRAQT_BINARY_DIR}/bin)
ELSE(WIN32)
	SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${HTTRAQT_BINARY_DIR}/${HTTRAQT_LIBDIR})
ENDIF(WIN32)

# Setup a macro for compiling resources ...
MACRO(HTTRAQT_COMPILE_RESOURCE OUTPUT INPUT RESOURCE_PATH)

	SET(INPUT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/${INPUT}")
	SET(OUTPUT_FILE "${CMAKE_CURRENT_BINARY_DIR}/${INPUT}.cpp")
	GET_FILENAME_COMPONENT(OUTPUT_PATH ${OUTPUT_FILE} PATH)

	GET_TARGET_PROPERTY(HTTRAQT_RESOURCE_COMPILER httraqt-resource-compiler LOCATION)

	ADD_CUSTOM_COMMAND(
		DEPENDS httraqt-resource-compiler
		DEPENDS ${INPUT_FILE}
		COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPUT_PATH}
		COMMAND ${HTTRAQT_RESOURCE_COMPILER} --input ${INPUT_FILE} --path \"<path>${RESOURCE_PATH}</path>\" --output ${OUTPUT_FILE}
		OUTPUT ${OUTPUT_FILE}
		COMMENT "Compiling resource ${INPUT_FILE}"
		)

	LIST(APPEND ${OUTPUT} ${OUTPUT_FILE})

ENDMACRO(HTTRAQT_COMPILE_RESOURCE)

# Setup subdirectories ...
HTTRAQT_CONDITIONAL_BUILD(MSVC gendef)

OPTION(HTTRAQT_ENABLE_DISTRIBUTION "Enable distribution targets." ON)
HTTRAQT_CONDITIONAL_BUILD(HTTRAQT_ENABLE_DISTRIBUTION distribution)

# Hide some cruft ...
MARK_AS_ADVANCED(CMAKE_BACKWARDS_COMPATIBILITY)
MARK_AS_ADVANCED(CMAKE_EXECUTABLE_FORMAT)
MARK_AS_ADVANCED(CMAKE_LIBRARY_OUTPUT_DIRECTORY)
MARK_AS_ADVANCED(CMAKE_OSX_ARCHITECTURES)
MARK_AS_ADVANCED(CMAKE_OSX_DEPLOYMENT_TARGET)
MARK_AS_ADVANCED(CMAKE_OSX_SYSROOT)
MARK_AS_ADVANCED(CMAKE_RUNTIME_OUTPUT_DIRECTORY)
MARK_AS_ADVANCED(CMAKE_USE_CHRPATH)