cmake_modules/CMakePascalInformation.cmake
branchcmake_pascal
changeset 8859 bead90828a94
parent 8846 c156ac6ddc2b
child 8863 9774ad4fe170
equal deleted inserted replaced
8855:879270f627e0 8859:bead90828a94
    31 # Create a set of shared library variable specific to Pascal
    31 # Create a set of shared library variable specific to Pascal
    32 # For 90% of the systems, these are the same flags as the C versions
    32 # For 90% of the systems, these are the same flags as the C versions
    33 # so if these are not set just copy the flags from the c version
    33 # so if these are not set just copy the flags from the c version
    34 
    34 
    35 # No flags supported during linking as a shell script takes care of it
    35 # No flags supported during linking as a shell script takes care of it
    36 IF(NOT CMAKE_SHARED_LIBRARY_CREATE_Pascal_FLAGS)
    36 if(NOT CMAKE_SHARED_LIBRARY_CREATE_Pascal_FLAGS)
    37 #-dynamiclib -Wl,-headerpad_max_install_names for C
    37 #-dynamiclib -Wl,-headerpad_max_install_names for C
    38   SET(CMAKE_SHARED_LIBRARY_CREATE_Pascal_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS})
    38     set(CMAKE_SHARED_LIBRARY_CREATE_Pascal_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS})
    39 ENDIF(NOT CMAKE_SHARED_LIBRARY_CREATE_Pascal_FLAGS)
    39 endif(NOT CMAKE_SHARED_LIBRARY_CREATE_Pascal_FLAGS)
    40 
    40 
    41 if(NOT CMAKE_SHARED_LIBRARY_Pascal_FLAGS)
    41 if(NOT CMAKE_SHARED_LIBRARY_Pascal_FLAGS)
    42     #another similarity, fpc: -fPIC  Same as -Cg
    42     #another similarity, fpc: -fPIC  Same as -Cg
    43     #(maybe required only for x86_64)
    43     #(maybe required only for x86_64)
    44     set(CMAKE_SHARED_LIBRARY_Pascal_FLAGS ${CMAKE_SHARED_LIBRARY_C_FLAGS})
    44     set(CMAKE_SHARED_LIBRARY_Pascal_FLAGS ${CMAKE_SHARED_LIBRARY_C_FLAGS})
    46 
    46 
    47 if(NOT CMAKE_SHARED_LIBRARY_LINK_Pascal_FLAGS)
    47 if(NOT CMAKE_SHARED_LIBRARY_LINK_Pascal_FLAGS)
    48     set(CMAKE_SHARED_LIBRARY_LINK_Pascal_FLAGS ${CMAKE_SHARED_LIBRARY_LINK_C_FLAGS})
    48     set(CMAKE_SHARED_LIBRARY_LINK_Pascal_FLAGS ${CMAKE_SHARED_LIBRARY_LINK_C_FLAGS})
    49 endif(NOT CMAKE_SHARED_LIBRARY_LINK_Pascal_FLAGS)
    49 endif(NOT CMAKE_SHARED_LIBRARY_LINK_Pascal_FLAGS)
    50 
    50 
    51 #IF(NOT CMAKE_SHARED_LIBRARY_RUNTIME_Pascal_FLAG)
    51 #if(NOT CMAKE_SHARED_LIBRARY_RUNTIME_Pascal_FLAG)
    52 #  SET(CMAKE_SHARED_LIBRARY_RUNTIME_Pascal_FLAG ${CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG})
    52 #    set(CMAKE_SHARED_LIBRARY_RUNTIME_Pascal_FLAG ${CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG})
    53 #ENDIF(NOT CMAKE_SHARED_LIBRARY_RUNTIME_Pascal_FLAG)
    53 #endif(NOT CMAKE_SHARED_LIBRARY_RUNTIME_Pascal_FLAG)
    54 
    54 
    55 #IF(NOT CMAKE_SHARED_LIBRARY_RUNTIME_Pascal_FLAG_SEP)
    55 #if(NOT CMAKE_SHARED_LIBRARY_RUNTIME_Pascal_FLAG_SEP)
    56 #  SET(CMAKE_SHARED_LIBRARY_RUNTIME_Pascal_FLAG_SEP ${CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP})
    56 #    set(CMAKE_SHARED_LIBRARY_RUNTIME_Pascal_FLAG_SEP ${CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP})
    57 #ENDIF(NOT CMAKE_SHARED_LIBRARY_RUNTIME_Pascal_FLAG_SEP)
    57 #endif(NOT CMAKE_SHARED_LIBRARY_RUNTIME_Pascal_FLAG_SEP)
    58 
    58 
    59 if(NOT CMAKE_SHARED_LIBRARY_RPATH_LINK_Pascal_FLAG)
    59 if(NOT CMAKE_SHARED_LIBRARY_RPATH_LINK_Pascal_FLAG)
    60     set(CMAKE_SHARED_LIBRARY_RPATH_LINK_Pascal_FLAG ${CMAKE_SHARED_LIBRARY_RPATH_LINK_C_FLAG})
    60     set(CMAKE_SHARED_LIBRARY_RPATH_LINK_Pascal_FLAG ${CMAKE_SHARED_LIBRARY_RPATH_LINK_C_FLAG})
    61 endif(NOT CMAKE_SHARED_LIBRARY_RPATH_LINK_Pascal_FLAG)
    61 endif(NOT CMAKE_SHARED_LIBRARY_RPATH_LINK_Pascal_FLAG)
    62 
    62 
    67     set(CMAKE_SHARED_MODULE_Pascal_FLAGS ${CMAKE_SHARED_LIBRARY_Pascal_FLAGS})
    67     set(CMAKE_SHARED_MODULE_Pascal_FLAGS ${CMAKE_SHARED_LIBRARY_Pascal_FLAGS})
    68     set(CMAKE_SHARED_MODULE_CREATE_Pascal_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_Pascal_FLAGS})
    68     set(CMAKE_SHARED_MODULE_CREATE_Pascal_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_Pascal_FLAGS})
    69 endif(NOT CMAKE_MODULE_EXISTS)
    69 endif(NOT CMAKE_MODULE_EXISTS)
    70 
    70 
    71 # repeat for modules
    71 # repeat for modules
    72 IF(NOT CMAKE_SHARED_MODULE_CREATE_Pascal_FLAGS)
    72 if(NOT CMAKE_SHARED_MODULE_CREATE_Pascal_FLAGS)
    73   SET(CMAKE_SHARED_MODULE_CREATE_Pascal_FLAGS ${CMAKE_SHARED_MODULE_CREATE_C_FLAGS})
    73     set(CMAKE_SHARED_MODULE_CREATE_Pascal_FLAGS ${CMAKE_SHARED_MODULE_CREATE_C_FLAGS})
    74 ENDIF(NOT CMAKE_SHARED_MODULE_CREATE_Pascal_FLAGS)
    74 endif(NOT CMAKE_SHARED_MODULE_CREATE_Pascal_FLAGS)
    75 
    75 
    76 IF(NOT CMAKE_SHARED_MODULE_Pascal_FLAGS)
    76 if(NOT CMAKE_SHARED_MODULE_Pascal_FLAGS)
    77   SET(CMAKE_SHARED_MODULE_Pascal_FLAGS ${CMAKE_SHARED_MODULE_C_FLAGS})
    77     set(CMAKE_SHARED_MODULE_Pascal_FLAGS ${CMAKE_SHARED_MODULE_C_FLAGS})
    78 ENDIF(NOT CMAKE_SHARED_MODULE_Pascal_FLAGS)
    78 endif(NOT CMAKE_SHARED_MODULE_Pascal_FLAGS)
    79 
    79 
    80 IF(NOT CMAKE_SHARED_MODULE_RUNTIME_Pascal_FLAG)
    80 if(NOT CMAKE_SHARED_MODULE_RUNTIME_Pascal_FLAG)
    81   SET(CMAKE_SHARED_MODULE_RUNTIME_Pascal_FLAG ${CMAKE_SHARED_MODULE_RUNTIME_C_FLAG})
    81     set(CMAKE_SHARED_MODULE_RUNTIME_Pascal_FLAG ${CMAKE_SHARED_MODULE_RUNTIME_C_FLAG})
    82 ENDIF(NOT CMAKE_SHARED_MODULE_RUNTIME_Pascal_FLAG)
    82 endif(NOT CMAKE_SHARED_MODULE_RUNTIME_Pascal_FLAG)
    83 
    83 
    84 IF(NOT CMAKE_SHARED_MODULE_RUNTIME_Pascal_FLAG_SEP)
    84 if(NOT CMAKE_SHARED_MODULE_RUNTIME_Pascal_FLAG_SEP)
    85   SET(CMAKE_SHARED_MODULE_RUNTIME_Pascal_FLAG_SEP ${CMAKE_SHARED_MODULE_RUNTIME_C_FLAG_SEP})
    85     set(CMAKE_SHARED_MODULE_RUNTIME_Pascal_FLAG_SEP ${CMAKE_SHARED_MODULE_RUNTIME_C_FLAG_SEP})
    86 ENDIF(NOT CMAKE_SHARED_MODULE_RUNTIME_Pascal_FLAG_SEP)
    86 endif(NOT CMAKE_SHARED_MODULE_RUNTIME_Pascal_FLAG_SEP)
    87 
    87 
    88 if(NOT CMAKE_INCLUDE_FLAG_Pascal)
    88 if(NOT CMAKE_INCLUDE_FLAG_Pascal)
    89     #amazing, fpc: -I<x>  Add <x> to include path
    89     #amazing, fpc: -I<x>  Add <x> to include path
    90     set(CMAKE_INCLUDE_FLAG_Pascal ${CMAKE_INCLUDE_FLAG_C})
    90     set(CMAKE_INCLUDE_FLAG_Pascal ${CMAKE_INCLUDE_FLAG_C})
    91 endif(NOT CMAKE_INCLUDE_FLAG_Pascal)
    91 endif(NOT CMAKE_INCLUDE_FLAG_Pascal)
    94     set(CMAKE_INCLUDE_FLAG_SEP_Pascal ${CMAKE_INCLUDE_FLAG_SEP_C})
    94     set(CMAKE_INCLUDE_FLAG_SEP_Pascal ${CMAKE_INCLUDE_FLAG_SEP_C})
    95 endif(NOT CMAKE_INCLUDE_FLAG_SEP_Pascal)
    95 endif(NOT CMAKE_INCLUDE_FLAG_SEP_Pascal)
    96 
    96 
    97 # Copy C version of this flag which is normally determined in platform file.
    97 # Copy C version of this flag which is normally determined in platform file.
    98 if(NOT CMAKE_SHARED_LIBRARY_SONAME_Pascal_FLAG)
    98 if(NOT CMAKE_SHARED_LIBRARY_SONAME_Pascal_FLAG)
    99   set(CMAKE_SHARED_LIBRARY_SONAME_Pascal_FLAG ${CMAKE_SHARED_LIBRARY_SONAME_C_FLAG})
    99     set(CMAKE_SHARED_LIBRARY_SONAME_Pascal_FLAG ${CMAKE_SHARED_LIBRARY_SONAME_C_FLAG})
   100 endif(NOT CMAKE_SHARED_LIBRARY_SONAME_Pascal_FLAG)
   100 endif(NOT CMAKE_SHARED_LIBRARY_SONAME_Pascal_FLAG)
   101 
   101 
   102 set(CMAKE_VERBOSE_MAKEFILE FALSE CACHE BOOL "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make.  This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo.")
   102 set(CMAKE_VERBOSE_MAKEFILE FALSE CACHE BOOL "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make.  This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo.")
   103 
   103 
   104 set(CMAKE_Pascal_FLAGS "$ENV{FPFLAGS} ${CMAKE_Pascal_FLAGS_INIT}" CACHE STRING "Flags for Pascal compiler.")
   104 set(CMAKE_Pascal_FLAGS "$ENV{FPFLAGS} ${CMAKE_Pascal_FLAGS_INIT}" CACHE STRING "Flags for Pascal compiler.")
   105 
   105 
   106 INCLUDE(CMakeCommonLanguageInclude)
   106 include(CMakeCommonLanguageInclude)
   107 
   107 
   108 # now define the following rule variables
   108 # now define the following rule variables
   109 
   109 
   110 # CMAKE_Pascal_CREATE_SHARED_LIBRARY
   110 # CMAKE_Pascal_CREATE_SHARED_LIBRARY
   111 # CMAKE_Pascal_CREATE_SHARED_MODULE
   111 # CMAKE_Pascal_CREATE_SHARED_MODULE
   144     endif(WIN32)
   144     endif(WIN32)
   145 # other expandable variables here are <CMAKE_Pascal_COMPILER> <CMAKE_SHARED_LIBRARY_Pascal_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_Pascal_FLAGS> <CMAKE_SHARED_LIBRARY_SONAME_Pascal_FLAG> <TARGET_SONAME> <TARGET> <OBJECTS> <LINK_LIBRARIES>
   145 # other expandable variables here are <CMAKE_Pascal_COMPILER> <CMAKE_SHARED_LIBRARY_Pascal_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_Pascal_FLAGS> <CMAKE_SHARED_LIBRARY_SONAME_Pascal_FLAG> <TARGET_SONAME> <TARGET> <OBJECTS> <LINK_LIBRARIES>
   146 endif(NOT CMAKE_Pascal_CREATE_SHARED_LIBRARY)
   146 endif(NOT CMAKE_Pascal_CREATE_SHARED_LIBRARY)
   147 
   147 
   148 # create an Pascal shared module just copy the shared library rule
   148 # create an Pascal shared module just copy the shared library rule
   149 IF(NOT CMAKE_Pascal_CREATE_SHARED_MODULE)
   149 if(NOT CMAKE_Pascal_CREATE_SHARED_MODULE)
   150   SET(CMAKE_Pascal_CREATE_SHARED_MODULE ${CMAKE_Pascal_CREATE_SHARED_LIBRARY})
   150   set(CMAKE_Pascal_CREATE_SHARED_MODULE ${CMAKE_Pascal_CREATE_SHARED_LIBRARY})
   151 ENDIF(NOT CMAKE_Pascal_CREATE_SHARED_MODULE)
   151 endif(NOT CMAKE_Pascal_CREATE_SHARED_MODULE)
   152 
   152 
   153 # create an Pascal static library (unsupported)
   153 # create an Pascal static library (unsupported)
   154 IF(NOT CMAKE_Pascal_CREATE_STATIC_LIBRARY)
   154 if(NOT CMAKE_Pascal_CREATE_STATIC_LIBRARY)
   155   SET(CMAKE_Pascal_CREATE_STATIC_LIBRARY
   155   set(CMAKE_Pascal_CREATE_STATIC_LIBRARY
   156       "echo STATIC LIBRARIES ARE NOT SUPPORTED" "exit")
   156       "echo STATIC LIBRARIES ARE NOT SUPPORTED" "exit")
   157 ENDIF(NOT CMAKE_Pascal_CREATE_STATIC_LIBRARY)
   157 endif(NOT CMAKE_Pascal_CREATE_STATIC_LIBRARY)
   158 
   158 
   159 # compile a Pascal file into an object file
   159 # compile a Pascal file into an object file
   160 if(NOT CMAKE_Pascal_COMPILE_OBJECT)
   160 if(NOT CMAKE_Pascal_COMPILE_OBJECT)
   161     if(UNIX)
   161     if(UNIX)
   162         #when you have multiple ld installation make sure you get the one bundled with the system C compiler
   162         #when you have multiple ld installation make sure you get the one bundled with the system C compiler
   190 endif(NOT CMAKE_Pascal_LINK_EXECUTABLE)
   190 endif(NOT CMAKE_Pascal_LINK_EXECUTABLE)
   191 
   191 
   192 if(CMAKE_Pascal_STANDARD_LIBRARIES_INIT)
   192 if(CMAKE_Pascal_STANDARD_LIBRARIES_INIT)
   193     set(CMAKE_Pascal_STANDARD_LIBRARIES "${CMAKE_Pascal_STANDARD_LIBRARIES_INIT}"
   193     set(CMAKE_Pascal_STANDARD_LIBRARIES "${CMAKE_Pascal_STANDARD_LIBRARIES_INIT}"
   194     CACHE STRING "Libraries linked by default (usually handled internally).")
   194     CACHE STRING "Libraries linked by default (usually handled internally).")
   195     MARK_AS_ADVANCED(CMAKE_Pascal_STANDARD_LIBRARIES)
   195     mark_as_advanced(CMAKE_Pascal_STANDARD_LIBRARIES)
   196 endif(CMAKE_Pascal_STANDARD_LIBRARIES_INIT)
   196 endif(CMAKE_Pascal_STANDARD_LIBRARIES_INIT)
   197 
   197 
   198 if(NOT CMAKE_NOT_USING_CONFIG_FLAGS)
   198 if(NOT CMAKE_NOT_USING_CONFIG_FLAGS)
   199   SET (CMAKE_Pascal_FLAGS_DEBUG "${CMAKE_Pascal_FLAGS_DEBUG_INIT}" CACHE STRING
   199     set(CMAKE_Pascal_FLAGS_DEBUG "${CMAKE_Pascal_FLAGS_DEBUG_INIT}" CACHE STRING
   200      "Flags used by the compiler during debug builds.")
   200         "Flags used by the compiler during debug builds.")
   201   SET (CMAKE_Pascal_FLAGS_MINSIZEREL "${CMAKE_Pascal_FLAGS_MINSIZEREL_INIT}" CACHE STRING
   201     set(CMAKE_Pascal_FLAGS_MINSIZEREL "${CMAKE_Pascal_FLAGS_MINSIZEREL_INIT}" CACHE STRING
   202      "Flags used by the compiler during release minsize builds.")
   202         "Flags used by the compiler during release minsize builds.")
   203   SET (CMAKE_Pascal_FLAGS_RELEASE "${CMAKE_Pascal_FLAGS_RELEASE_INIT}" CACHE STRING
   203     set(CMAKE_Pascal_FLAGS_RELEASE "${CMAKE_Pascal_FLAGS_RELEASE_INIT}" CACHE STRING
   204      "Flags used by the compiler during release builds (/MD /Ob1 /Oi /Ot /Oy /Gs will produce slightly less optimized but smaller files).")
   204         "Flags used by the compiler during release builds (/MD /Ob1 /Oi /Ot /Oy /Gs will produce slightly less optimized but smaller files).")
   205   SET (CMAKE_Pascal_FLAGS_RELWITHDEBINFO "${CMAKE_Pascal_FLAGS_RELWITHDEBINFO_INIT}" CACHE STRING
   205     set(CMAKE_Pascal_FLAGS_RELWITHDEBINFO "${CMAKE_Pascal_FLAGS_RELWITHDEBINFO_INIT}" CACHE STRING
   206      "Flags used by the compiler during Release with Debug Info builds.")
   206         "Flags used by the compiler during Release with Debug Info builds.")
   207 endif(NOT CMAKE_NOT_USING_CONFIG_FLAGS)
   207 endif(NOT CMAKE_NOT_USING_CONFIG_FLAGS)
   208 
   208 
   209 mark_as_advanced(CMAKE_Pascal_FLAGS CMAKE_Pascal_FLAGS_DEBUG CMAKE_Pascal_FLAGS_MINSIZEREL
   209 mark_as_advanced(CMAKE_Pascal_FLAGS CMAKE_Pascal_FLAGS_DEBUG CMAKE_Pascal_FLAGS_MINSIZEREL
   210                  CMAKE_Pascal_FLAGS_RELEASE CMAKE_Pascal_FLAGS_RELWITHDEBINFO)
   210                  CMAKE_Pascal_FLAGS_RELEASE CMAKE_Pascal_FLAGS_RELWITHDEBINFO)
   211 set(CMAKE_Pascal_INFORMATION_LOADED 1)
   211 set(CMAKE_Pascal_INFORMATION_LOADED 1)