mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 13:10:19 +00:00
55d010bad8
The C code should be compilable without the need to compile the Gui part, too. This is expecially good for unit testing as we can test all the algorithms without a window appearing out of nowhere. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
202 lines
No EOL
5.8 KiB
CMake
202 lines
No EOL
5.8 KiB
CMake
project(Subsurface)
|
|
cmake_minimum_required(VERSION 2.8)
|
|
|
|
#options
|
|
SET(SUBSURFACE_QT_VERSION "4")
|
|
|
|
SET(CMAKE_AUTOMOC ON)
|
|
SET(CMAKE_AUTOUIC ON)
|
|
SET(CMAKE_MODULE_PATH ${${PROJECT_NAME}_SOURCE_DIR}/marbledata)
|
|
|
|
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUXX)
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99 ")
|
|
endif()
|
|
|
|
INCLUDE_DIRECTORIES( . ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_BINARY_DIR} qt-ui qt-ui/profile)
|
|
FIND_PACKAGE(PkgConfig)
|
|
|
|
MACRO(pkg_config_library LIBNAME pcfile)
|
|
pkg_check_modules(${LIBNAME} ${pcfile})
|
|
include_directories(${${LIBNAME}_INCLUDE_DIRS})
|
|
link_directories(${${LIBNAME}_LIBRARY_DIRS})
|
|
add_definitions(${${LIBNAME}_CFLAGS_OTHER})
|
|
set(SUBSURFACE_LINK_LIBRARIES ${SUBSURFACE_LINK_LIBRARIES} ${${LIBNAME}_LIBRARIES})
|
|
ENDMACRO()
|
|
|
|
pkg_config_library(LIBXML libxml-2.0)
|
|
pkg_config_library(LIBSQLITE3 sqlite3)
|
|
pkg_config_library(LIBGIT2 libgit2)
|
|
pkg_config_library(LIBXSLT libxslt)
|
|
|
|
SET(LIBDCDEVEL "" CACHE STRING "libraries")
|
|
IF(NOT (LIBDCDEVEL STREQUAL ""))
|
|
cmake_policy(SET CMP0015 OLD)
|
|
include_directories(${LIBDCDEVEL}/include )
|
|
link_directories(${LIBDCDEVEL}/src/.libs)
|
|
ENDIF()
|
|
|
|
STRING(COMPARE EQUAL "${${PROJECT_NAME}_SOURCE_DIR}" "${${PROJECT_NAME}_BINARY_DIR}" insource)
|
|
GET_FILENAME_COMPONENT(PARENTDIR ${${PROJECT_NAME}_SOURCE_DIR} PATH)
|
|
STRING(COMPARE EQUAL "${${PROJECT_NAME}_SOURCE_DIR}" "${PARENTDIR}" insourcesubdir)
|
|
IF(NOT (insource OR insourcedir))
|
|
add_custom_target(link_marble_data ALL COMMAND rm -f marbledata && ln -s ${${PROJECT_NAME}_SOURCE_DIR}/marbledata ${${PROJECT_NAME}_BINARY_DIR}/marbledata)
|
|
ENDIF()
|
|
|
|
#configure Qt version.
|
|
IF(${SUBSURFACE_QT_VERSION} MATCHES "4")
|
|
SET(QT_USE_QTNETWORK TRUE)
|
|
SET(QT_USE_QTXML TRUE)
|
|
SET(QT_USE_QTSVG TRUE)
|
|
SET(QT_USE_QTTEST TRUE)
|
|
SET(QT_USE_QTWEBKIT TRUE)
|
|
FIND_PACKAGE(Qt4 REQUIRED)
|
|
INCLUDE(${QT_USE_FILE})
|
|
ADD_DEFINITIONS(${QT_DEFINITIONS})
|
|
FIND_PACKAGE(Marble REQUIRED)
|
|
INCLUDE_DIRECTORIES(${MARBLE_INCLUDE_DIR})
|
|
ELSEIF(${SUBSURFACE_QT_VERSION} MATCHES "5")
|
|
ADD_DEFINITIONS(-DNO_MARBLE)
|
|
ELSE()
|
|
message( FATAL_ERROR "Qt version should be 4 or 5" )
|
|
ENDIF()
|
|
|
|
# Generate the ssrf-config.h every 'make'
|
|
FILE(WRITE ${CMAKE_BINARY_DIR}/version.h.in "\#define VERSION_STRING \"4.1.\"@VERSION@\n")
|
|
FILE(WRITE ${CMAKE_BINARY_DIR}/version.cmake "EXECUTE_PROCESS(
|
|
COMMAND date +\"%s\"
|
|
OUTPUT_VARIABLE VERSION
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
CONFIGURE_FILE(\${SRC} \${DST} @ONLY)
|
|
")
|
|
ADD_CUSTOM_TARGET(version ALL COMMAND
|
|
${CMAKE_COMMAND} -D SRC=${CMAKE_BINARY_DIR}/version.h.in
|
|
-D DST=${CMAKE_BINARY_DIR}/ssrf-version.h
|
|
-P ${CMAKE_BINARY_DIR}/version.cmake
|
|
)
|
|
|
|
# compile the core library, in C.
|
|
SET(SUBSURFACE_CORE_LIB_SRCS
|
|
deco.c
|
|
device.c
|
|
dive.c
|
|
divelist.c
|
|
equipment.c
|
|
file.c
|
|
libdivecomputer.c
|
|
load-git.c
|
|
membuffer.c
|
|
parse-xml.c
|
|
planner.c
|
|
profile.c
|
|
worldmap-save.c
|
|
save-git.c
|
|
save-xml.c
|
|
sha1.c
|
|
statistics.c
|
|
strtod.c
|
|
subsurfacestartup.c
|
|
time.c
|
|
uemis.c
|
|
uemis-downloader.c
|
|
linux.c
|
|
#gettextfrommoc should be added because we are using it on the c-code.
|
|
gettextfromc.cpp
|
|
#dirk ported some core functionality to c++.
|
|
qthelper.cpp
|
|
)
|
|
|
|
#the interface, in C++
|
|
SET(SUBSURFACE_INTERFACE
|
|
qt-ui/updatemanager.cpp
|
|
qt-ui/about.cpp
|
|
qt-ui/completionmodels.cpp
|
|
qt-ui/divecomputermanagementdialog.cpp
|
|
qt-ui/divelistview.cpp
|
|
qt-ui/diveplanner.cpp
|
|
qt-ui/downloadfromdivecomputer.cpp
|
|
qt-ui/globe.cpp
|
|
qt-ui/graphicsview-common.cpp
|
|
qt-ui/kmessagewidget.cpp
|
|
qt-ui/maintab.cpp
|
|
qt-ui/mainwindow.cpp
|
|
qt-ui/modeldelegates.cpp
|
|
qt-ui/models.cpp
|
|
qt-ui/preferences.cpp
|
|
qt-ui/printdialog.cpp
|
|
qt-ui/printlayout.cpp
|
|
qt-ui/printoptions.cpp
|
|
qt-ui/simplewidgets.cpp
|
|
qt-ui/starwidget.cpp
|
|
qt-ui/subsurfacewebservices.cpp
|
|
qt-ui/tableview.cpp
|
|
qt-ui/exif.cpp
|
|
qt-ui/divelogimportdialog.cpp
|
|
qt-ui/tagwidget.cpp
|
|
qt-ui/groupedlineedit.cpp
|
|
qt-ui/usermanual.cpp
|
|
)
|
|
|
|
#the profile widget
|
|
SET(SUBSURFACE_PROFILE_LIB_SRCS
|
|
qt-ui/profile/profilewidget2.cpp
|
|
qt-ui/profile/diverectitem.cpp
|
|
qt-ui/profile/divepixmapitem.cpp
|
|
qt-ui/profile/divelineitem.cpp
|
|
qt-ui/profile/divetextitem.cpp
|
|
qt-ui/profile/animationfunctions.cpp
|
|
qt-ui/profile/divecartesianaxis.cpp
|
|
qt-ui/profile/diveplotdatamodel.cpp
|
|
qt-ui/profile/diveprofileitem.cpp
|
|
qt-ui/profile/diveeventitem.cpp
|
|
qt-ui/profile/divetooltipitem.cpp
|
|
qt-ui/profile/ruleritem.cpp
|
|
)
|
|
|
|
#the main app.
|
|
SET(SUBSURFACE_APP
|
|
main.cpp
|
|
qt-gui.cpp
|
|
qthelper.cpp
|
|
)
|
|
|
|
FILE(GLOB SUBSURFACE_UI qt-ui/*.ui)
|
|
# to be replaced by QT_WRAP_UI on CMake 3.
|
|
IF(${SUBSURFACE_QT_VERSION} MATCHES "4")
|
|
QT4_WRAP_UI( SUBSURFACE_UI_HDRS ${SUBSURFACE_UI} )
|
|
QT4_ADD_RESOURCES( SUBSURFACE_QRC_HRDS subsurface.qrc )
|
|
ELSEIF(${SUBSURFACE_QT_VERSION} MATCHES "5")
|
|
QT5_WRAP_UI( SUBSURFACE_UI_HDRS ${SUBSURFACE_UI} )
|
|
ENDIF()
|
|
|
|
ADD_LIBRARY(subsurface_corelib STATIC ${SUBSURFACE_CORE_LIB_SRCS} )
|
|
ADD_LIBRARY(subsurface_profile STATIC ${SUBSURFACE_PROFILE_LIB_SRCS})
|
|
ADD_LIBRARY(subsurface_generated_ui STATIC ${SUBSURFACE_UI_HDRS})
|
|
ADD_LIBRARY(subsurface_interface STATIC ${SUBSURFACE_INTERFACE})
|
|
ADD_EXECUTABLE(subsurface ${SUBSURFACE_APP} ${SUBSURFACE_QRC_HRDS} )
|
|
|
|
target_link_libraries( subsurface
|
|
subsurface_generated_ui
|
|
subsurface_interface
|
|
subsurface_profile
|
|
subsurface_corelib
|
|
${QT_LIBRARIES}
|
|
${MARBLE_LIBRARIES}
|
|
${SUBSURFACE_LINK_LIBRARIES}
|
|
-ldivecomputer
|
|
-lzip
|
|
)
|
|
|
|
ADD_DEPENDENCIES(subsurface_profile subsurface_generated_ui)
|
|
ADD_DEPENDENCIES(subsurface_interface subsurface_generated_ui)
|
|
ADD_DEPENDENCIES(subsurface_generated_ui version)
|
|
ADD_DEPENDENCIES(subsurface_corelib version)
|
|
|
|
ENABLE_TESTING()
|
|
ADD_EXECUTABLE( TestUnitConversion tests/testunitconversion.cpp )
|
|
TARGET_LINK_LIBRARIES( TestUnitConversion ${QT_LIBRARIES} ${SUBSURFACE_LINK_LIBRARIES} -lzip -ldivecomputer subsurface_corelib)
|
|
ADD_TEST( NAME TestUnitConversion COMMAND TestUnitConversion)
|
|
|
|
ADD_EXECUTABLE( TestProfile tests/testprofile.cpp )
|
|
TARGET_LINK_LIBRARIES( TestProfile ${QT_LIBRARIES} ${SUBSURFACE_LINK_LIBRARIES} -lzip -ldivecomputer subsurface_corelib)
|
|
ADD_TEST( NAME TestProfile COMMAND TestProfile) |