@@ -38,10 +38,28 @@ add_subdirectory(tests)
3838
3939arrow_install_all_headers("arrow/flight/sql/odbc" )
4040
41+ # ODBC Release information
42+ set (ODBC_PACKAGE_VERSION_MAJOR "1" )
43+ set (ODBC_PACKAGE_VERSION_MINOR "0" )
44+ set (ODBC_PACKAGE_VERSION_PATCH "0" )
45+ set (ODBC_PACKAGE_NAME "Apache Arrow Flight SQL ODBC" )
46+ set (ODBC_PACKAGE_VENDOR "Apache Arrow" )
47+
4148set (ARROW_FLIGHT_SQL_ODBC_SRCS entry_points.cc odbc_api.cc)
4249
4350if (WIN32 )
44- list (APPEND ARROW_FLIGHT_SQL_ODBC_SRCS odbc.def)
51+ set (VER_FILEVERSION
52+ "${ODBC_PACKAGE_VERSION_MAJOR} ,${ODBC_PACKAGE_VERSION_MINOR} ,${ODBC_PACKAGE_VERSION_PATCH} ,0"
53+ )
54+ set (VER_FILEVERSION_STR
55+ ${ODBC_PACKAGE_VERSION_MAJOR} .${ODBC_PACKAGE_VERSION_MINOR} .${ODBC_PACKAGE_VERSION_PATCH}
56+ )
57+ set (VER_COMPANYNAME_STR ${ODBC_PACKAGE_VENDOR} )
58+ set (VER_PRODUCTNAME_STR ${ODBC_PACKAGE_NAME} )
59+
60+ configure_file ("install/versioninfo.rc.in" "install/versioninfo.rc" @ONLY)
61+
62+ list (APPEND ARROW_FLIGHT_SQL_ODBC_SRCS odbc.def install /versioninfo.rc)
4563endif ()
4664
4765add_arrow_lib(arrow_flight_sql_odbc
@@ -75,3 +93,75 @@ add_arrow_lib(arrow_flight_sql_odbc
7593foreach (LIB_TARGET ${ARROW_FLIGHT_SQL_ODBC_LIBRARIES} )
7694 target_compile_definitions (${LIB_TARGET} PRIVATE ARROW_FLIGHT_SQL_ODBC_EXPORTING)
7795endforeach ()
96+
97+ # Construct ODBC Windows installer. Only Release installer is supported
98+ if (ARROW_FLIGHT_SQL_ODBC_INSTALLER)
99+
100+ include (InstallRequiredSystemLibraries)
101+
102+ set (CPACK_RESOURCE_FILE_LICENSE
103+ "${CMAKE_CURRENT_SOURCE_DIR} /../../../../../../LICENSE.txt" )
104+ # Tentative version 1.0.0
105+ set (CPACK_PACKAGE_VERSION_MAJOR ${ODBC_PACKAGE_VERSION_MAJOR} )
106+ set (CPACK_PACKAGE_VERSION_MINOR ${ODBC_PACKAGE_VERSION_MINOR} )
107+ set (CPACK_PACKAGE_VERSION_PATCH ${ODBC_PACKAGE_VERSION_PATCH} )
108+
109+ set (CPACK_PACKAGE_NAME ${ODBC_PACKAGE_NAME} )
110+ set (CPACK_PACKAGE_VENDOR ${ODBC_PACKAGE_VENDOR} )
111+ set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "Apache Arrow Flight SQL ODBC Driver" )
112+ set (CPACK_PACKAGE_CONTACT "#GH-47787 TODO arrow maintainers" )
113+
114+ # GH-47876 TODO: set up `flight_sql_odbc_lib` component for macOS Installer
115+ # GH-47877 TODO: set up `flight_sql_odbc_lib` component for Linux Installer
116+ if (WIN32 )
117+ install (DIRECTORY "${BUILD_OUTPUT_ROOT_DIRECTORY}${CMAKE_BUILD_TYPE} /"
118+ DESTINATION bin
119+ COMPONENT flight_sql_odbc_lib
120+ FILES_MATCHING
121+ # Use regex for dll name patterns with versions
122+ PATTERN "abseil_dll.dll"
123+ PATTERN "arrow.dll"
124+ PATTERN "arrow_compute.dll"
125+ PATTERN "arrow_flight.dll"
126+ PATTERN "arrow_flight_sql.dll"
127+ PATTERN "arrow_flight_sql_odbc.dll"
128+ PATTERN "boost_locale*.dll"
129+ PATTERN "cares.dll"
130+ PATTERN "libcrypto*.dll"
131+ PATTERN "libprotobuf.dll"
132+ PATTERN "libssl*.dll"
133+ PATTERN "re2.dll"
134+ PATTERN "utf8proc.dll"
135+ PATTERN "zlib1.dll" )
136+
137+ set (CPACK_WIX_EXTRA_SOURCES
138+ "${CMAKE_CURRENT_SOURCE_DIR} /install/arrow-flight-sql-odbc.wxs" )
139+ set (CPACK_WIX_PATCH_FILE
140+ "${CMAKE_CURRENT_SOURCE_DIR} /install/arrow-flight-sql-odbc-patch.xml" )
141+
142+ set (CPACK_WIX_UI_BANNER "${CMAKE_CURRENT_SOURCE_DIR} /install/arrow-wix-banner.bmp" )
143+ endif ()
144+
145+ get_cmake_property (CPACK_COMPONENTS_ALL COMPONENTS)
146+ set (CPACK_COMPONENTS_ALL Unspecified)
147+ list (APPEND CPACK_COMPONENTS_ALL "flight_sql_odbc_lib" )
148+
149+ if (WIN32 )
150+ # WiX msi installer on Windows
151+ # CPack is compatible with WiX V.5 and V.6
152+ set (CPACK_GENERATOR "WIX" )
153+ set (CPACK_WIX_VERSION 4)
154+
155+ # Upgrade GUID is required to be unchanged for ODBC installer to upgrade
156+ set (CPACK_WIX_UPGRADE_GUID "DBF27A18-F8BF-423F-9E3A-957414D52C4B" )
157+ endif ()
158+ # GH-47876 TODO: create macOS Installer using cpack
159+ # GH-47877 TODO: create Linux Installer using cpack
160+
161+ # Load CPack after all CPACK* variables are set
162+ include (CPack)
163+ cpack_add_component(flight_sql_odbc_lib
164+ DISPLAY_NAME "ODBC library"
165+ DESCRIPTION "ODBC library bin, required to install"
166+ REQUIRED)
167+ endif ()
0 commit comments