WSJT-X/CMakeLists.txt
Joe Taylor 681f03bc7f Fix hard-coded path to libraries included in source directory.
Fix the gfortran "read/write after EOF" problem.


git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/map65@3861 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2014-03-11 13:45:27 +00:00

189 lines
4.2 KiB
CMake

cmake_minimum_required (VERSION 2.8.9)
project (map65 C CXX Fortran)
set (MAP65_VERSION_MAJOR 1)
set (MAP65_VERSION_MINOR 3)
if (POLICY CMP0020)
cmake_policy (SET CMP0020 NEW) # link to Qt winmain on Windows
endif (POLICY CMP0020)
# make sure that the default is a RELEASE
if (NOT CMAKE_BUILD_TYPE)
set (CMAKE_BUILD_TYPE RELEASE CACHE STRING
"Choose the type of build, options are: None Debug Release."
FORCE)
endif (NOT CMAKE_BUILD_TYPE)
# C++ setup
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
set (CXXSRCS
about.cpp
astro.cpp
bandmap.cpp
devsetup.cpp
displaytext.cpp
getdev.cpp
getfile.cpp
main.cpp
mainwindow.cpp
messages.cpp
meterwidget.cpp
plotter.cpp
set570.cpp
signalmeter.cpp
soundin.cpp
soundout.cpp
txtune.cpp
widegraph.cpp
)
if (WIN32)
set (CXXSRCS ${CXXSRCS} killbyname.cpp)
endif (WIN32)
set (CSRCS
paInputDevice.c
pa_get_device_info.c
)
set_property (SOURCE ${CXXSRCS} ${CSRCS} APPEND PROPERTY COMPILE_FLAGS "-include map65_config.h")
set (UISRCS
about.ui
astro.ui
bandmap.ui
devsetup.ui
mainwindow.ui
messages.ui
txtune.ui
widegraph.ui
)
# sort out pre-requisites
# libfftw3 setup
find_path (fftw3f_INCLUDES fftw3.f)
find_library (fftw3f_LIBRARIES NAMES fftw3f fftw3f-3)
include_directories (${fftw3f_INCLUDES})
if (WIN32)
find_library (usb_RUNTIME NAMES usb0 PATH_SUFFIXES bin)
endif (WIN32)
# Qt5 setup
# Widgets finds its own dependencies.
find_package (Qt5Widgets REQUIRED)
find_package (Qt5Multimedia REQUIRED)
# Tell CMake to run moc when necessary
set (CMAKE_AUTOMOC ON)
# don't use Qt "keywords" signal, slot, emit in generated files to
# avoid compatability issue with other libraries
#ADD_DEFINITIONS (-DQT_NO_KEYWORDS)
# As moc files are generated in the binary dir, tell CMake to always
# look for includes there:
set (CMAKE_INCLUDE_CURRENT_DIR ON)
# project definitions
add_definitions (-DQT5)
if (CMAKE_HOST_UNIX)
add_definitions (-DUNIX)
elseif (CMAKE_HOST_WIN32)
add_definitions (-DWIN32)
endif ()
set_property (DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELEASE QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT)
# build the subdirectories
add_subdirectory (libm65)
# fetch kvasd
if (APPLE)
set (kvasd_NAME http://svn.berlios.de/wsvn/wsjt/trunk/KVASD_gfortran_Mac${CMAKE_EXECUTABLE_SUFFIX})
else ()
set (kvasd_NAME http://www.physics.princeton.edu/pulsar/K1JT/kvasd${CMAKE_EXECUTABLE_SUFFIX})
endif ()
file (
DOWNLOAD ${kvasd_NAME} contrib/kvasd${CMAKE_EXECUTABLE_SUFFIX}
STATUS kvasd_STATUS
LOG kvasd_LOG
SHOW_PROGRESS
)
message (${kvasd_LOG})
list (GET kvasd_STATUS 0 kvasd_RC)
if (!kvasd_RC)
message (FATAL_ERROR "${kvasd_STATUS}")
endif (!kvasd_RC)
add_custom_target (kvasd DEPENDS contrib/kvasd${CMAKE_EXECUTABLE_SUFFIX})
# UI generation
qt5_wrap_ui (GENUISRCS ${UISRCS})
add_executable (map65 ${CXXSRCS} ${CSRCS} ${GENUISRCS} map65.rc)
target_link_libraries (map65 m65impl ${fftw3f_LIBRARIES} ${CMAKE_CURRENT_SOURCE_DIR}/palir-02.dll ${CMAKE_CURRENT_SOURCE_DIR}/libusb.a ${CMAKE_CURRENT_SOURCE_DIR}/libwsock32.a)
if (WIN32)
target_link_libraries (map65)
endif (WIN32)
add_dependencies (map65 kvasd)
qt5_use_modules (map65 Widgets Multimedia OpenGL)
install (
TARGETS map65
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
)
# install (DIRECTORY Palettes DESTINATION bin PATTERN *.pal)
# install (DIRECTORY samples DESTINATION bin/save)
install (FILES
# CALL3.TXT
# prefixes.txt
DESTINATION bin
)
install (
PROGRAMS ${CMAKE_BINARY_DIR}/contrib/kvasd${CMAKE_EXECUTABLE_SUFFIX}
DESTINATION bin
)
if (WIN32)
install (
FILES ${fftw3f_LIBRARIES} ${usb_RUNTIME}
DESTINATION bin COMPONENT Runtime
)
endif (WIN32)
# a custom target that is always built
ADD_CUSTOM_TARGET (revisiontag ALL)
# creates svnversion.h using cmake script
ADD_CUSTOM_COMMAND (TARGET revisiontag COMMAND ${CMAKE_COMMAND}
-DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}
-P ${CMAKE_CURRENT_SOURCE_DIR}/getsvn.cmake)
# explicitly say that the executable depends on custom target
add_dependencies(map65 revisiontag)
# versioning
configure_file (
"${PROJECT_SOURCE_DIR}/map65_config.h.in"
"${PROJECT_BINARY_DIR}/map65_config.h"
)
include_directories ("${PROJECT_BINARY_DIR}")