1#############################################################################################
2### ${CTEST_SCRIPT_ARG} is of the form OPTION=VALUE                                       ###
3### BUILD_GENERATOR required [Unix, VS2017, VS201764, VS2015, VS201564, VS2013, VS201364] ###
4### ctest -S HDFconfig.cmake,BUILD_GENERATOR=VS201764 -C Release -VV -O hdf.log           ###
5#############################################################################################
6
7cmake_minimum_required (VERSION 3.10)
8############################################################################
9# Usage:
10#     ctest -S HDFconfig.cmake,OPTION=VALUE -C Release -VV -O test.log
11# where valid options for OPTION are:
12#     BUILD_GENERATOR - The cmake build generator:
13#            Unix      * Unix Makefiles
14#            VS2017    * Visual Studio 15 2017
15#            VS201764  * Visual Studio 15 2017 Win64
16#            VS2015    * Visual Studio 14 2015
17#            VS201564  * Visual Studio 14 2015 Win64
18#            VS2013    * Visual Studio 12 2013
19#            VS201364  * Visual Studio 12 2013 Win64
20#
21#     INSTALLDIR  -  root folder where hdf is installed
22#                 -  windowsdefault: C:/Program Files/HDF_Group/HDF/4.2.15
23#                 -  linux default:  ./HDF_Group/HDF/4.2.15
24#     CTEST_CONFIGURATION_TYPE  - Release, Debug, etc - default: Release
25#     CTEST_SOURCE_NAME  -  source folder - default: hdf4
26#     STATIC_ONLY  -  Build/use static libraries
27#     FORTRAN_LIBRARIES -  Build/use fortran libraries
28#     NO_MAC_FORTRAN  - Yes to be SHARED on a Mac
29##############################################################################
30
31set (CTEST_SOURCE_VERSION "4.2.15")
32set (CTEST_SOURCE_VERSEXT "")
33
34##############################################################################
35# handle input parameters to script.
36#BUILD_GENERATOR - which CMake generator to use, required
37#INSTALLDIR - HDF-4.2.x root folder
38#CTEST_CONFIGURATION_TYPE - Release, Debug, RelWithDebInfo
39#CTEST_SOURCE_NAME - name of source folder; HDF-4.2.x
40#STATIC_ONLY - Default is YES
41#FORTRAN_LIBRARIES - Default is NO
42#NO_MAC_FORTRAN - set to TRUE to allow shared libs on a Mac
43if (DEFINED CTEST_SCRIPT_ARG)
44    # transform ctest script arguments of the form
45    # script.ctest,var1=value1,var2=value2
46    # to variables with the respective names set to the respective values
47    string (REPLACE "," ";" script_args "${CTEST_SCRIPT_ARG}")
48    foreach (current_var ${script_args})
49        if ("${current_var}" MATCHES "^([^=]+)=(.+)$")
50            set ("${CMAKE_MATCH_1}" "${CMAKE_MATCH_2}")
51        endif ()
52    endforeach ()
53endif ()
54
55#HPC - run alternate configurations for HPC machines
56if (DEFINED HPC)
57  set (BUILD_GENERATOR "Unix")
58endif ()
59
60# build generator must be defined
61if (NOT DEFINED BUILD_GENERATOR)
62  message (FATAL_ERROR "BUILD_GENERATOR must be defined - Unix, VS2017, or VS201764, VS2015, VS201564, VS2013, VS201364")
63endif ()
64
65###################################################################
66### Following Line is one of [Release, RelWithDebInfo, Debug] #####
67###        (default use command line -C value)
68set (CTEST_CONFIGURATION_TYPE "$ENV{CMAKE_CONFIG_TYPE}")
69if (NOT DEFINED CTEST_CONFIGURATION_TYPE)
70  set (CTEST_CONFIGURATION_TYPE "Release")
71endif ()
72set (ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DCTEST_CONFIGURATION_TYPE:STRING=${CTEST_CONFIGURATION_TYPE}")
73##################################################################
74
75if (NOT DEFINED INSTALLDIR)
76  if (WIN32)
77    set (INSTALLDIR "C:/Program Files/HDF_Group/HDF/${CTEST_SOURCE_VERSION}")
78  else ()
79    set (INSTALLDIR "${CTEST_SCRIPT_DIRECTORY}/HDF_Group/HDF/${CTEST_SOURCE_VERSION}")
80  endif ()
81endif ()
82if (NOT DEFINED CTEST_CONFIGURATION_TYPE)
83  set (CTEST_CONFIGURATION_TYPE "Release")
84endif ()
85if (NOT DEFINED CTEST_SOURCE_NAME)
86  set (CTEST_SOURCE_NAME "hdf-${CTEST_SOURCE_VERSION}${CTEST_SOURCE_VERSEXT}")
87endif ()
88if (NOT DEFINED STATIC_ONLY)
89  set (STATICONLYLIBRARIES "YES")
90else ()
91  set (STATICONLYLIBRARIES "NO")
92endif ()
93if (NOT DEFINED FORTRAN_LIBRARIES)
94  set (FORTRANLIBRARIES "NO")
95else ()
96  set(FORTRANLIBRARIES "YES")
97endif ()
98
99set (CTEST_BINARY_NAME "build")
100set (CTEST_DASHBOARD_ROOT "${CTEST_SCRIPT_DIRECTORY}")
101if (WIN32 AND NOT MINGW)
102  set (CTEST_SOURCE_DIRECTORY "${CTEST_DASHBOARD_ROOT}\\${CTEST_SOURCE_NAME}")
103  set (CTEST_BINARY_DIRECTORY "${CTEST_DASHBOARD_ROOT}\\${CTEST_BINARY_NAME}")
104else ()
105  set (CTEST_SOURCE_DIRECTORY "${CTEST_DASHBOARD_ROOT}/${CTEST_SOURCE_NAME}")
106  set (CTEST_BINARY_DIRECTORY "${CTEST_DASHBOARD_ROOT}/${CTEST_BINARY_NAME}")
107endif ()
108
109###################################################################
110#########       Following describes compiler           ############
111if (WIN32 AND NOT MINGW)
112  set (SITE_OS_NAME "Windows")
113  set (SITE_OS_VERSION "WIN7")
114  if (BUILD_GENERATOR STREQUAL "VS201764")
115    set (CTEST_CMAKE_GENERATOR "Visual Studio 15 2017 Win64")
116    set (SITE_OS_BITS "64")
117    set (SITE_COMPILER_NAME "vs2017")
118    set (SITE_COMPILER_VERSION "15")
119  elseif (BUILD_GENERATOR STREQUAL "VS2017")
120    set (CTEST_CMAKE_GENERATOR "Visual Studio 15 2017")
121    set (SITE_OS_BITS "32")
122    set (SITE_COMPILER_NAME "vs2017")
123    set (SITE_COMPILER_VERSION "15")
124  elseif (BUILD_GENERATOR STREQUAL "VS201564")
125    set (CTEST_CMAKE_GENERATOR "Visual Studio 14 2015 Win64")
126    set (SITE_OS_BITS "64")
127    set (SITE_COMPILER_NAME "vs2015")
128    set (SITE_COMPILER_VERSION "14")
129  elseif (BUILD_GENERATOR STREQUAL "VS2015")
130    set (CTEST_CMAKE_GENERATOR "Visual Studio 14 2015")
131    set (SITE_OS_BITS "32")
132    set (SITE_COMPILER_NAME "vs2015")
133    set (SITE_COMPILER_VERSION "14")
134  elseif (BUILD_GENERATOR STREQUAL "VS201364")
135    set (CTEST_CMAKE_GENERATOR "Visual Studio 12 2013 Win64")
136    set (SITE_OS_BITS "64")
137    set (SITE_COMPILER_NAME "vs2013")
138    set (SITE_COMPILER_VERSION "12")
139  elseif (BUILD_GENERATOR STREQUAL "VS2013")
140    set (CTEST_CMAKE_GENERATOR "Visual Studio 12 2013")
141    set (SITE_OS_BITS "32")
142    set (SITE_COMPILER_NAME "vs2013")
143    set (SITE_COMPILER_VERSION "12")
144  elseif (BUILD_GENERATOR STREQUAL "VS201264")
145    set (CTEST_CMAKE_GENERATOR "Visual Studio 11 2012 Win64")
146    set (SITE_OS_BITS "64")
147    set (SITE_COMPILER_NAME "vs2012")
148    set (SITE_COMPILER_VERSION "11")
149  elseif (BUILD_GENERATOR STREQUAL "VS2012")
150    set (CTEST_CMAKE_GENERATOR "Visual Studio 11 2012")
151    set (SITE_OS_BITS "32")
152    set (SITE_COMPILER_NAME "vs2012")
153    set (SITE_COMPILER_VERSION "11")
154  else ()
155    message (FATAL_ERROR "Invalid BUILD_GENERATOR must be - Unix, VS2017, or VS201764, VS2015, VS201564, VS2013, VS201364")
156  endif ()
157##  Set the following to unique id your computer  ##
158  set (CTEST_SITE "WIN7${BUILD_GENERATOR}.XXXX")
159else ()
160  set (CTEST_CMAKE_GENERATOR "Unix Makefiles")
161##  Set the following to unique id your computer  ##
162  if (APPLE)
163    set (CTEST_SITE "MAC.XXXX")
164  else ()
165    set (CTEST_SITE "LINUX.XXXX")
166  endif ()
167  if (APPLE)
168    execute_process (COMMAND xcrun --find cc OUTPUT_VARIABLE XCODE_CC OUTPUT_STRIP_TRAILING_WHITESPACE)
169    execute_process (COMMAND xcrun --find c++ OUTPUT_VARIABLE XCODE_CXX OUTPUT_STRIP_TRAILING_WHITESPACE)
170    set (ENV{CC} "${XCODE_CC}")
171    set (ENV{CXX} "${XCODE_CXX}")
172    set (CTEST_USE_LAUNCHERS        1)
173  endif ()
174endif ()
175###################################################################
176
177if (WIN32 AND NOT MINGW)
178  include (${CTEST_SCRIPT_DIRECTORY}\\HDF4options.cmake)
179  include (${CTEST_SCRIPT_DIRECTORY}\\CTestScript.cmake)
180else ()
181  include (${CTEST_SCRIPT_DIRECTORY}/HDF4options.cmake)
182  include (${CTEST_SCRIPT_DIRECTORY}/CTestScript.cmake)
183endif ()
184