summaryrefslogtreecommitdiff
path: root/databases/tiledb/files/patch-magic
blob: b1a0812ff54985131ebbecb65e41919c3f247e00 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
Obtained from:	https://github.com/TileDB-Inc/TileDB/pull/3270

--- cmake/Modules/FindMagic_EP.cmake.orig	2022-08-25 01:25:52 UTC
+++ cmake/Modules/FindMagic_EP.cmake
@@ -3,7 +3,7 @@
 #
 # The MIT License
 #
-# Copyright (c) 2018-2021 TileDB, Inc.
+# Copyright (c) 2022 TileDB, Inc.
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to deal
@@ -34,47 +34,47 @@
 # Include some common helper functions.
 include(TileDBCommon)
 
-# Search the path set during the superbuild for the EP.
-set(LIBMAGIC_PATHS ${TILEDB_EP_INSTALL_PREFIX})
+# First check for a static version in the EP prefix.
+find_library(libmagic_LIBRARIES
+        NAMES
+        magic${CMAKE_STATIC_LIBRARY_SUFFIX}
+        libmagic${CMAKE_STATIC_LIBRARY_SUFFIX}
+        PATHS ${TILEDB_EP_INSTALL_PREFIX}
+        PATH_SUFFIXES lib
+        NO_DEFAULT_PATH
+)
 
-if(TILEDB_LIBMAGIC_EP_BUILT)
-  find_package(libmagic PATHS ${TILEDB_EP_INSTALL_PREFIX} ${TILEDB_DEPS_NO_DEFAULT_PATH})
-endif()
-
-if (TILEDB_LIBMAGIC_EP_BUILT)
+if (libmagic_LIBRARIES)
+  set(libmagic_STATIC_EP_FOUND TRUE)
   find_path(libmagic_INCLUDE_DIR
-    NAMES magic.h
-    PATHS ${LIBMAGIC_PATHS}
-    PATH_SUFFIXES include
-    ${NO_DEFAULT_PATH}
-  )
-
-  if (NOT libmagic_INCLUDE_DIR)
-    find_path(libmagic_INCLUDE_DIR
-      NAMES file/file.h
-      PATHS ${LIBMAGIC_PATHS}
-      PATH_SUFFIXES include
-      ${NO_DEFAULT_PATH}
-    )
-  endif()
-
-  # Link statically if installed with the EP.
+          NAMES magic.h
+          PATHS ${TILEDB_EP_INSTALL_PREFIX}
+          PATH_SUFFIXES include
+          NO_DEFAULT_PATH
+          )
+elseif(NOT TILEDB_FORCE_ALL_DEPS)
+  set(libmagic_STATIC_EP_FOUND FALSE)
+  # Static EP not found, search in system paths.
   find_library(libmagic_LIBRARIES
-    libmagic
-    PATHS ${LIBMAGIC_PATHS}
-    PATH_SUFFIXES lib a
-    #${TILEDB_DEPS_NO_DEFAULT_PATH}
-    ${NO_DEFAULT_PATH}
-  )
-
-  include(FindPackageHandleStandardArgs)
-  FIND_PACKAGE_HANDLE_STANDARD_ARGS(libmagic
-    REQUIRED_VARS libmagic_LIBRARIES libmagic_INCLUDE_DIR
-  )
+          NAMES
+          magic libmagic
+          PATH_SUFFIXES lib bin
+          ${TILEDB_DEPS_NO_DEFAULT_PATH}
+          )
+  find_path(libmagic_INCLUDE_DIR
+          NAMES magic.h
+          PATH_SUFFIXES include
+          ${TILEDB_DEPS_NO_DEFAULT_PATH}
+          )
 endif()
 
+include(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(libmagic
+        REQUIRED_VARS libmagic_LIBRARIES libmagic_INCLUDE_DIR
+)
+
 # if not yet built add it as an external project
-if(NOT TILEDB_LIBMAGIC_EP_BUILT)
+if(NOT libmagic_FOUND)
   if (TILEDB_SUPERBUILD)
     message(STATUS "Adding Magic as an external project")
 
@@ -115,11 +115,22 @@ if(NOT TILEDB_LIBMAGIC_EP_BUILT)
   endif()
 endif()
 
-find_file(libmagic_DICTIONARY magic.mgc
-  PATHS ${LIBMAGIC_PATHS}
-  PATH_SUFFIXES bin share
-  ${NO_DEFAULT_PATH}
-)
+if(TILEDB_LIBMAGIC_EP_BUILT)
+  find_file(libmagic_DICTIONARY magic.mgc
+          PATHS ${LIBMAGIC_PATHS}
+          PATH_SUFFIXES bin share misc
+          ${TILEDB_DEPS_NO_DEFAULT_PATH}
+          )
+else()
+  find_file(libmagic_DICTIONARY magic.mgc
+    PATH_SUFFIXES bin share misc share/misc
+    ${TILEDB_DEPS_NO_DEFAULT_PATH}
+  )
+endif()
+
+if(NOT TILEDB_SUPERBUILD AND NOT libmagic_DICTIONARY)
+  message(FATAL_ERROR "Unable to find libmagic dictionary")
+endif()
 
 if (libmagic_FOUND AND NOT TARGET libmagic)
   message(STATUS "Found Magic, adding imported target: ${libmagic_LIBRARIES}")
--- tiledb/CMakeLists.txt.orig	2022-08-25 01:25:52 UTC
+++ tiledb/CMakeLists.txt
@@ -357,14 +357,18 @@ target_link_libraries(TILEDB_CORE_OBJECTS PRIVATE $<BU
 ############################################################
 # provide actions/target for preparation of magic.mgc data for embedding/build
 
-set(MGC_GZIPPED_BIN_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/..")
+set(MGC_GZIPPED_BIN_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/sm/misc")
 set(MGC_GZIPPED_BIN_OUTPUT_FILE "${MGC_GZIPPED_BIN_OUTPUT_DIRECTORY}/magic_mgc_gzipped.bin")
 set(MGC_GZIPPED_BIN_INPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/sm/misc")
 set(MGC_GZIPPED_BIN_INPUT_FILE "${MGC_GZIPPED_BIN_INPUT_DIRECTORY}/magic_mgc_gzipped.bin.tar.bz2")
 
+# Create the output directory if it does not exist
+add_custom_target(create_magic_bin_output_directory ALL
+        COMMAND ${CMAKE_COMMAND} -E make_directory ${MGC_GZIPPED_BIN_OUTPUT_DIRECTORY})
+
 add_custom_command(
   OUTPUT "${MGC_GZIPPED_BIN_OUTPUT_FILE}"
-  DEPENDS "${MGC_GZIPPED_BIN_INPUT_FILE}"
+  DEPENDS "${MGC_GZIPPED_BIN_INPUT_FILE}" create_magic_bin_output_directory
   COMMAND ${CMAKE_COMMAND} -E tar x "${MGC_GZIPPED_BIN_INPUT_FILE}"
   WORKING_DIRECTORY "${MGC_GZIPPED_BIN_OUTPUT_DIRECTORY}"
 )
@@ -380,7 +384,7 @@ add_custom_target(
   WORKING_DIRECTORY "${MGC_GZIPPED_BIN_OUTPUT_DIRECTORY}"
   COMMAND ${CMAKE_COMMAND} -E tar cvj "magic_mgc_gzipped.bin.tar.bz2" "magic_mgc_gzipped.bin"
   COMMAND ${CMAKE_COMMAND} -E copy "magic_mgc_gzipped.bin.tar.bz2" "${MGC_GZIPPED_BIN_INPUT_FILE}"
-  DEPENDS "${libmagic_DICTIONARY}"
+  DEPENDS "${libmagic_DICTIONARY}" create_magic_bin_output_directory
   COMMENT "Re-generate ${MGC_GZIPPED_BIN_INPUT_FILE} for embedded magic.mgc support"
 )
 
@@ -394,6 +398,8 @@ target_include_directories(TILEDB_CORE_OBJECTS
     "${TILEDB_EXTERNALS_INCLUDE_DIRS}"
 	# to pickup <build_dir>/tiledb for capnp gen'd files
     "${CMAKE_CURRENT_BINARY_DIR}/.."
+    # For libmagic binary data include
+    "${CMAKE_CURRENT_BINARY_DIR}/sm/misc"
 )
 
 # Build a separate copy of the object library for use with static TileDB