|
1 # Determine the compiler to use for Pascal programs |
|
2 # NOTE, a generator may set CMAKE_Pascal_COMPILER before |
|
3 # loading this file to force a compiler. |
|
4 # use environment variable Pascal first if defined by user, next use |
|
5 # the cmake variable CMAKE_GENERATOR_PASCAL which can be defined by a generator |
|
6 # as a default compiler |
|
7 |
|
8 IF(NOT CMAKE_Pascal_COMPILER) |
|
9 |
|
10 # prefer the environment variable FPC |
|
11 IF($ENV{FPC} MATCHES ".+") |
|
12 GET_FILENAME_COMPONENT(CMAKE_Pascal_COMPILER_INIT $ENV{FPC} PROGRAM PROGRAM_ARGS CMAKE_Pascal_FLAGS_ENV_INIT) |
|
13 IF(CMAKE_Pascal_FLAGS_ENV_INIT) |
|
14 SET(CMAKE_Pascal_COMPILER_ARG1 "${CMAKE_Pascal_FLAGS_ENV_INIT}" CACHE STRING "First argument to Pascal compiler") |
|
15 ENDIF(CMAKE_Pascal_FLAGS_ENV_INIT) |
|
16 IF(EXISTS ${CMAKE_Pascal_COMPILER_INIT}) |
|
17 ELSE(EXISTS ${CMAKE_Pascal_COMPILER_INIT}) |
|
18 MESSAGE(FATAL_ERROR "Could not find compiler set in environment variable FPC:\n$ENV{FPC}.") |
|
19 ENDIF(EXISTS ${CMAKE_Pascal_COMPILER_INIT}) |
|
20 ENDIF($ENV{FPC} MATCHES ".+") |
|
21 |
|
22 # next try prefer the compiler specified by the generator |
|
23 IF(CMAKE_GENERATOR_PASCAL) |
|
24 IF(NOT CMAKE_Pascal_COMPILER_INIT) |
|
25 SET(CMAKE_Pascal_COMPILER_INIT ${CMAKE_GENERATOR_PASCAL}) |
|
26 ENDIF(NOT CMAKE_Pascal_COMPILER_INIT) |
|
27 ENDIF(CMAKE_GENERATOR_PASCAL) |
|
28 |
|
29 # finally list compilers to try |
|
30 IF(CMAKE_Pascal_COMPILER_INIT) |
|
31 SET(CMAKE_Pascal_COMPILER_LIST ${CMAKE_Pascal_COMPILER_INIT}) |
|
32 ELSE(CMAKE_Pascal_COMPILER_INIT) |
|
33 SET(CMAKE_Pascal_COMPILER_LIST fpc ppc386 ppcx64 ppcppc ppcarm) |
|
34 ENDIF(CMAKE_Pascal_COMPILER_INIT) |
|
35 |
|
36 # Find the compiler. |
|
37 FIND_PROGRAM(CMAKE_Pascal_COMPILER NAMES ${CMAKE_Pascal_COMPILER_LIST} DOC "Pascal compiler") |
|
38 IF(CMAKE_Pascal_COMPILER_INIT AND NOT CMAKE_Pascal_COMPILER) |
|
39 SET(CMAKE_Pascal_COMPILER "${CMAKE_Pascal_COMPILER_INIT}" CACHE FILEPATH "Pascal compiler" FORCE) |
|
40 ENDIF(CMAKE_Pascal_COMPILER_INIT AND NOT CMAKE_Pascal_COMPILER) |
|
41 ENDIF(NOT CMAKE_Pascal_COMPILER) |
|
42 MARK_AS_ADVANCED(CMAKE_Pascal_COMPILER) |
|
43 |
|
44 GET_FILENAME_COMPONENT(COMPILER_LOCATION "${CMAKE_Pascal_COMPILER}" PATH) |
|
45 |
|
46 #FIND_PROGRAM(GNAT_EXECUTABLE_BUILDER NAMES gnatmake PATHS ${COMPILER_LOCATION} ) |
|
47 FIND_PROGRAM(CMAKE_AR NAMES ar PATHS ${COMPILER_LOCATION} ) |
|
48 |
|
49 FIND_PROGRAM(CMAKE_RANLIB NAMES ranlib) |
|
50 IF(NOT CMAKE_RANLIB) |
|
51 SET(CMAKE_RANLIB : CACHE INTERNAL "noop for ranlib") |
|
52 ENDIF(NOT CMAKE_RANLIB) |
|
53 MARK_AS_ADVANCED(CMAKE_RANLIB) |
|
54 |
|
55 # configure variables set in this file for fast reload later on |
|
56 #CONFIGURE_FILE(${CMAKE_ROOT}/Modules/CMakePascalCompiler.cmake.in |
|
57 CONFIGURE_FILE(${CMAKE_MODULE_PATH}/CMakePascalCompiler.cmake.in |
|
58 "${CMAKE_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/${CMAKE_VERSION}/CMakePascalCompiler.cmake" |
|
59 IMMEDIATE) |
|
60 MARK_AS_ADVANCED(CMAKE_AR) |
|
61 |
|
62 SET(CMAKE_Pascal_COMPILER_ENV_VAR "FPC") |