1 include(GNUInstallDirs) 2 3 4 # FIXME(arunprasadr): Why do we need this? 5 set(WK_PLATFORM_JAVA 1) 6 set(WebCore_OUTPUT_NAME "jfxwebkit") 7 # set(PROJECT_VERSION_MAJOR 2) #//XXX: change VERSION? 8 # set(PROJECT_VERSION_MINOR 9) 9 # set(PROJECT_VERSION_MICRO 4) 10 # set(PROJECT_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_MICRO}) 11 set(WEBKITJAVA_API_VERSION 4.0) 12 13 set(ICU_UNICODE TRUE) 14 SET_AND_EXPOSE_TO_BUILD(USE_IMAGEIO TRUE) 15 SET_AND_EXPOSE_TO_BUILD(USE_TEXTURE_MAPPER TRUE) 16 if (ICU_UNICODE) 17 SET_AND_EXPOSE_TO_BUILD(USE_ICU_UNICODE TRUE) 18 else () 19 SET_AND_EXPOSE_TO_BUILD(USE_JAVA_UNICODE TRUE) 20 endif () 21 22 # These are shared variables, but we special case their definition so that we can use the 23 # CMAKE_INSTALL_* variables that are populated by the GNUInstallDirs macro. 24 set(LIB_INSTALL_DIR "${CMAKE_INSTALL_FULL_LIBDIR}" CACHE PATH "Absolute path to library installation directory") 25 set(EXEC_INSTALL_DIR "${CMAKE_INSTALL_FULL_BINDIR}" CACHE PATH "Absolute path to executable installation directory") 26 27 file(TO_CMAKE_PATH $ENV{WEBKIT_OUTPUTDIR}/import/include IMPORT_INCLUDE_DIR) 28 file(TO_CMAKE_PATH $ENV{WEBKIT_OUTPUTDIR}/import/lib IMPORT_LIBRARIES_DIR) 29 if (WIN32) 30 #### ICU #### 31 set(ICU_FOUND TRUE) 32 set(ICU_I18N_FOUND TRUE) 33 set(ICU_INCLUDE_DIRS ${IMPORT_INCLUDE_DIR}/icu) 34 if (CMAKE_BUILD_TYPE STREQUAL "Release") 35 set(ICU_LIBRARIES ${IMPORT_LIBRARIES_DIR}/sicuuc.lib ${IMPORT_LIBRARIES_DIR}/icudt.lib) 36 set(ICU_I18N_LIBRARIES ${IMPORT_LIBRARIES_DIR}/sicuin.lib) 37 else () 38 set(ICU_LIBRARIES ${IMPORT_LIBRARIES_DIR}/sicuucd.lib ${IMPORT_LIBRARIES_DIR}/icudt.lib) 39 set(ICU_I18N_LIBRARIES ${IMPORT_LIBRARIES_DIR}/sicuind.lib) 40 endif () 41 #### ICU-END #### 42 43 set(LIBXML2_INCLUDE_DIR ${IMPORT_INCLUDE_DIR}) 44 set(LIBXML2_LIBRARIES ${IMPORT_LIBRARIES_DIR}/libxml2_a.lib) 45 46 #### Sqlite3 #### 47 set(SQLITE_FOUND TRUE) 48 set(SQLITE_INCLUDE_DIR ${IMPORT_INCLUDE_DIR}) 49 set(SQLITE_LIBRARIES ${IMPORT_LIBRARIES_DIR}/sqlite3.lib) 50 #### Sqlite3-END #### 51 52 set(LIBXSLT_INCLUDE_DIR ${IMPORT_INCLUDE_DIR}) 53 set(LIBXSLT_LIBRARIES ${IMPORT_LIBRARIES_DIR}/libxslt_a.lib) 54 elseif (APPLE) 55 # set(USE_CF 1) 56 add_definitions(-DUSE_CF=1) 57 add_definitions(-DJSC_OBJC_API_ENABLED=0) 58 59 #### Sqlite3 #### 60 set(SQLITE_FOUND TRUE) 61 set(SQLITE_INCLUDE_DIR ${IMPORT_INCLUDE_DIR}) 62 set(SQLITE_LIBRARIES ${IMPORT_LIBRARIES_DIR}/libsqlite3.a) 63 #### Sqlite3-END #### 64 find_package(LibXml2 2.8.0 REQUIRED) 65 find_package(LibXslt 1.1.7 REQUIRED) 66 set(CMAKE_SKIP_RPATH TRUE) 67 elseif (UNIX) 68 #### ICU #### 69 set(ICU_FOUND TRUE) 70 set(ICU_I18N_FOUND TRUE) 71 set(ICU_INCLUDE_DIRS ${IMPORT_INCLUDE_DIR}) 72 set(ICU_LIBRARIES ${IMPORT_LIBRARIES_DIR}/libicuuc.a ${IMPORT_LIBRARIES_DIR}/libicudata.a) 73 set(ICU_I18N_LIBRARIES ${IMPORT_LIBRARIES_DIR}/libicui18n.a) 74 #### ICU-END #### 75 76 #### Sqlite3 #### 77 set(SQLITE_FOUND TRUE) 78 set(SQLITE_INCLUDE_DIR ${IMPORT_INCLUDE_DIR}) 79 set(SQLITE_LIBRARIES ${IMPORT_LIBRARIES_DIR}/libsqlite3.a) 80 #### Sqlite3-END #### 81 82 find_package(LibXml2 2.7.0 REQUIRED) 83 find_package(LibXslt 1.1.7 REQUIRED) 84 set(CMAKE_SKIP_RPATH TRUE) 85 else () 86 message(FATAL_ERROR "Set thirdparty lib, inc paths") 87 endif () 88 89 find_package(JNI REQUIRED) 90 find_package(Threads REQUIRED) 91 92 if (WIN32) 93 # Set output dir to lib directory 94 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) 95 # Workaround for MSBuild. It always creates Release|Debug folder 96 # according to the build type on each target. 97 install(PROGRAMS ${CMAKE_BINARY_DIR}/lib/${CMAKE_BUILD_TYPE}/${WebCore_OUTPUT_NAME}.dll DESTINATION ${CMAKE_BINARY_DIR}/lib OPTIONAL) 98 # Copied from OptionsWindows.cmake 99 add_definitions(-D_HAS_EXCEPTIONS=0 -DNOMINMAX -DUNICODE -DU_STATIC_IMPLEMENTATION) 100 add_definitions( 101 /wd4018 /wd4068 /wd4099 /wd4100 /wd4127 /wd4138 /wd4146 /wd4180 /wd4189 /wd4201 /wd4244 /wd4251 /wd4267 /wd4275 /wd4288 102 /wd4291 /wd4305 /wd4309 /wd4344 /wd4355 /wd4389 /wd4396 /wd4481 /wd4503 /wd4505 /wd4510 /wd4512 /wd4530 /wd4610 /wd4702 103 /wd4706 /wd4800 /wd4819 /wd4951 /wd4952 /wd4996 /wd6011 /wd6031 /wd6211 /wd6246 /wd6255 /wd6387 104 ) 105 # https://lists.webkit.org/pipermail/webkit-dev/2016-April/028135.html 106 add_definitions(/vmg) 107 if (NOT ${CMAKE_GENERATOR} MATCHES "Ninja") 108 add_definitions(/MP) 109 endif () 110 if (NOT ${CMAKE_CXX_FLAGS} STREQUAL "") 111 string(REGEX REPLACE "/EH[a-z]+" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) # Disable C++ exceptions 112 string(REGEX REPLACE "/GR" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) # Disable RTTI 113 endif () 114 elseif(APPLE) 115 else() 116 set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--export-dynamic -static-libstdc++") 117 endif() 118 119 WEBKIT_OPTION_BEGIN() 120 121 # Set the default value for ENABLE_GLES2 automatically. 122 # We are not enabling or disabling automatically a feature here, because 123 # the feature is by default always on (ENABLE_OPENGL=ON). 124 # What we select here automatically is if we use OPENGL (ENABLE_GLES2=OFF) 125 # or OPENGLES2 (ENABLE_GLES2=ON) for building the feature. 126 # set(ENABLE_GLES2_DEFAULT OFF) 127 128 # WEBKIT_OPTION_DEPEND(ENABLE_3D_TRANSFORMS ENABLE_OPENGL) 129 # WEBKIT_OPTION_DEPEND(ENABLE_ACCELERATED_2D_CANVAS ENABLE_OPENGL) 130 # WEBKIT_OPTION_DEPEND(ENABLE_GLES2 ENABLE_OPENGL) 131 # WEBKIT_OPTION_DEPEND(ENABLE_NETSCAPE_PLUGIN_API ENABLE_X11_TARGET) 132 # WEBKIT_OPTION_DEPEND(ENABLE_PLUGIN_PROCESS_GTK2 ENABLE_X11_TARGET) 133 # WEBKIT_OPTION_DEPEND(ENABLE_THREADED_COMPOSITOR ENABLE_OPENGL) 134 # WEBKIT_OPTION_DEPEND(ENABLE_WEBGL ENABLE_OPENGL) 135 # WEBKIT_OPTION_DEPEND(USE_REDIRECTED_XCOMPOSITE_WINDOW ENABLE_OPENGL) 136 # WEBKIT_OPTION_DEPEND(USE_REDIRECTED_XCOMPOSITE_WINDOW ENABLE_X11_TARGET) 137 # WEBKIT_OPTION_DEPEND(USE_GSTREAMER_GL ENABLE_OPENGL) 138 # WEBKIT_OPTION_DEPEND(USE_GSTREAMER_GL ENABLE_VIDEO) 139 # WEBKIT_OPTION_DEPEND(USE_GSTREAMER_MPEGTS ENABLE_VIDEO) 140 141 # SET_AND_EXPOSE_TO_BUILD(ENABLE_DEVELOPER_MODE ${DEVELOPER_MODE}) 142 # if (DEVELOPER_MODE) 143 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MINIBROWSER PUBLIC ON) 144 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_API_TESTS PRIVATE ON) 145 # else () 146 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MINIBROWSER PUBLIC OFF) 147 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_API_TESTS PRIVATE OFF) 148 # set(WebKit2_VERSION_SCRIPT "-Wl,--version-script,${CMAKE_MODULE_PATH}/gtksymbols.filter") 149 # endif () 150 151 # if (CMAKE_SYSTEM_NAME MATCHES "Linux") 152 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEMORY_SAMPLER PUBLIC ON) 153 # else () 154 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEMORY_SAMPLER PUBLIC OFF) 155 # endif () 156 157 # # Normally we do not set the value of options automatically. However, CairoGL is special. Currently 158 # # most major distros compile Cario with --enable-gl, but Debian and derivitives are a major 159 # # exception. You very probably want accelerated 2D canvas if Cario has been compiled with CarioGL, 160 # # and very probably do not want to recompile Cario otherwise. So we expect some major distros will 161 # # enable this feature, and others will not, and that is just fine for the time being. Once Debian 162 # # enables CairoGL, then it will be time to force this ON by default. Note that if GLX is installed, 163 # # EGL is not, and ENABLE_X11_TARGET is OFF, this guess is wrong and the user must override it. We 164 # # can't check ENABLE_X11_TARGET at this point because we don't know whether it's enabled until 165 # # WEBKIT_OPTION_END has been called, and at that point it's too late to change default values. 166 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ACCELERATED_2D_CANVAS PUBLIC ${CAIROGL_FOUND}) 167 168 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CREDENTIAL_STORAGE PUBLIC ON) 169 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(WEBKIT_OPTION_DEFAULT_PORT_VALUE OFF) 170 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CSS_COMPOSITING PRIVATE ON) 171 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DRAG_SUPPORT PUBLIC ON) 172 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_GEOLOCATION PUBLIC ON) 173 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ICONDATABASE PUBLIC OFF) 174 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_JIT PRIVATE OFF) 175 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DFG_JIT PRIVATE OFF) 176 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SPELLCHECK PUBLIC ON) 177 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_TOUCH_EVENTS PUBLIC OFF) 178 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_VIDEO PUBLIC ON) 179 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_AUDIO PUBLIC ON) 180 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(USE_SYSTEM_MALLOC PUBLIC OFF) 181 182 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_3D_TRANSFORMS PRIVATE ON) 183 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ACCESSIBILITY PRIVATE ON) 184 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ACCESSIBILITY PRIVATE OFF) #//XXX: ON 185 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ATTACHMENT_ELEMENT PRIVATE OFF) 186 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_BATTERY_STATUS PRIVATE OFF) 187 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CANVAS_PATH PRIVATE ON) 188 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CSS3_TEXT PRIVATE OFF) 189 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CSS_DEVICE_ADAPTATION PRIVATE OFF) 190 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CSS_GRID_LAYOUT PRIVATE OFF) #recheck actual value 191 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CSS_IMAGE_SET PRIVATE ON) 192 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CSS_REGIONS PRIVATE ON) 193 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CSS_SELECTORS_LEVEL4 PRIVATE ON) 194 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CUSTOM_SCHEME_HANDLER PRIVATE OFF) 195 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DATABASE_PROCESS PRIVATE ON) 196 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DATALIST_ELEMENT PRIVATE ON) 197 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DOWNLOAD_ATTRIBUTE PRIVATE OFF) 198 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ENCRYPTED_MEDIA PRIVATE OFF) 199 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ENCRYPTED_MEDIA_V2 PRIVATE OFF) 200 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FILTERS_LEVEL_2 PRIVATE OFF) #//XXX: ON? 201 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FTPDIR PRIVATE ON) 202 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FULLSCREEN_API PRIVATE ON) 203 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_GAMEPAD PRIVATE OFF) 204 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_GAMEPAD_DEPRECATED PRIVATE OFF) 205 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INDEXED_DATABASE PRIVATE OFF) 206 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INDEXED_DATABASE_IN_WORKERS PRIVATE OFF) 207 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_COLOR PRIVATE ON) 208 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_LEGACY_WEB_AUDIO PRIVATE ON) 209 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_LINK_PREFETCH PRIVATE ON) 210 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_CAPTURE PRIVATE OFF) 211 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_CONTROLS_SCRIPT PRIVATE ON) 212 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MHTML PRIVATE ON) 213 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NAVIGATOR_CONTENT_UTILS PRIVATE OFF) 214 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NAVIGATOR_HWCONCURRENCY PRIVATE ON) 215 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NETSCAPE_PLUGIN_API PRIVATE ON) 216 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NOTIFICATIONS PRIVATE ON) 217 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_PICTURE_SIZES PRIVATE ON) 218 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_PUBLIC_SUFFIX_LIST PRIVATE ON) 219 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_QUOTA PRIVATE OFF) 220 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_RESOLUTION_MEDIA_QUERY PRIVATE ON) 221 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_REQUEST_ANIMATION_FRAME PRIVATE ON) 222 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SECCOMP_FILTERS PRIVATE OFF) 223 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SMOOTH_SCROLLING PRIVATE ON) 224 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SUBTLE_CRYPTO PRIVATE OFF) 225 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_TEMPLATE_ELEMENT PRIVATE OFF) 226 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_USERSELECT_ALL PRIVATE ON) 227 # WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_USER_MESSAGE_HANDLERS PRIVATE ON) 228 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_VIBRATION PRIVATE OFF) 229 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_VIDEO PRIVATE ON) 230 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_VIDEO_TRACK PRIVATE ON) 231 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_VIEW_MODE_CSS_MEDIA PRIVATE ON) 232 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_TIMING PRIVATE ON) 233 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEBGL PRIVATE OFF) 234 235 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_DATE PRIVATE ON) 236 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_DATETIMELOCAL PRIVATE ON) 237 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE PRIVATE ON) 238 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_MONTH PRIVATE ON) 239 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_TIME PRIVATE ON) 240 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_WEEK PRIVATE ON) 241 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_LEGACY_NOTIFICATIONS PRIVATE ON) 242 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SVG_OTF_CONVERTER PRIVATE OFF) 243 244 245 246 # Finalize the value for all options. Do not attempt to use an option before 247 # this point, and do not attempt to change any option after this point. 248 WEBKIT_OPTION_END() 249 250 251 set(ENABLE_WEBKIT OFF) 252 set(ENABLE_WEBKIT2 OFF) 253 add_definitions(-DBUILDING_JAVA__=1) 254 add_definitions(-DDATA_DIR="${CMAKE_INSTALL_DATADIR}") 255 # add_definitions(-DUSE_CROSS_PLATFORM_CONTEXT_MENUS=1) 256 257 set(FORWARDING_HEADERS_DIR ${DERIVED_SOURCES_DIR}/ForwardingHeaders) 258 259 260 set(WTF_LIBRARY_TYPE STATIC) 261 # set(JavaScriptCore_LIBRARY_TYPE OBJECT) 262 # set(WebCore_LIBRARY_TYPE OBJECT) 263 # set(WTF_LIBRARY_TYPE STATIC) 264 265 266 if (CMAKE_MAJOR_VERSION LESS 3) 267 # Before CMake 3 it was necessary to use a build script instead of using cmake --build directly 268 # to preserve colors and pretty-printing. 269 270 build_command(COMMAND_LINE_TO_BUILD) 271 # build_command unconditionally adds -i (ignore errors) for make, and there's 272 # no reasonable way to turn that off, so we just replace it with -k, which has 273 # the same effect, except that the return code will indicate that an error occurred. 274 # See: http://www.cmake.org/cmake/help/v3.0/command/build_command.html 275 string(REPLACE " -i" " -k" COMMAND_LINE_TO_BUILD ${COMMAND_LINE_TO_BUILD}) 276 file(WRITE 277 ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/build.sh 278 "#!/bin/sh\n" 279 "${COMMAND_LINE_TO_BUILD} $@" 280 ) 281 file(COPY ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/build.sh 282 DESTINATION ${CMAKE_BINARY_DIR} 283 FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE 284 ) 285 endif ()