mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-02-03 09:44:24 -05:00
Adjust CMake script for OpenMP on Mac
The native Mac C/C++ compilers (Clang) do not support OpenMP so CMake by default disables OpenMP for the project since it requires all project compilers to support it. This means that we have to hack the build script on Mac to compile the Fortran sources with OpenMP turned on and manually link in the required OpenMP run time support to the executables. This hack presumes that the Fortran compiler on Mac is gfortran. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4947 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
3fdde76420
commit
52e2beb320
@ -710,16 +710,24 @@ endif (WIN32)
|
||||
#
|
||||
|
||||
# build a library of package functionality (without and optionally with OpenMP support)
|
||||
add_library (wsjt STATIC ${wsjt_CSRCS} ${wsjt_CXXSRCS} ${wsjt_FSRCS})
|
||||
if (${OPENMP_FOUND})
|
||||
add_library (wsjt_omp STATIC ${wsjt_CSRCS} ${wsjt_CXXSRCS} ${wsjt_FSRCS})
|
||||
file (MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/fortran_modules_omp)
|
||||
set_target_properties (wsjt_omp
|
||||
add_library (wsjt_cxx STATIC ${wsjt_CSRCS} ${wsjt_CXXSRCS})
|
||||
add_library (wsjt_fort STATIC ${wsjt_FSRCS})
|
||||
if (${OPENMP_FOUND} OR APPLE)
|
||||
add_library (wsjt_fort_omp STATIC ${wsjt_FSRCS})
|
||||
set_target_properties (wsjt_fort_omp
|
||||
PROPERTIES
|
||||
COMPILE_FLAGS "${OpenMP_C_FLAGS}"
|
||||
Fortran_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/fortran_modules_omp
|
||||
)
|
||||
endif (${OPENMP_FOUND})
|
||||
file (MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/fortran_modules_omp)
|
||||
if (APPLE)
|
||||
# nasty hack to use OpenMP only on Fortran files - assumes gfortran being used
|
||||
set_target_properties (wsjt_fort_omp
|
||||
PROPERTIES
|
||||
COMPILE_FLAGS "-fopenmp"
|
||||
)
|
||||
endif (APPLE)
|
||||
endif (${OPENMP_FOUND} OR APPLE)
|
||||
|
||||
# build a library of package Qt functionality
|
||||
add_library (wsjt_qt STATIC ${wsjt_qt_CXXSRCS} ${wsjt_qt_GENUISRCS} ${GENAXSRCS})
|
||||
@ -729,29 +737,39 @@ if (WIN32)
|
||||
endif (WIN32)
|
||||
|
||||
add_executable (jt9sim lib/jt9sim.f90 wsjtx.rc)
|
||||
target_link_libraries (jt9sim wsjt)
|
||||
target_link_libraries (jt9sim wsjt_fort wsjt_cxx)
|
||||
|
||||
add_executable (jt65code lib/jt65code.f90 wsjtx.rc)
|
||||
target_link_libraries (jt65code wsjt)
|
||||
target_link_libraries (jt65code wsjt_fort wsjt_cxx)
|
||||
|
||||
add_executable (jt9code lib/jt9code.f90 wsjtx.rc)
|
||||
target_link_libraries (jt9code wsjt)
|
||||
target_link_libraries (jt9code wsjt_fort wsjt_cxx)
|
||||
|
||||
add_executable (jt9 lib/jt9.f90 lib/jt9a.f90 lib/jt9b.f90 lib/jt9c.f90 ${jt9_CXXSRCS} wsjtx.rc)
|
||||
target_link_libraries (jt9 wsjt ${FFTW3_LIBRARIES})
|
||||
target_link_libraries (jt9 wsjt_fort wsjt_cxx ${FFTW3_LIBRARIES})
|
||||
qt5_use_modules (jt9 Core)
|
||||
|
||||
if (${OPENMP_FOUND})
|
||||
if (${OPENMP_FOUND} OR APPLE)
|
||||
add_executable (jt9_omp lib/jt9.f90 lib/jt9a.f90 lib/jt9b.f90 lib/jt9c.f90 ${jt9_CXXSRCS} wsjtx.rc)
|
||||
if (APPLE)
|
||||
set_target_properties (jt9_omp
|
||||
PROPERTIES
|
||||
COMPILE_FLAGS "-fopenmp"
|
||||
LINK_LIBRARIES "gomp;gcc_s.1"
|
||||
)
|
||||
else (APPLE)
|
||||
set_target_properties (jt9_omp
|
||||
PROPERTIES
|
||||
COMPILE_FLAGS "${OpenMP_C_FLAGS}"
|
||||
)
|
||||
endif (APPLE)
|
||||
set_target_properties (jt9_omp
|
||||
PROPERTIES
|
||||
COMPILE_FLAGS "${OpenMP_C_FLAGS}"
|
||||
Fortran_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/fortran_modules_omp
|
||||
LINK_FLAGS "${OpenMP_C_FLAGS} ${_extra_omp_link_flags}"
|
||||
)
|
||||
target_link_libraries (jt9_omp wsjt_omp ${FFTW3_LIBRARIES})
|
||||
target_link_libraries (jt9_omp wsjt_fort_omp wsjt_cxx ${FFTW3_LIBRARIES})
|
||||
qt5_use_modules (jt9_omp Core)
|
||||
endif (${OPENMP_FOUND})
|
||||
endif (${OPENMP_FOUND} OR APPLE)
|
||||
|
||||
# build configuration dialog and transceiver interface test application
|
||||
#add_executable (ConfigTest ${ConfigTest_CXXSRCS} ${ConfigTest_GENUISRCS} wsjtx.rc)
|
||||
@ -812,7 +830,7 @@ set_target_properties (wsjtx PROPERTIES
|
||||
MACOSX_BUNDLE_GUI_IDENTIFIER "org.k1jt.wsjtx"
|
||||
)
|
||||
|
||||
target_link_libraries (wsjtx wsjt wsjt_qt ${hamlib_LIBRARIES} ${FFTW3_LIBRARIES})
|
||||
target_link_libraries (wsjtx wsjt_fort wsjt_cxx wsjt_qt ${hamlib_LIBRARIES} ${FFTW3_LIBRARIES})
|
||||
|
||||
#
|
||||
# installation
|
||||
@ -827,12 +845,12 @@ install (TARGETS jt9 jt65code jt9code
|
||||
BUNDLE DESTINATION ${WSJT_BIN_DESTINATION} COMPONENT runtime
|
||||
)
|
||||
|
||||
if (${OPENMP_FOUND})
|
||||
if (${OPENMP_FOUND} OR APPLE)
|
||||
install (TARGETS jt9_omp
|
||||
RUNTIME DESTINATION ${WSJT_BIN_DESTINATION} COMPONENT runtime
|
||||
BUNDLE DESTINATION ${WSJT_BIN_DESTINATION} COMPONENT runtime
|
||||
)
|
||||
endif (${OPENMP_FOUND})
|
||||
endif (${OPENMP_FOUND} OR APPLE)
|
||||
|
||||
if (WSJT_INCLUDE_KVASD)
|
||||
install (PROGRAMS
|
||||
|
Loading…
Reference in New Issue
Block a user