mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-17 19:16:16 +00:00
I fixed up the decode and finished the parse for Cochran EMC, Commander and Gemini computers. I suspect that this code may only work with files from certain versions of Cochran Analyst. It works with my own CAN files and with the samples that came with Analyst v4.01v. A seemingly arbitrary offset of 0x4914 is needed to access data. The previous code uses 0x4a14 and 0x4b14. I suspect these are from different version of Analyst. [Dirk Hohndel: whitespace cleanup, add files to subsurface.pro, made sure this compiles without the corresponding patch to libdivecomputer (that isn't upstream, yet), cleaned up the usage of structs, removed a few unused variables] Signed-off-by: John Van Ostrand <john@vanostrand.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
226 lines
6.5 KiB
CMake
226 lines
6.5 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
|
|
cochran.c
|
|
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
|
|
gaspressures.c
|
|
worldmap-save.c
|
|
save-git.c
|
|
save-xml.c
|
|
save-html.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
|
|
divecomputer.cpp
|
|
exif.cpp
|
|
subsurfacesysinfo.cpp
|
|
devicedetails.cpp
|
|
configuredivecomputer.cpp
|
|
configuredivecomputerthreads.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/divelogimportdialog.cpp
|
|
qt-ui/tagwidget.cpp
|
|
qt-ui/groupedlineedit.cpp
|
|
qt-ui/usermanual.cpp
|
|
qt-ui/divelogexportdialog.cpp
|
|
qt-ui/divepicturewidget.cpp
|
|
qt-ui/usersurvey.cpp
|
|
qt-ui/configuredivecomputerdialog.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
|
|
qt-ui/profile/tankitem.cpp
|
|
)
|
|
|
|
#the yearly statistics widget.
|
|
SET(SUBSURFACE_STATISTICS_LIB_SRCS
|
|
qt-ui/statistics/statisticswidget.cpp
|
|
qt-ui/statistics/yearstatistics.cpp
|
|
qt-ui/statistics/statisticsbar.cpp
|
|
qt-ui/statistics/monthstatistics.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_statistics STATIC ${SUBSURFACE_STATISTICS_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_statistics
|
|
subsurface_corelib
|
|
${QT_LIBRARIES}
|
|
${MARBLE_LIBRARIES}
|
|
${SUBSURFACE_LINK_LIBRARIES}
|
|
-ldivecomputer
|
|
-lzip
|
|
)
|
|
|
|
ADD_DEPENDENCIES(subsurface_statistics subsurface_generated_ui)
|
|
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)
|