kou commented on PR #1891:
URL: https://github.com/apache/arrow-adbc/pull/1891#issuecomment-2138563644

   It seems that the R packages build with `c/` content. (The R packages don't 
use `c/` content as static library nor shared library.)
   
    `-DADBC_EXPORT=""` is a correct approach. In general, defining a macro that 
indicates that this build is for static linking.
    For example, Apache Arrow C++ uses `ARROW_STATIC` for it: 
https://github.com/apache/arrow/blob/6800be9331d88024bf550c77865a06c592a22699/cpp/src/arrow/util/visibility.h#L42
    GLib uses `GLIB_STATIC_COMPILATION`: 
https://gitlab.gnome.org/GNOME/glib/-/blob/main/tools/gen-visibility-macros.py?ref_type=heads#L94
    
   If ADBC uses this style, here is a sample change for it:
    
   ```diff
   diff --git a/adbc.h b/adbc.h
   index fe0fc4f70..cbb854c2e 100644
   --- a/adbc.h
   +++ b/adbc.h
   @@ -152,6 +152,9 @@ struct ArrowArrayStream {
    // Storage class macros for Windows
    // Allow overriding/aliasing with application-defined macros
    #if !defined(ADBC_EXPORT)
   +#if defined(ADBC_STATIC)
   +#define ADBC_EXPORT
   +#else
    #if defined(_WIN32)
    #if defined(ADBC_EXPORTING)
    #define ADBC_EXPORT __declspec(dllexport)
   @@ -161,6 +164,7 @@ struct ArrowArrayStream {
    #else
    #define ADBC_EXPORT
    #endif  // defined(_WIN32)
   +#endif  // defined(ADBC_STATIC)
    #endif  // !defined(ADBC_EXPORT)
    
    /// \defgroup adbc-error-handling Error Handling
   diff --git a/r/adbcdrivermanager/src/Makevars 
b/r/adbcdrivermanager/src/Makevars
   index ffcee27b8..93b72e765 100644
   --- a/r/adbcdrivermanager/src/Makevars
   +++ b/r/adbcdrivermanager/src/Makevars
   @@ -16,4 +16,4 @@
    # under the License.
    
    CXX_STD = CXX17
   -PKG_CPPFLAGS=-I../src -DADBC_EXPORT=""
   +PKG_CPPFLAGS=-I../src -DADBC_STATIC
   diff --git a/r/adbcflightsql/src/Makevars.in 
b/r/adbcflightsql/src/Makevars.in
   index 701160e03..7cc9b5152 100644
   --- a/r/adbcflightsql/src/Makevars.in
   +++ b/r/adbcflightsql/src/Makevars.in
   @@ -15,7 +15,7 @@
    # specific language governing permissions and limitations
    # under the License.
    
   -PKG_CPPFLAGS=-I$(CURDIR)/src -DADBC_EXPORT=""
   +PKG_CPPFLAGS=-I$(CURDIR)/src -DADBC_STATIC
    PKG_LIBS=-L$(CURDIR)/go -ladbc_driver_flightsql -lresolv @libs@
    
    CGO_CC = @cc@
   diff --git a/r/adbcflightsql/src/Makevars.win 
b/r/adbcflightsql/src/Makevars.win
   index ca526b379..c830d6efc 100644
   --- a/r/adbcflightsql/src/Makevars.win
   +++ b/r/adbcflightsql/src/Makevars.win
   @@ -15,7 +15,7 @@
    # specific language governing permissions and limitations
    # under the License.
    
   -PKG_CPPFLAGS=-I$(CURDIR) -DADBC_EXPORT=""
   +PKG_CPPFLAGS=-I$(CURDIR) -DADBC_STATIC
    PKG_LIBS=-L$(CURDIR)/go -ladbc_driver_flightsql
    
    CGO_CC = `"${R_HOME}/bin${R_ARCH_BIN}/R.exe" CMD config CC`
   diff --git a/r/adbcpostgresql/src/Makevars.in 
b/r/adbcpostgresql/src/Makevars.in
   index d3c62fad6..165d2531d 100644
   --- a/r/adbcpostgresql/src/Makevars.in
   +++ b/r/adbcpostgresql/src/Makevars.in
   @@ -16,7 +16,7 @@
    # under the License.
    
    CXX_STD = CXX17
   -PKG_CPPFLAGS=-I../src -I../src/c/ -I../src/c/vendor/ 
-I../src/c/vendor/fmt/include/ @cppflags@ -DADBC_EXPORT="" -DFMT_HEADER_ONLY=1
   +PKG_CPPFLAGS=-I../src -I../src/c/ -I../src/c/vendor/ 
-I../src/c/vendor/fmt/include/ @cppflags@ -DADBC_STATIC -DFMT_HEADER_ONLY=1
    PKG_LIBS=@libs@
    
    OBJECTS = init.o \
   diff --git a/r/adbcpostgresql/src/Makevars.ucrt 
b/r/adbcpostgresql/src/Makevars.ucrt
   index 857c45b77..d26221100 100644
   --- a/r/adbcpostgresql/src/Makevars.ucrt
   +++ b/r/adbcpostgresql/src/Makevars.ucrt
   @@ -16,7 +16,7 @@
    # under the License.
    
    CXX_STD = CXX17
   -PKG_CPPFLAGS = -I../src -I../src/c/ -I../src/c/vendor/ 
-I../src/c/vendor/fmt/include/ -DADBC_EXPORT="" -D__USE_MINGW_ANSI_STDIO 
-DFMT_HEADER_ONLY=1
   +PKG_CPPFLAGS = -I../src -I../src/c/ -I../src/c/vendor/ 
-I../src/c/vendor/fmt/include/ -DADBC_STATIC -D__USE_MINGW_ANSI_STDIO 
-DFMT_HEADER_ONLY=1
    
    PKG_LIBS = -lpq -lpgcommon -lpgport -lssl -lcrypto -lz -lsecur32 -lws2_32 
-lwldap32 -lcrypt32
    
   diff --git a/r/adbcpostgresql/src/Makevars.win 
b/r/adbcpostgresql/src/Makevars.win
   index abd5d82aa..3a003560c 100644
   --- a/r/adbcpostgresql/src/Makevars.win
   +++ b/r/adbcpostgresql/src/Makevars.win
   @@ -18,7 +18,7 @@
    VERSION = 13.2.0
    RWINLIB = ../windows/libpq-$(VERSION)
    CXX_STD = CXX17
   -PKG_CPPFLAGS = -I$(RWINLIB)/include -I../src -I../src/c/ -I../src/c/vendor/ 
-I../src/c/vendor/fmt/include/ -DADBC_EXPORT="" -D__USE_MINGW_ANSI_STDIO 
-DFMT_HEADER_ONLY=1
   +PKG_CPPFLAGS = -I$(RWINLIB)/include -I../src -I../src/c/ -I../src/c/vendor/ 
-I../src/c/vendor/fmt/include/ -DADBC_STATIC -D__USE_MINGW_ANSI_STDIO 
-DFMT_HEADER_ONLY=1
    PKG_LIBS = -L$(RWINLIB)/lib${R_ARCH}${CRT} \
        -lpq -lpgport -lpgcommon -lssl -lcrypto -lwsock32 -lsecur32 -lws2_32 
-lgdi32 -lcrypt32 -lwldap32
    
   diff --git a/r/adbcsnowflake/src/Makevars.in 
b/r/adbcsnowflake/src/Makevars.in
   index a91f1a62a..ae4d0a1d0 100644
   --- a/r/adbcsnowflake/src/Makevars.in
   +++ b/r/adbcsnowflake/src/Makevars.in
   @@ -15,7 +15,7 @@
    # specific language governing permissions and limitations
    # under the License.
    
   -PKG_CPPFLAGS=-DADBC_EXPORT="" @cflags@
   +PKG_CPPFLAGS=-DADBC_STATIC @cflags@
    PKG_LIBS=-L$(CURDIR)/go -ladbc_driver_snowflake @libs@
    
    CGO_CC = @cc@
   diff --git a/r/adbcsqlite/src/Makevars.in b/r/adbcsqlite/src/Makevars.in
   index 7ed49a9ad..1c11c82d4 100644
   --- a/r/adbcsqlite/src/Makevars.in
   +++ b/r/adbcsqlite/src/Makevars.in
   @@ -16,7 +16,7 @@
    # under the License.
    
    CXX_STD = CXX17
   -PKG_CPPFLAGS=-I../src/ -I../src/c/ -I../src/c/vendor/ 
-I../src/c/vendor/fmt/include/ @cppflags@ -DADBC_EXPORT="" -DFMT_HEADER_ONLY=1 
-D_LIBCPP_DISABLE_AVAILABILITY
   +PKG_CPPFLAGS=-I../src/ -I../src/c/ -I../src/c/vendor/ 
-I../src/c/vendor/fmt/include/ @cppflags@ -DADBC_STATIC -DFMT_HEADER_ONLY=1 
-D_LIBCPP_DISABLE_AVAILABILITY
    PKG_LIBS=@libs@
    
    OBJECTS = init.o \
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to