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) |