mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-02-03 09:44:24 -05:00
First successful build of MAP65 with CMake.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/map65@3854 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
44f4956de2
commit
a46a4d8005
188
CMakeLists.txt
Normal file
188
CMakeLists.txt
Normal file
@ -0,0 +1,188 @@
|
||||
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} C:/wsjt-env/src/map65/palir-02.dll C:/wsjt-env/src/map65/libusb.a C:/wsjt-env/src/map65/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}")
|
16
getsvn.cmake
Normal file
16
getsvn.cmake
Normal file
@ -0,0 +1,16 @@
|
||||
find_package (Subversion)
|
||||
if (Subversion_FOUND AND EXISTS ${PROJECT_SOURCE_DIR}/.svn)
|
||||
# the FindSubversion.cmake module is part of the standard distribution
|
||||
include (FindSubversion)
|
||||
# extract working copy information for SOURCE_DIR into MY_XXX variables
|
||||
Subversion_WC_INFO (${SOURCE_DIR} MY)
|
||||
# write a file with the SVNVERSION define
|
||||
file (WRITE svnversion.h.txt "#define SVNVERSION ${MY_WC_REVISION}\n")
|
||||
else (Subversion_FOUND AND EXISTS ${PROJECT_SOURCE_DIR}/.svn)
|
||||
file (WRITE svnversion.h.txt "#define SVNVERSION local\n")
|
||||
endif (Subversion_FOUND AND EXISTS ${PROJECT_SOURCE_DIR}/.svn)
|
||||
|
||||
# copy the file to the final header only if the version changes
|
||||
# reduces needless rebuilds
|
||||
execute_process (COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
svnversion.h.txt svnversion.h)
|
177
libm65/CMakeLists.txt
Normal file
177
libm65/CMakeLists.txt
Normal file
@ -0,0 +1,177 @@
|
||||
cmake_minimum_required (VERSION 2.8.8)
|
||||
|
||||
project (libm65 C CXX Fortran)
|
||||
|
||||
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)
|
||||
|
||||
set (CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
# Fortran setup
|
||||
|
||||
# FFLAGS depend on the compiler
|
||||
get_filename_component (Fortran_COMPILER_NAME ${CMAKE_Fortran_COMPILER} NAME)
|
||||
|
||||
if (Fortran_COMPILER_NAME MATCHES "gfortran.*")
|
||||
# gfortran
|
||||
set (CMAKE_Fortran_FLAGS_RELEASE "-funroll-all-loops -fno-f2c -O3")
|
||||
set (CMAKE_Fortran_FLAGS_DEBUG "-fno-f2c -O0 -g")
|
||||
elseif (Fortran_COMPILER_NAME MATCHES "ifort.*")
|
||||
# ifort (untested)
|
||||
set (CMAKE_Fortran_FLAGS_RELEASE "-f77rtl -O3")
|
||||
set (CMAKE_Fortran_FLAGS_DEBUG "-f77rtl -O0 -g")
|
||||
elseif (Fortran_COMPILER_NAME MATCHES "g77")
|
||||
# g77
|
||||
set (CMAKE_Fortran_FLAGS_RELEASE "-funroll-all-loops -fno-f2c -O3 -m32")
|
||||
set (CMAKE_Fortran_FLAGS_DEBUG "-fno-f2c -O0 -g -m32")
|
||||
else (Fortran_COMPILER_NAME MATCHES "gfortran.*")
|
||||
message ("CMAKE_Fortran_COMPILER full path: " ${CMAKE_Fortran_COMPILER})
|
||||
message ("Fortran compiler: " ${Fortran_COMPILER_NAME})
|
||||
message ("No optimized Fortran compiler flags are known, we just try -O2...")
|
||||
set (CMAKE_Fortran_FLAGS_RELEASE "-O2")
|
||||
set (CMAKE_Fortran_FLAGS_DEBUG "-O0 -g")
|
||||
endif (Fortran_COMPILER_NAME MATCHES "gfortran.*")
|
||||
|
||||
# C++ setup
|
||||
|
||||
if (UNIX)
|
||||
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
|
||||
endif (UNIX)
|
||||
|
||||
# setup and test Fortran C/C++ interaction
|
||||
|
||||
include (FortranCInterface)
|
||||
FortranCInterface_VERIFY (CXX QUIET)
|
||||
FortranCInterface_HEADER (FC.h MACRO_NAMESPACE "FC_" SYMBOL_NAMESPACE "FC_"
|
||||
SYMBOLS )
|
||||
|
||||
|
||||
set (FSRCS
|
||||
astro0.f90
|
||||
astrosub.f90
|
||||
ccf65.f90
|
||||
cgen65.f90
|
||||
decode0.f90
|
||||
decode1a.f90
|
||||
deep65.f90
|
||||
display.f90
|
||||
dpol.f90
|
||||
four2a.f90
|
||||
ftninit.f90
|
||||
ftnquit.f90
|
||||
gen65.f90
|
||||
getdphi.f90
|
||||
iqcal.f90
|
||||
iqfix.f90
|
||||
jt65code.f90
|
||||
map65a.f90
|
||||
noisegen.f90
|
||||
recvpkt.f90
|
||||
rfile3a.f90
|
||||
s3avg.f90
|
||||
sec_midn.f90
|
||||
sleep_msec.f90
|
||||
symspec.f90
|
||||
timer.f90
|
||||
timf2.f90
|
||||
tm2.f90
|
||||
zplot.f90
|
||||
|
||||
afc65b.f
|
||||
astro.f
|
||||
ccf2.f
|
||||
chkhist.f
|
||||
chkmsg.f
|
||||
coord.f
|
||||
dcoord.f
|
||||
decode65b.f
|
||||
deg2grid.f
|
||||
demod64a.f
|
||||
dot.f
|
||||
encode65.f
|
||||
extract.F
|
||||
f77_wisdom.f
|
||||
fchisq.f
|
||||
fil6521.f
|
||||
filbig.f
|
||||
geocentric.f
|
||||
getpfx1.f
|
||||
getpfx2.f
|
||||
graycode.f
|
||||
grid2deg.f
|
||||
grid2k.f
|
||||
indexx.f
|
||||
interleave63.f
|
||||
k2grid.f
|
||||
moon2.f
|
||||
moondop.f
|
||||
nchar.f
|
||||
packcall.f
|
||||
packdxcc.f
|
||||
packgrid.f
|
||||
packmsg.f
|
||||
packtext.f
|
||||
pctile.f
|
||||
pfxdump.f
|
||||
set.f
|
||||
setup65.f
|
||||
sort.f
|
||||
ssort.f
|
||||
sun.f
|
||||
toxyz.f
|
||||
trimlist.f
|
||||
twkfreq.f
|
||||
unpackcall.f
|
||||
unpackgrid.f
|
||||
unpackmsg.f
|
||||
unpacktext.f
|
||||
)
|
||||
|
||||
set (CSRCS
|
||||
cutil.c
|
||||
decode_rs.c
|
||||
encode_rs.c
|
||||
gran.c
|
||||
igray.c
|
||||
init_rs.c
|
||||
tmoonsub.c
|
||||
wrapkarn.c
|
||||
)
|
||||
|
||||
if (WIN32)
|
||||
set (CSRCS ${CSRCS} ptt.c)
|
||||
else (set (CSRCS ${CSRCS} ptt_unix.c))
|
||||
endif (WIN32)
|
||||
|
||||
set (CXXSRCS
|
||||
ipcomm.cpp
|
||||
)
|
||||
|
||||
add_definitions (-DBIGSYM=1)
|
||||
set_source_files_properties (sec_midn.f90 PROPERTIES COMPILE_FLAGS -fno-second-underscore)
|
||||
|
||||
|
||||
#
|
||||
# build our targets
|
||||
#
|
||||
add_library (m65impl STATIC ${FSRCS} ${CSRCS} ${CXXSRCS})
|
||||
qt5_use_modules (m65impl Core)
|
||||
|
||||
add_executable (m65 m65.f90 m65a.f90)
|
||||
target_link_libraries (m65 m65impl ${fftw3f_LIBRARIES})
|
||||
add_dependencies (m65 fftw3f)
|
||||
qt5_use_modules (m65 Core)
|
||||
|
||||
install (
|
||||
TARGETS m65
|
||||
RUNTIME DESTINATION bin
|
||||
LIBRARY DESTINATION lib
|
||||
)
|
@ -27,10 +27,12 @@
|
||||
// long tv_usec; /* microseconds */
|
||||
//};
|
||||
|
||||
/*
|
||||
struct timezone {
|
||||
int tz_minuteswest; /* minutes W of Greenwich */
|
||||
int tz_dsttime; /* type of dst correction */
|
||||
int tz_minuteswest; // minutes W of Greenwich
|
||||
int tz_dsttime; // type of dst correction
|
||||
};
|
||||
*/
|
||||
|
||||
__inline int gettimeofday(struct timeval *tv, struct timezone *tz)
|
||||
{
|
||||
|
4
map65_config.h.in
Normal file
4
map65_config.h.in
Normal file
@ -0,0 +1,4 @@
|
||||
#include "svnversion.h"
|
||||
|
||||
#define MAP65_VERSION_MAJOR @MAP65_VERSION_MAJOR@
|
||||
#define MAP65_VERSION_MINOR @MAP65_VERSION_MINOR@
|
BIN
palir-02.dll
Normal file
BIN
palir-02.dll
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user