diff --git a/windows/build/odbc.bat b/windows/build/odbc.bat index 4ba79de..d492e42 100644 --- a/windows/build/odbc.bat +++ b/windows/build/odbc.bat @@ -3,15 +3,25 @@ REM Copyright Huawei Technologies Co., Ltd. 2010-2018. All rights reserved. setlocal set WD=%__CD__% -set LIB_SECURITY_DIR=%WD%\..\..\..\..\platform\Huawei_Secure_C\Huawei_Secure_C_V100R001C01SPC010B002 -set LIB_GAUSSDB_DIR=%WD%\..\..\..\..\..\server -set LIB_ODBC_DIR=%WD%\..\.. +set LIB_SECURITY_DIR=D:\windows_odbc\win32\open_source\Huawei_Secure_C_V100R001C01SPC010B002 +set LIB_GAUSSDB_DIR=D:\windows_odbc\win32\open_source\openGauss-server +set LIB_ODBC_DIR=D:\windows_odbc\win32\open_source\openGauss-connector-odbc -set MINGW_DIR=C:\buildtools\mingw-8.1.0\msys32\mingw32 -set CMAKE_DIR=C:\buildtools\cmake -set OPENSSL_DIR=D:\GaussDBKernel\open_source\output\openssl-win +set MINGW_DIR=D:\buildtools\mingw-8.1.0\msys64\mingw32 +set CMAKE_DIR=D:\env\cmake-3.26 +REM openss compiled direction +set OPENSSL_DIR=D:\windows_odbc\win32\open_source\output\openssl-win32 +set p7zip=D:\install\7-Zip +set OUTPUT_DIR=%LIB_ODBC_DIR%/odbc_output +if not exist %OPENSSL_DIR%/libcrypto-1_1.dll ( + cd %WD% + REM Build openssl + call openssl.bat +) + +cd %WD% REM Build libsecurec.lib cp win32/libpq/CMakeLists-huawei-securec.txt %LIB_SECURITY_DIR%/CMakeLists.txt cd %LIB_SECURITY_DIR% @@ -20,21 +30,23 @@ mkdir build cd build cmake -DMINGW_DIR="%MINGW_DIR%" -D"CMAKE_MAKE_PROGRAM:PATH=%MINGW_DIR%/bin/make.exe" -G "MinGW Makefiles" .. make -cd %WD% +cd %WD% REM Build libpq.lib rm -rf %LIB_GAUSSDB_DIR%/libpq-win32 cp -r win32/libpq %LIB_GAUSSDB_DIR%/libpq-win32 cd %LIB_GAUSSDB_DIR%/libpq-win32 cp -r %LIB_SECURITY_DIR%/output ./lib -bash -l %LIB_GAUSSDB_DIR%/libpq-win32/project.sh +bash %LIB_GAUSSDB_DIR%/libpq-win32/project.sh rm -rf build mkdir build cd build cmake -DMINGW_DIR="%MINGW_DIR%" -DOPENSSL_DIR="%OPENSSL_DIR%" -D"CMAKE_MAKE_PROGRAM:PATH=%MINGW_DIR%/bin/make.exe" -G "MinGW Makefiles" .. +sed -i 's/LIB_CRYPTO-NOTFOUND/D:\/windows_odbc\/win32\/open_source\/output\/openssl-win32\/libcrypto-1_1.dll/g' CMakeCache.txt +sed -i 's/LIB_SSL-NOTFOUND/D:\/windows_odbc\/win32\/open_source\/output\/openssl-win32\/libssl-1_1.dll/g' CMakeCache.txt make -cd %WD% +cd %WD% REM Build psqlodbc35w.lib cd %LIB_ODBC_DIR% rm -rf libpq @@ -45,9 +57,11 @@ rm -rf build mkdir build cd build cmake -DMINGW_DIR="%MINGW_DIR%" -DOPENSSL_DIR="%OPENSSL_DIR%" -D"CMAKE_MAKE_PROGRAM:PATH=%MINGW_DIR%/bin/make.exe" -G "MinGW Makefiles" .. +sed -i 's/LIB_CRYPTO-NOTFOUND/D:\/windows_odbc\/win32\/open_source\/output\/openssl-win32\/libcrypto-1_1.dll/g' CMakeCache.txt +sed -i 's/LIB_SSL-NOTFOUND/D:\/windows_odbc\/win32\/open_source\/output\/openssl-win32\/libssl-1_1.dll/g' CMakeCache.txt make -cd %WD% +cd %WD% REM Build psqlodbc.exe cd psqlodbc-installer rm -rf win32_dll @@ -63,13 +77,9 @@ mkdir odbc_output cp psqlodbc-installer/psqlodbc.exe odbc_output rm -rf psqlodbc-installer/psqlodbc.exe - cd odbc_output -%p7zip%\7z.exe a GaussDB-Kernel-V500R002C10-Windows-Odbc-X86.tar * -%p7zip%\7z.exe a -tgzip GaussDB-Kernel-V500R002C10-Windows-Odbc-X86.tar.gz *.tar -del *.tar +%p7zip%\7z.exe a -tgzip openGauss-5.0.0-ODBC-windows.tar.gz ./* -set OUTPUT_DIR=%LIB_ODBC_DIR%/output +rm -rf "%OUTPUT_DIR%" mkdir "%OUTPUT_DIR%" -cp GaussDB-Kernel-V500R002C00-Windows-Odbc-X86.tar.gz %OUTPUT_DIR% - +cp -r openGauss-5.0.0-ODBC-windows.tar.gz %OUTPUT_DIR% \ No newline at end of file diff --git a/windows/build/openssl.bat b/windows/build/openssl.bat new file mode 100644 index 0000000..71199fa --- /dev/null +++ b/windows/build/openssl.bat @@ -0,0 +1,21 @@ +REM Copyright Huawei Technologies Co., Ltd. 2010-2018. All rights reserved. +@echo off +setlocal + +set WD=%__CD__% +REM openssl source direction +set OPENSSL_SOURCE_DIR=D:\windows_odbc\win32\open_source\openssl-OpenSSL_1_1_1n\openssl-OpenSSL_1_1_1n +set MSYS_SHELL=D:\buildtools\mingw-8.1.0\msys64\msys2_shell.cmd + +cd %WD% +REM build openssl +cd %OPENSSL_SOURCE_DIR% +REM openssl config +rm -rf openssl-win32 +%MSYS_SHELL% -defterm -mingw32 -no-start -full-path -here -c './Configure ^ +--prefix=$PWD/openssl-win32 ^ +shared mingw no-tests; make -j20; make install -j20; ^ +cp $PWD/openssl-win32/bin/libssl-1_1.dll $PWD/openssl-win32; ^ +cp $PWD/openssl-win32/bin/libcrypto-1_1.dll $PWD/openssl-win32; ^ +rm -rf $PWD/../../output; ^ +mkdir -p $PWD/../../output; mv $PWD/openssl-win32 $PWD/../../output/.' ^ \ No newline at end of file diff --git a/windows/build/win32/libpq/CMakeLists-huawei-securec.txt b/windows/build/win32/libpq/CMakeLists-huawei-securec.txt index 5116304..d45e946 100644 --- a/windows/build/win32/libpq/CMakeLists-huawei-securec.txt +++ b/windows/build/win32/libpq/CMakeLists-huawei-securec.txt @@ -5,7 +5,7 @@ SET(CMAKE_VERBOSE_MAKEFILEON ON) MESSAGE(STATUS "Building LIBSECUREC Library.") IF(NOT DEFINED MINGW_DIR) - set(MINGW_DIR "D:\\msys32\\mingw32") + set(MINGW_DIR "D:\\buildtools\\mingw-8.1.0\\msys64\\mingw32") ENDIF(NOT DEFINED MINGW_DIR) SET(PWD_DIR ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/windows/build/win32/libpq/CMakeLists.txt b/windows/build/win32/libpq/CMakeLists.txt index e7525f2..e368e9b 100644 --- a/windows/build/win32/libpq/CMakeLists.txt +++ b/windows/build/win32/libpq/CMakeLists.txt @@ -6,7 +6,7 @@ SET(CMAKE_VERBOSE_MAKEFILEON ON) MESSAGE(STATUS "Building LIBPQ Library.") IF(NOT DEFINED OPENSSL_DIR) - set(OPENSSL_DIR "D:\\Program_Files\\OpenSSL-Win32") + set(OPENSSL_DIR "D:\\windows_odbc\\win32\\open_source\\output\\openssl-win32") ENDIF(NOT DEFINED OPENSSL_DIR) IF(NOT DEFINED MINGW_DIR) set(MINGW_DIR "D:\\buildtools\\mingw-8.1.0\\msys32\\mingw32") diff --git a/windows/build/win32/libpq/Makefile b/windows/build/win32/libpq/Makefile index ce6182e..0b483bb 100644 --- a/windows/build/win32/libpq/Makefile +++ b/windows/build/win32/libpq/Makefile @@ -3,7 +3,7 @@ ################################################################# ifndef $(OPENSSL_DIR) -OPENSSL_DIR:=/d/Program_Files/OpenSSL-Win32 +OPENSSL_DIR:=/d/windows_odbc/win32/open_source/output/openssl-win32 endif ifndef $(MINGW_DIR) diff --git a/windows/build/win32/libpq/project.sh b/windows/build/win32/libpq/project.sh index f25f536..74362f2 100644 --- a/windows/build/win32/libpq/project.sh +++ b/windows/build/win32/libpq/project.sh @@ -1,446 +1,449 @@ -# Copyright Huawei Technologies Co., Ltd. 2010-2018. All rights reserved. -#!/bin/bash -MD="mkdir -p" -RM="rm -rf" -CP="cp -r" -ROOT_DIR=$LIB_GAUSSDB_DIR -#ROOT_DIR=`pwd`/.. -SRC_DIR=$ROOT_DIR/../open_source/opengauss/src -LIBPQ_WIN32_DIR=$ROOT_DIR/libpq-win32 -PREPARED_DIR=$LIBPQ_WIN32_DIR -EXPORT_DIR=$LIBPQ_WIN32_DIR/libpq-export - -### function ### -function copy_file() -{ -file=$1 #file name -src=$2 #source directory -dst=$3 #target directory -if [ ! -f "$src"/"$file" ];then - echo "Error: $src/$file doesn't exist, exit." - exit -1 -fi -if [ ! -d $dst ];then - $MD $dst -fi -#echo "Copy $src/$file to $dst/$file" -$CP $src/$file $dst/$file -} - -### function ### -function init_win_project() -{ - if [ ! -f "$PREPARED_DIR"/include/pg_config.h ]; then - echo "Error: Header file pg_config.h for Windows lost, exit." - exit -1 - fi - if [ ! -f "$PREPARED_DIR"/include/pg_config_os.h ]; then - echo "Error: Header file pg_config_os.h for Windows lost, exit." - exit -1 - fi - if [ ! -f "$PREPARED_DIR"/include/pg_config_paths.h ]; then - echo "Error: Header file pg_config_paths.h for Windows lost, exit." - exit -1 - fi - if [ ! -f "$PREPARED_DIR"/include/errcodes.h ]; then - echo "Error: Header file errcodes.h for Windows lost, exit." - exit -1 - fi - if [ ! -f "$PREPARED_DIR"/include/libpqdll.def ]; then - echo "Error: Interface definition file libpqdll.def for Windows lost, exit." - exit -1 - fi - if [ ! -f "$PREPARED_DIR"/Makefile ];then - echo "Error: Makefile for MinGW complier lost, exit." - exit -1 - fi - if [ ! -f "$PREPARED_DIR"/CMakeLists.txt ];then - echo "Error: CMakeLists.txt for CMake && MinGW complier lost, exit." - exit -1 - fi -# $RM $LIBPQ_WIN32_DIR/include - $RM $LIBPQ_WIN32_DIR/src - if [ ! -d "$LIBPQ_WIN32_DIR"/lib ];then - $MD $LIBPQ_WIN32_DIR/lib - fi -} - -### function ### -function copy_headers() -{ # copy header files -# copy form prepared directory -copy_file securec.h $LIB_SECURITY_DIR/include $LIBPQ_WIN32_DIR/include -copy_file securectype.h $LIB_SECURITY_DIR/include $LIBPQ_WIN32_DIR/include -#copy_file pg_config.h $PREPARED_DIR $LIBPQ_WIN32_DIR/include -#copy_file pg_config_os.h $PREPARED_DIR $LIBPQ_WIN32_DIR/include -# include -copy_file c.h $SRC_DIR/include $LIBPQ_WIN32_DIR/include -copy_file cipher.h $SRC_DIR/include $LIBPQ_WIN32_DIR/include -copy_file datatypes.h $SRC_DIR/include $LIBPQ_WIN32_DIR/include -copy_file getaddrinfo.h $SRC_DIR/include $LIBPQ_WIN32_DIR/include -copy_file gs_thread.h $SRC_DIR/include $LIBPQ_WIN32_DIR/include -copy_file gs_threadlocal.h $SRC_DIR/include $LIBPQ_WIN32_DIR/include -copy_file pg_config_manual.h $SRC_DIR/include $LIBPQ_WIN32_DIR/include -copy_file port.h $SRC_DIR/include $LIBPQ_WIN32_DIR/include -copy_file postgres.h $SRC_DIR/include $LIBPQ_WIN32_DIR/include -copy_file postgres_ext.h $SRC_DIR/include $LIBPQ_WIN32_DIR/include -copy_file postgres_fe.h $SRC_DIR/include $LIBPQ_WIN32_DIR/include -copy_file securec_check.h $SRC_DIR/include $LIBPQ_WIN32_DIR/include -# include/access -copy_file attnum.h $SRC_DIR/include/access $LIBPQ_WIN32_DIR/include/access -copy_file tupdesc.h $SRC_DIR/include/access $LIBPQ_WIN32_DIR/include/access -# include/catlog -copy_file genbki.h $SRC_DIR/include/catalog $LIBPQ_WIN32_DIR/include/catalog -copy_file pg_attribute.h $SRC_DIR/include/catalog $LIBPQ_WIN32_DIR/include/catalog -# include/client_logic -copy_file cache.h $SRC_DIR/include/client_logic $LIBPQ_WIN32_DIR/include/client_logic -copy_file client_logic.h $SRC_DIR/include/client_logic $LIBPQ_WIN32_DIR/include/client_logic -copy_file client_logic_enums.h $SRC_DIR/include/client_logic $LIBPQ_WIN32_DIR/include/client_logic -copy_file cstrings_map.h $SRC_DIR/include/client_logic $LIBPQ_WIN32_DIR/include/client_logic -# include/gstrace -copy_file gstrace_infra.h $SRC_DIR/include/gstrace $LIBPQ_WIN32_DIR/include/gstrace -copy_file gstrace_infra_int.h $SRC_DIR/include/gstrace $LIBPQ_WIN32_DIR/include/gstrace -copy_file gstrace_tool.h $SRC_DIR/include/gstrace $LIBPQ_WIN32_DIR/include/gstrace -# include/libcomm -#copy_file libcomm.h $SRC_DIR/include/libcomm $LIBPQ_WIN32_DIR/include/libcomm -# include/libpq -copy_file auth.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq -copy_file be-fsstubs.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq -copy_file cl_state.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq -copy_file crypt.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq -copy_file guc_vars.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq -copy_file hba.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq -copy_file ip.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq -copy_file libpq.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq -copy_file libpq-be.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq -copy_file libpq-events.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq -copy_file libpq-fe.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq -copy_file libpq-fs.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq -copy_file libpq-int.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq -copy_file md5.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq -copy_file pqcomm.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq -copy_file pqexpbuffer.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq -copy_file pqformat.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq -copy_file pqsignal.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq -copy_file sha2.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq -# include/mb -copy_file pg_wchar.h $SRC_DIR/include/mb $LIBPQ_WIN32_DIR/include/mb -# include/nodes -copy_file nodes.h $SRC_DIR/include/nodes $LIBPQ_WIN32_DIR/include/nodes -copy_file params.h $SRC_DIR/include/nodes $LIBPQ_WIN32_DIR/include/nodes -copy_file parsenodes_common.h $SRC_DIR/include/nodes $LIBPQ_WIN32_DIR/include/nodes -copy_file pg_list.h $SRC_DIR/include/nodes $LIBPQ_WIN32_DIR/include/nodes -copy_file primnodes.h $SRC_DIR/include/nodes $LIBPQ_WIN32_DIR/include/nodes -copy_file value.h $SRC_DIR/include/nodes $LIBPQ_WIN32_DIR/include/nodes -# include/parser -copy_file backslash_quotes.h $SRC_DIR/include/parser $LIBPQ_WIN32_DIR/include/parser -# include/port/win32 -copy_file dlfcn.h $SRC_DIR/include/port/win32 $LIBPQ_WIN32_DIR/include/port/win32 -copy_file grp.h $SRC_DIR/include/port/win32 $LIBPQ_WIN32_DIR/include/port/win32 -copy_file netdb.h $SRC_DIR/include/port/win32 $LIBPQ_WIN32_DIR/include/port/win32 -copy_file pwd.h $SRC_DIR/include/port/win32 $LIBPQ_WIN32_DIR/include/port/win32 -# include/port/win32/arpa -copy_file inet.h $SRC_DIR/include/port/win32/arpa $LIBPQ_WIN32_DIR/include/port/win32/arpa -# include/port/win32/netinet -copy_file in.h $SRC_DIR/include/port/win32/netinet $LIBPQ_WIN32_DIR/include/port/win32/netinet -# include/port/win32/sys -copy_file socket.h $SRC_DIR/include/port/win32/sys $LIBPQ_WIN32_DIR/include/port/win32/sys -copy_file wait.h $SRC_DIR/include/port/win32/sys $LIBPQ_WIN32_DIR/include/port/win32/sys -# include/port/win32_msvc -copy_file dirent.h $SRC_DIR/include/port/win32_msvc $LIBPQ_WIN32_DIR/include/port/win32_msvc -copy_file unistd.h $SRC_DIR/include/port/win32_msvc $LIBPQ_WIN32_DIR/include/port/win32_msvc -copy_file utime.h $SRC_DIR/include/port/win32_msvc $LIBPQ_WIN32_DIR/include/port/win32_msvc -# include/port/win32_msvc/sys -copy_file file.h $SRC_DIR/include/port/win32_msvc/sys $LIBPQ_WIN32_DIR/include/port/win32_msvc/sys -copy_file param.h $SRC_DIR/include/port/win32_msvc/sys $LIBPQ_WIN32_DIR/include/port/win32_msvc/sys -copy_file time.h $SRC_DIR/include/port/win32_msvc/sys $LIBPQ_WIN32_DIR/include/port/win32_msvc/sys -# include/storage -copy_file spin.h $SRC_DIR/include/storage $LIBPQ_WIN32_DIR/include/storage -# include/storage/lock -copy_file pg_sema.h $SRC_DIR/include/storage/lock $LIBPQ_WIN32_DIR/include/storage/lock -copy_file s_lock.h $SRC_DIR/include/storage/lock $LIBPQ_WIN32_DIR/include/storage/lock -# include/utils -copy_file be_module.h $SRC_DIR/include/utils $LIBPQ_WIN32_DIR/include/utils -copy_file elog.h $SRC_DIR/include/utils $LIBPQ_WIN32_DIR/include/utils -copy_file palloc.h $SRC_DIR/include/utils $LIBPQ_WIN32_DIR/include/utils -copy_file pg_crc.h $SRC_DIR/include/utils $LIBPQ_WIN32_DIR/include/utils -copy_file pg_crc_tables.h $SRC_DIR/include/utils $LIBPQ_WIN32_DIR/include/utils -copy_file syscall_lock.h $SRC_DIR/include/utils $LIBPQ_WIN32_DIR/include/utils -# copy from prepared directory -copy_file errcodes.h $PREPARED_DIR/include $LIBPQ_WIN32_DIR/include/utils # !!!! special source directory -} - -function copy_codes() -{ -# src/common/backend/libpq -copy_file ip.cpp $SRC_DIR/common/backend/libpq $LIBPQ_WIN32_DIR/src/common/backend/libpq -copy_file md5.cpp $SRC_DIR/common/backend/libpq $LIBPQ_WIN32_DIR/src/common/backend/libpq -copy_file sha2.cpp $SRC_DIR/common/backend/libpq $LIBPQ_WIN32_DIR/src/common/backend/libpq -# src/common/backend/utils/mb -copy_file encnames.cpp $SRC_DIR/common/backend/utils/mb $LIBPQ_WIN32_DIR/src/common/backend/utils/mb -copy_file wchar.cpp $SRC_DIR/common/backend/utils/mb $LIBPQ_WIN32_DIR/src/common/backend/utils/mb -# src/common/interfaces/libpq -copy_file fe-auth.cpp $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq -copy_file fe-auth.h $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq -copy_file fe-connect.cpp $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq -copy_file fe-exec.cpp $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq -copy_file fe-lobj.cpp $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq -copy_file fe-misc.cpp $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq -copy_file fe-print.cpp $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq -copy_file fe-protocol2.cpp $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq -copy_file fe-protocol3.cpp $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq -copy_file fe-secure.cpp $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq -copy_file libpq-events.cpp $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq -copy_file pqexpbuffer.cpp $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq -copy_file pqsignal.cpp $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq -copy_file pqsignal.h $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq -copy_file pthread-win32.cpp $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq -copy_file win32.cpp $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq -copy_file win32.h $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq -# copy interface definition file from prepared directory -copy_file libpqdll.def $PREPARED_DIR/include $LIBPQ_WIN32_DIR/src/common/interfaces/libpq -# src/common/interfaces/libpq/client_logic_cache -copy_file cache_loader.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_cache \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache -copy_file cache_loader.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_cache \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache -copy_file cached_column_manager.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_cache \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache -copy_file cached_global_setting.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_cache \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache -copy_file column_settings_list.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_cache \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache -copy_file global_settings_list.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_cache \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache -copy_file icached_columns.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_cache \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache -copy_file types_to_oid.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_cache \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache -copy_file cache_refresh_type.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_cache \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache -copy_file cached_column_setting.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_cache \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache -copy_file cached_setting.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_cache \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache -copy_file columns_list.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_cache \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache -copy_file icached_column.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_cache \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache -copy_file schemas_list.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_cache \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache -copy_file cached_column.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_cache \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache -copy_file cached_columns.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_cache \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache -copy_file column_hook_executors_list.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_cache \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache -copy_file dataTypes.def \ - $SRC_DIR/common/interfaces/libpq/client_logic_cache \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache -copy_file icached_column_manager.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_cache \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache -copy_file search_path_list.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_cache \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache -# src/common/interfaces/libpq/client_logic_common -copy_file client_logic_utils.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_common \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_common -copy_file col_full_name.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_common \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_common -copy_file cstring_oid_map.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_common \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_common -copy_file pg_client_logic_params.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_common \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_common -copy_file statement_data.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_common \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_common -copy_file table_full_name.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_common \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_common -# src/common/interfaces/libpq/client_logic_hooks -copy_file abstract_hook_executor.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_hooks \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_hooks -copy_file column_hook_executor.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_hooks \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_hooks -copy_file global_hook_executor.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_hooks \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_hooks -copy_file hook_resource.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_hooks \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_hooks -copy_file hooks_factory.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_hooks \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_hooks -copy_file hooks_manager.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_hooks \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_hooks -# src/common/interfaces/libpq/client_logic_processor -copy_file create_stmt_processor.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_processor \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_processor -copy_file prepared_statement.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_processor \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_processor -copy_file processor_utils.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_processor \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_processor -copy_file raw_values_cont.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_processor \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_processor -copy_file stmt_processor.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_processor \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_processor -copy_file where_clause_processor.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_processor \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_processor -copy_file encryption_pre_process.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_processor \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_processor -copy_file prepared_statements_list.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_processor \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_processor -copy_file raw_value.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_processor \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_processor -copy_file raw_values_list.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_processor \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_processor -copy_file values_processor.h \ - $SRC_DIR/common/interfaces/libpq/client_logic_processor \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_processor -# src/common/interfaces/libpq/frontend_parser -copy_file datatypes.h \ - $SRC_DIR/common/interfaces/libpq/frontend_parser \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/frontend_parser -copy_file Parser.h \ - $SRC_DIR/common/interfaces/libpq/frontend_parser \ - $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/frontend_parser -# src/common/port -copy_file chklocale.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port -copy_file dirent.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port -copy_file getaddrinfo.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port -copy_file gs_readdir.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port -copy_file gs_syscall_lock.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port -copy_file inet_net_ntop.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port -copy_file path.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port -copy_file pgsleep.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port -copy_file pthread-win32.h $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port -copy_file thread.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port -copy_file win32error.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port -copy_file cipher.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port -copy_file dirmod.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port -copy_file gs_env_r.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port -copy_file gs_strerror.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port -copy_file inet_aton.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port -copy_file noblock.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port -copy_file pgstrcasecmp.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port -copy_file strlcpy.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port -copy_file win32env.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port -copy_file win32setlocale.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port -# copy from prepared directory -copy_file pg_config_paths.h $PREPARED_DIR/include $LIBPQ_WIN32_DIR/src/common/port -} - -function copy_makefiles() -{ -copy_file Makefile $PREPARED_DIR $LIBPQ_WIN32_DIR -copy_file CMakeLists.txt $PREPARED_DIR $LIBPQ_WIN32_DIR -} - -function generate_libpq_export_files() -{ -copy_file auth.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq -copy_file be-fsstubs.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq -copy_file guc_vars.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq -copy_file libpq-be.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq -copy_file libpq-int.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq -copy_file pqformat.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq -copy_file be-fsstubs.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq -copy_file hba.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq -copy_file libpq-events.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq -copy_file md5.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq -copy_file pqsignal.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq -copy_file cl_state.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq -copy_file ip.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq -copy_file libpq-fe.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq -copy_file pqcomm.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq -copy_file sha2.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq -copy_file crypt.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq -copy_file libpq.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq -copy_file libpq-fs.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq -copy_file pqexpbuffer.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq -copy_file gs_thread.h $LIBPQ_WIN32_DIR/include $EXPORT_DIR/include -copy_file postgres_ext.h $LIBPQ_WIN32_DIR/include $EXPORT_DIR/include -copy_file gs_threadlocal.h $LIBPQ_WIN32_DIR/include $EXPORT_DIR/include - -if [ ! -d "$EXPORT_DIR"/lib ];then - $MD $EXPORT_DIR/lib -fi -} - -### function ### -function __main__() -{ -echo "Start." -echo -n "Step[1] - initialize libpq project directory for Windows ... " -init_win_project -echo "done." -echo -n "Step[2] - copy libpq header files ... " -copy_headers -echo "done." -echo -n "Step[3] - copy libpq source code files ... " -copy_codes -echo "done." -echo -n "Step[4] - prepare Makefile && CMakeLists.txt files for compilation ... " -copy_makefiles -echo "done." -echo -n "Step[5] - generate export directory and files ... " -generate_libpq_export_files -echo "done." -echo "Done." -} - -function __clean__() -{ -$RM $LIBPQ_WIN32_DIR/include -$RM $LIBPQ_WIN32_DIR/lib -$RM $LIBPQ_WIN32_DIR/libpq-export -$RM $LIBPQ_WIN32_DIR/src -$RM $LIBPQ_WIN32_DIR/CMakeLists.txt -$RM $LIBPQ_WIN32_DIR/Makefile -} -### main ### -if [ $# -eq 0 ];then -__main__ -exit 0 -fi -if [ $# -eq 1 -a "x$1" = "xclean" ];then -__clean__ -exit 0 -fi - -echo "Usage: \"sh $0\" for initialization or \"sh $0 clean\" for cleaning." +#!/bin/bash +MD="mkdir -p" +RM="rm -rf" +CP="cp -r" +# ROOT_DIR=$LIB_GAUSSDB_DIR +ROOT_DIR=$(pwd)/.. +SRC_DIR=$ROOT_DIR/../openGauss-server/src + +LIBPQ_WIN32_DIR=$ROOT_DIR/libpq-win32 +PREPARED_DIR=$LIBPQ_WIN32_DIR/ +EXPORT_DIR=$LIBPQ_WIN32_DIR/libpq-export +LIB_SECURITY_DIR=$ROOT_DIR/../Huawei_Secure_C_V100R001C01SPC010B002 + +### function ### +function copy_file() +{ +file=$1 #file name +src=$2 #source directory +dst=$3 #target directory +if [ ! -f "$src"/"$file" ];then + echo "Error: $src/$file doesn't exist, exit." + exit 1 +fi +if [ ! -d $dst ];then + $MD $dst +fi +#echo "Copy $src/$file to $dst/$file" +$CP $src/$file $dst/$file +} + +### function ### +function init_win_project() +{ + if [ ! -f "$PREPARED_DIR"/include/pg_config.h ]; then + echo "Error: Header file pg_config.h for Windows lost, exit." + exit 1 + fi + if [ ! -f "$PREPARED_DIR"/include/pg_config_os.h ]; then + echo "Error: Header file pg_config_os.h for Windows lost, exit." + exit 1 + fi + if [ ! -f "$PREPARED_DIR"/include/pg_config_paths.h ]; then + echo "Error: Header file pg_config_paths.h for Windows lost, exit." + exit 1 + fi + if [ ! -f "$PREPARED_DIR"/include/errcodes.h ]; then + echo "Error: Header file errcodes.h for Windows lost, exit." + exit 1 + fi + if [ ! -f "$PREPARED_DIR"/include/libpqdll.def ]; then + echo "Error: Interface definition file libpqdll.def for Windows lost, exit." + exit 1 + fi + if [ ! -f "$PREPARED_DIR"/Makefile ];then + echo "Error: Makefile for MinGW complier lost, exit." + exit 1 + fi + if [ ! -f "$PREPARED_DIR"/CMakeLists.txt ];then + echo "Error: CMakeLists.txt for CMake && MinGW complier lost, exit." + exit 1 + fi +# $RM $LIBPQ_WIN32_DIR/include + $RM $LIBPQ_WIN32_DIR/src + if [ ! -d "$LIBPQ_WIN32_DIR"/lib ];then + $MD $LIBPQ_WIN32_DIR/lib + fi +} + +### function ### +function copy_headers() +{ # copy header files +# copy form prepared directory +copy_file securec.h $LIB_SECURITY_DIR/include $LIBPQ_WIN32_DIR/include +copy_file securectype.h $LIB_SECURITY_DIR/include $LIBPQ_WIN32_DIR/include +#copy_file pg_config.h $PREPARED_DIR $LIBPQ_WIN32_DIR/include +#copy_file pg_config_os.h $PREPARED_DIR $LIBPQ_WIN32_DIR/include +# include +copy_file c.h $SRC_DIR/include $LIBPQ_WIN32_DIR/include +copy_file cipher.h $SRC_DIR/include $LIBPQ_WIN32_DIR/include +copy_file datatypes.h $SRC_DIR/include $LIBPQ_WIN32_DIR/include +copy_file getaddrinfo.h $SRC_DIR/include $LIBPQ_WIN32_DIR/include +copy_file gs_thread.h $SRC_DIR/include $LIBPQ_WIN32_DIR/include +copy_file gs_threadlocal.h $SRC_DIR/include $LIBPQ_WIN32_DIR/include +copy_file pg_config_manual.h $SRC_DIR/include $LIBPQ_WIN32_DIR/include +copy_file port.h $SRC_DIR/include $LIBPQ_WIN32_DIR/include +copy_file postgres.h $SRC_DIR/include $LIBPQ_WIN32_DIR/include +copy_file postgres_ext.h $SRC_DIR/include $LIBPQ_WIN32_DIR/include +copy_file postgres_fe.h $SRC_DIR/include $LIBPQ_WIN32_DIR/include +copy_file securec_check.h $SRC_DIR/include $LIBPQ_WIN32_DIR/include +# include/access +copy_file attnum.h $SRC_DIR/include/access $LIBPQ_WIN32_DIR/include/access +copy_file tupdesc.h $SRC_DIR/include/access $LIBPQ_WIN32_DIR/include/access +# include/catlog +copy_file genbki.h $SRC_DIR/include/catalog $LIBPQ_WIN32_DIR/include/catalog +copy_file pg_attribute.h $SRC_DIR/include/catalog $LIBPQ_WIN32_DIR/include/catalog +# include/client_logic +copy_file cache.h $SRC_DIR/include/client_logic $LIBPQ_WIN32_DIR/include/client_logic +copy_file client_logic.h $SRC_DIR/include/client_logic $LIBPQ_WIN32_DIR/include/client_logic +copy_file client_logic_enums.h $SRC_DIR/include/client_logic $LIBPQ_WIN32_DIR/include/client_logic +copy_file cstrings_map.h $SRC_DIR/include/client_logic $LIBPQ_WIN32_DIR/include/client_logic +# include/gstrace +copy_file gstrace_infra.h $SRC_DIR/include/gstrace $LIBPQ_WIN32_DIR/include/gstrace +copy_file gstrace_infra_int.h $SRC_DIR/include/gstrace $LIBPQ_WIN32_DIR/include/gstrace +copy_file gstrace_tool.h $SRC_DIR/include/gstrace $LIBPQ_WIN32_DIR/include/gstrace +#include/lib +copy_file stringinfo.h $SRC_DIR/include/lib $LIBPQ_WIN32_DIR/include/lib +# include/libcomm +#copy_file libcomm.h $SRC_DIR/include/libcomm $LIBPQ_WIN32_DIR/include/libcomm +# include/libpq +copy_file auth.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq +copy_file be-fsstubs.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq +copy_file cl_state.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq +copy_file crypt.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq +copy_file guc_vars.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq +copy_file hba.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq +copy_file ip.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq +copy_file libpq.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq +copy_file libpq-be.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq +copy_file libpq-events.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq +copy_file libpq-fe.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq +copy_file libpq-fs.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq +copy_file libpq-int.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq +copy_file md5.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq +copy_file pqcomm.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq +copy_file pqexpbuffer.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq +copy_file pqformat.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq +copy_file pqsignal.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq +copy_file sha2.h $SRC_DIR/include/libpq $LIBPQ_WIN32_DIR/include/libpq +# include/mb +copy_file pg_wchar.h $SRC_DIR/include/mb $LIBPQ_WIN32_DIR/include/mb +# include/nodes +copy_file nodes.h $SRC_DIR/include/nodes $LIBPQ_WIN32_DIR/include/nodes +copy_file params.h $SRC_DIR/include/nodes $LIBPQ_WIN32_DIR/include/nodes +copy_file parsenodes_common.h $SRC_DIR/include/nodes $LIBPQ_WIN32_DIR/include/nodes +copy_file pg_list.h $SRC_DIR/include/nodes $LIBPQ_WIN32_DIR/include/nodes +copy_file primnodes.h $SRC_DIR/include/nodes $LIBPQ_WIN32_DIR/include/nodes +copy_file value.h $SRC_DIR/include/nodes $LIBPQ_WIN32_DIR/include/nodes +# include/parser +copy_file backslash_quotes.h $SRC_DIR/include/parser $LIBPQ_WIN32_DIR/include/parser +# include/port/win32 +copy_file dlfcn.h $SRC_DIR/include/port/win32 $LIBPQ_WIN32_DIR/include/port/win32 +copy_file grp.h $SRC_DIR/include/port/win32 $LIBPQ_WIN32_DIR/include/port/win32 +copy_file netdb.h $SRC_DIR/include/port/win32 $LIBPQ_WIN32_DIR/include/port/win32 +copy_file pwd.h $SRC_DIR/include/port/win32 $LIBPQ_WIN32_DIR/include/port/win32 +# include/port/win32/arpa +copy_file inet.h $SRC_DIR/include/port/win32/arpa $LIBPQ_WIN32_DIR/include/port/win32/arpa +# include/port/win32/netinet +copy_file in.h $SRC_DIR/include/port/win32/netinet $LIBPQ_WIN32_DIR/include/port/win32/netinet +# include/port/win32/sys +copy_file socket.h $SRC_DIR/include/port/win32/sys $LIBPQ_WIN32_DIR/include/port/win32/sys +copy_file wait.h $SRC_DIR/include/port/win32/sys $LIBPQ_WIN32_DIR/include/port/win32/sys +# include/port/win32_msvc +copy_file dirent.h $SRC_DIR/include/port/win32_msvc $LIBPQ_WIN32_DIR/include/port/win32_msvc +copy_file unistd.h $SRC_DIR/include/port/win32_msvc $LIBPQ_WIN32_DIR/include/port/win32_msvc +copy_file utime.h $SRC_DIR/include/port/win32_msvc $LIBPQ_WIN32_DIR/include/port/win32_msvc +# include/port/win32_msvc/sys +copy_file file.h $SRC_DIR/include/port/win32_msvc/sys $LIBPQ_WIN32_DIR/include/port/win32_msvc/sys +copy_file param.h $SRC_DIR/include/port/win32_msvc/sys $LIBPQ_WIN32_DIR/include/port/win32_msvc/sys +copy_file time.h $SRC_DIR/include/port/win32_msvc/sys $LIBPQ_WIN32_DIR/include/port/win32_msvc/sys +# include/storage +copy_file spin.h $SRC_DIR/include/storage $LIBPQ_WIN32_DIR/include/storage +# include/storage/lock +copy_file pg_sema.h $SRC_DIR/include/storage/lock $LIBPQ_WIN32_DIR/include/storage/lock +copy_file s_lock.h $SRC_DIR/include/storage/lock $LIBPQ_WIN32_DIR/include/storage/lock +# include/utils +copy_file be_module.h $SRC_DIR/include/utils $LIBPQ_WIN32_DIR/include/utils +copy_file elog.h $SRC_DIR/include/utils $LIBPQ_WIN32_DIR/include/utils +copy_file palloc.h $SRC_DIR/include/utils $LIBPQ_WIN32_DIR/include/utils +copy_file pg_crc.h $SRC_DIR/include/utils $LIBPQ_WIN32_DIR/include/utils +copy_file pg_crc_tables.h $SRC_DIR/include/utils $LIBPQ_WIN32_DIR/include/utils +copy_file syscall_lock.h $SRC_DIR/include/utils $LIBPQ_WIN32_DIR/include/utils +# copy from prepared directory +copy_file errcodes.h $PREPARED_DIR/include $LIBPQ_WIN32_DIR/include/utils # !!!! special source directory +} + +function copy_codes() +{ +# src/common/backend/libpq +copy_file ip.cpp $SRC_DIR/common/backend/libpq $LIBPQ_WIN32_DIR/src/common/backend/libpq +copy_file md5.cpp $SRC_DIR/common/backend/libpq $LIBPQ_WIN32_DIR/src/common/backend/libpq +copy_file sha2.cpp $SRC_DIR/common/backend/libpq $LIBPQ_WIN32_DIR/src/common/backend/libpq +# src/common/backend/utils/mb +copy_file encnames.cpp $SRC_DIR/common/backend/utils/mb $LIBPQ_WIN32_DIR/src/common/backend/utils/mb +copy_file wchar.cpp $SRC_DIR/common/backend/utils/mb $LIBPQ_WIN32_DIR/src/common/backend/utils/mb +# src/common/interfaces/libpq +copy_file fe-auth.cpp $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq +copy_file fe-auth.h $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq +copy_file fe-connect.cpp $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq +copy_file fe-exec.cpp $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq +copy_file fe-lobj.cpp $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq +copy_file fe-misc.cpp $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq +copy_file fe-print.cpp $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq +copy_file fe-protocol2.cpp $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq +copy_file fe-protocol3.cpp $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq +copy_file fe-secure.cpp $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq +copy_file libpq-events.cpp $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq +copy_file pqexpbuffer.cpp $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq +copy_file pqsignal.cpp $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq +copy_file pqsignal.h $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq +copy_file pthread-win32.cpp $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq +copy_file win32.cpp $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq +copy_file win32.h $SRC_DIR/common/interfaces/libpq $LIBPQ_WIN32_DIR/src/common/interfaces/libpq +# copy interface definition file from prepared directory +copy_file libpqdll.def $PREPARED_DIR/include $LIBPQ_WIN32_DIR/src/common/interfaces/libpq +# src/common/interfaces/libpq/client_logic_cache +copy_file cache_loader.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_cache \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache +copy_file cache_loader.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_cache \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache +copy_file cached_column_manager.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_cache \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache +copy_file cached_global_setting.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_cache \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache +copy_file column_settings_list.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_cache \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache +copy_file global_settings_list.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_cache \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache +copy_file icached_columns.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_cache \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache +copy_file types_to_oid.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_cache \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache +copy_file cache_refresh_type.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_cache \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache +copy_file cached_column_setting.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_cache \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache +copy_file cached_setting.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_cache \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache +copy_file columns_list.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_cache \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache +copy_file icached_column.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_cache \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache +copy_file schemas_list.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_cache \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache +copy_file cached_column.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_cache \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache +copy_file cached_columns.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_cache \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache +copy_file column_hook_executors_list.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_cache \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache +copy_file dataTypes.def \ + $SRC_DIR/common/interfaces/libpq/client_logic_cache \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache +copy_file icached_column_manager.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_cache \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache +copy_file search_path_list.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_cache \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_cache +# src/common/interfaces/libpq/client_logic_common +copy_file client_logic_utils.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_common \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_common +copy_file col_full_name.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_common \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_common +copy_file cstring_oid_map.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_common \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_common +copy_file pg_client_logic_params.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_common \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_common +copy_file statement_data.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_common \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_common +copy_file table_full_name.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_common \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_common +# src/common/interfaces/libpq/client_logic_hooks +copy_file abstract_hook_executor.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_hooks \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_hooks +copy_file column_hook_executor.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_hooks \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_hooks +copy_file global_hook_executor.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_hooks \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_hooks +copy_file hook_resource.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_hooks \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_hooks +copy_file hooks_factory.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_hooks \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_hooks +copy_file hooks_manager.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_hooks \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_hooks +# src/common/interfaces/libpq/client_logic_processor +copy_file create_stmt_processor.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_processor \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_processor +copy_file prepared_statement.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_processor \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_processor +copy_file processor_utils.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_processor \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_processor +copy_file raw_values_cont.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_processor \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_processor +copy_file stmt_processor.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_processor \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_processor +copy_file where_clause_processor.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_processor \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_processor +copy_file encryption_pre_process.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_processor \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_processor +copy_file prepared_statements_list.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_processor \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_processor +copy_file raw_value.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_processor \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_processor +copy_file raw_values_list.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_processor \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_processor +copy_file values_processor.h \ + $SRC_DIR/common/interfaces/libpq/client_logic_processor \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/client_logic_processor +# src/common/interfaces/libpq/frontend_parser +copy_file datatypes.h \ + $SRC_DIR/common/interfaces/libpq/frontend_parser \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/frontend_parser +copy_file Parser.h \ + $SRC_DIR/common/interfaces/libpq/frontend_parser \ + $LIBPQ_WIN32_DIR/src/common/interfaces/libpq/frontend_parser +# src/common/port +copy_file chklocale.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port +copy_file dirent.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port +copy_file getaddrinfo.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port +copy_file gs_readdir.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port +copy_file gs_syscall_lock.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port +copy_file inet_net_ntop.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port +copy_file path.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port +copy_file pgsleep.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port +copy_file pthread-win32.h $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port +copy_file thread.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port +copy_file win32error.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port +copy_file cipher.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port +copy_file dirmod.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port +copy_file gs_env_r.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port +copy_file gs_strerror.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port +copy_file inet_aton.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port +copy_file noblock.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port +copy_file pgstrcasecmp.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port +copy_file strlcpy.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port +copy_file win32env.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port +copy_file win32setlocale.cpp $SRC_DIR/common/port $LIBPQ_WIN32_DIR/src/common/port +# copy from prepared directory +copy_file pg_config_paths.h $PREPARED_DIR/include $LIBPQ_WIN32_DIR/src/common/port +} + +function copy_makefiles() +{ +copy_file Makefile $PREPARED_DIR $LIBPQ_WIN32_DIR +copy_file CMakeLists.txt $PREPARED_DIR $LIBPQ_WIN32_DIR +} + +function generate_libpq_export_files() +{ +copy_file auth.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq +copy_file be-fsstubs.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq +copy_file guc_vars.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq +copy_file libpq-be.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq +copy_file libpq-int.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq +copy_file pqformat.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq +copy_file be-fsstubs.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq +copy_file hba.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq +copy_file libpq-events.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq +copy_file md5.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq +copy_file pqsignal.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq +copy_file cl_state.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq +copy_file ip.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq +copy_file libpq-fe.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq +copy_file pqcomm.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq +copy_file sha2.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq +copy_file crypt.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq +copy_file libpq.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq +copy_file libpq-fs.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq +copy_file pqexpbuffer.h $LIBPQ_WIN32_DIR/include/libpq $EXPORT_DIR/include/libpq +copy_file gs_thread.h $LIBPQ_WIN32_DIR/include $EXPORT_DIR/include +copy_file postgres_ext.h $LIBPQ_WIN32_DIR/include $EXPORT_DIR/include +copy_file gs_threadlocal.h $LIBPQ_WIN32_DIR/include $EXPORT_DIR/include + +if [ ! -d "$EXPORT_DIR"/lib ];then + $MD $EXPORT_DIR/lib +fi +} + +### function ### +function __main__() +{ +echo "Start." +echo -n "Step[1] - initialize libpq project directory for Windows ... " +init_win_project +echo "done." +echo -n "Step[2] - copy libpq header files ... " +copy_headers +echo "done." +echo -n "Step[3] - copy libpq source code files ... " +copy_codes +echo "done." +echo -n "Step[4] - prepare Makefile && CMakeLists.txt files for compilation ... " +copy_makefiles +echo "done." +echo -n "Step[5] - generate export directory and files ... " +generate_libpq_export_files +echo "done." +echo "Done." +} + +function __clean__() +{ +$RM $LIBPQ_WIN32_DIR/include +$RM $LIBPQ_WIN32_DIR/lib +$RM $LIBPQ_WIN32_DIR/libpq-export +$RM $LIBPQ_WIN32_DIR/src +$RM $LIBPQ_WIN32_DIR/CMakeLists.txt +$RM $LIBPQ_WIN32_DIR/Makefile +} +### main ### +if [ $# -eq 0 ];then +__main__ +exit 0 +fi +if [ $# -eq 1 -a "x$1" = "xclean" ];then +__clean__ +exit 0 +fi + +echo "Usage: \"sh $0\" for initialization or \"sh $0 clean\" for cleaning." diff --git a/windows/odbc-win32编译指导.assets/image-20230321195408892.png b/windows/odbc-win32编译指导.assets/image-20230321195408892.png new file mode 100644 index 0000000..355d163 Binary files /dev/null and b/windows/odbc-win32编译指导.assets/image-20230321195408892.png differ diff --git a/windows/odbc-win32编译指导.assets/image-20230321200733264.png b/windows/odbc-win32编译指导.assets/image-20230321200733264.png new file mode 100644 index 0000000..9a36de1 Binary files /dev/null and b/windows/odbc-win32编译指导.assets/image-20230321200733264.png differ diff --git a/windows/odbc-win32编译指导.assets/image-20230322095212270.png b/windows/odbc-win32编译指导.assets/image-20230322095212270.png new file mode 100644 index 0000000..69436a7 Binary files /dev/null and b/windows/odbc-win32编译指导.assets/image-20230322095212270.png differ diff --git a/windows/odbc-win32编译指导.assets/image-20230322095314026.png b/windows/odbc-win32编译指导.assets/image-20230322095314026.png new file mode 100644 index 0000000..d87bc40 Binary files /dev/null and b/windows/odbc-win32编译指导.assets/image-20230322095314026.png differ diff --git a/windows/odbc-win32编译指导.assets/image-20230322095337027.png b/windows/odbc-win32编译指导.assets/image-20230322095337027.png new file mode 100644 index 0000000..d87bc40 Binary files /dev/null and b/windows/odbc-win32编译指导.assets/image-20230322095337027.png differ diff --git a/windows/odbc-win32编译指导.assets/image-20230322115658122.png b/windows/odbc-win32编译指导.assets/image-20230322115658122.png new file mode 100644 index 0000000..81c92c2 Binary files /dev/null and b/windows/odbc-win32编译指导.assets/image-20230322115658122.png differ diff --git a/windows/odbc-win32编译指导.assets/image-20230322115736573.png b/windows/odbc-win32编译指导.assets/image-20230322115736573.png new file mode 100644 index 0000000..7e70171 Binary files /dev/null and b/windows/odbc-win32编译指导.assets/image-20230322115736573.png differ diff --git a/windows/odbc-win32编译指导.assets/image-20230322153805967.png b/windows/odbc-win32编译指导.assets/image-20230322153805967.png new file mode 100644 index 0000000..ce8aad7 Binary files /dev/null and b/windows/odbc-win32编译指导.assets/image-20230322153805967.png differ diff --git a/windows/odbc-win32编译指导.assets/image-20230322153855140.png b/windows/odbc-win32编译指导.assets/image-20230322153855140.png new file mode 100644 index 0000000..1dc6d5b Binary files /dev/null and b/windows/odbc-win32编译指导.assets/image-20230322153855140.png differ diff --git a/windows/odbc-win32编译指导.assets/image-20230322155020404.png b/windows/odbc-win32编译指导.assets/image-20230322155020404.png new file mode 100644 index 0000000..bcc526f Binary files /dev/null and b/windows/odbc-win32编译指导.assets/image-20230322155020404.png differ diff --git a/windows/odbc-win32编译指导.assets/image-20230322155029546.png b/windows/odbc-win32编译指导.assets/image-20230322155029546.png new file mode 100644 index 0000000..bcc526f Binary files /dev/null and b/windows/odbc-win32编译指导.assets/image-20230322155029546.png differ diff --git a/windows/odbc-win32编译指导.assets/image-20230322155042421.png b/windows/odbc-win32编译指导.assets/image-20230322155042421.png new file mode 100644 index 0000000..bcc526f Binary files /dev/null and b/windows/odbc-win32编译指导.assets/image-20230322155042421.png differ diff --git a/windows/odbc-win32编译指导.assets/image-20230322161142228.png b/windows/odbc-win32编译指导.assets/image-20230322161142228.png new file mode 100644 index 0000000..8334521 Binary files /dev/null and b/windows/odbc-win32编译指导.assets/image-20230322161142228.png differ diff --git a/windows/odbc-win32编译指导.assets/image-20230322161255741.png b/windows/odbc-win32编译指导.assets/image-20230322161255741.png new file mode 100644 index 0000000..b4c3dbe Binary files /dev/null and b/windows/odbc-win32编译指导.assets/image-20230322161255741.png differ diff --git a/windows/odbc-win32编译指导.assets/image-20230322161333409.png b/windows/odbc-win32编译指导.assets/image-20230322161333409.png new file mode 100644 index 0000000..707d8a1 Binary files /dev/null and b/windows/odbc-win32编译指导.assets/image-20230322161333409.png differ diff --git a/windows/odbc-win32编译指导.assets/image-20230322161444780.png b/windows/odbc-win32编译指导.assets/image-20230322161444780.png new file mode 100644 index 0000000..afbfc7c Binary files /dev/null and b/windows/odbc-win32编译指导.assets/image-20230322161444780.png differ diff --git a/windows/odbc-win32编译指导.assets/image-20230322161457883.png b/windows/odbc-win32编译指导.assets/image-20230322161457883.png new file mode 100644 index 0000000..c83114c Binary files /dev/null and b/windows/odbc-win32编译指导.assets/image-20230322161457883.png differ diff --git a/windows/odbc-win32编译指导.assets/image-20230322161634102.png b/windows/odbc-win32编译指导.assets/image-20230322161634102.png new file mode 100644 index 0000000..1a48f6d Binary files /dev/null and b/windows/odbc-win32编译指导.assets/image-20230322161634102.png differ diff --git a/windows/odbc-win32编译指导.assets/image-20230322162117798.png b/windows/odbc-win32编译指导.assets/image-20230322162117798.png new file mode 100644 index 0000000..1d5b29f Binary files /dev/null and b/windows/odbc-win32编译指导.assets/image-20230322162117798.png differ diff --git a/windows/odbc-win32编译指导.assets/image-20230322162151602.png b/windows/odbc-win32编译指导.assets/image-20230322162151602.png new file mode 100644 index 0000000..8a7a99f Binary files /dev/null and b/windows/odbc-win32编译指导.assets/image-20230322162151602.png differ diff --git a/windows/odbc-win32编译指导.assets/image-20230322162318583.png b/windows/odbc-win32编译指导.assets/image-20230322162318583.png new file mode 100644 index 0000000..3ddcd2f Binary files /dev/null and b/windows/odbc-win32编译指导.assets/image-20230322162318583.png differ diff --git a/windows/odbc-win32编译指导.assets/image-20230322164631029.png b/windows/odbc-win32编译指导.assets/image-20230322164631029.png new file mode 100644 index 0000000..0c62d75 Binary files /dev/null and b/windows/odbc-win32编译指导.assets/image-20230322164631029.png differ diff --git a/windows/odbc-win32编译指导.assets/image-20230322164651923.png b/windows/odbc-win32编译指导.assets/image-20230322164651923.png new file mode 100644 index 0000000..dffcdf3 Binary files /dev/null and b/windows/odbc-win32编译指导.assets/image-20230322164651923.png differ diff --git a/windows/odbc-win32编译指导.md b/windows/odbc-win32编译指导.md new file mode 100644 index 0000000..a02658d --- /dev/null +++ b/windows/odbc-win32编译指导.md @@ -0,0 +1,302 @@ +# odbc-win32编译指导 + +## 1、下载并配置环境变量 + +odbc编译windows32位软件包,需要下面的依赖 + +### 1.1下载下面的软件包 + +| 下载的软件包 | 官方地址 | +| :----------- | :----------------------------------------------------------- | +| msys2 | https://www.msys2.org/ | +| mingw32 | https://udomain.dl.sourceforge.net/project/mingw-w64/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/8.1.0/threads-posix/sjlj/i686-8.1.0-release-posix-sjlj-rt_v6-rev0.7z | +| cmake | https://cmake.org/download/ | +| nsis | https://nsis.sourceforge.io/Download | +| 7zip | https://7-zip.org/download.html | + + + +### 1.2配置环境变量 + +image-20230321200733264 + +**注意:** + +- 安装完msys2和mingw32,将mingw32目录覆盖msys2目录下的mingw32目录,并将覆盖后的mingw32/bin目录下mingw32-make.exe重命名make.exe +- 修改msys2的镜像源,可以参考[华为镜像源](https://mirrors.huaweicloud.com/home) + +image-20230321195408892 + +- 配置完镜像源,打开msys2控制台,下载一些必要的环境依赖 + +```shell +# 更新软件包数据 +pacman -Syu +# 下载一些必要的软件 +pacman -S --needed base-devel +``` + + + +### 1.3验证环境变量 + +```shell +验证perl -v,make -v, cmake -version, gcc -v, g++ -v, sed是否存在 +``` + + + +## 2、准备源代码 + +odbc编译windows32需要的代码有,openssl,安全函数,openGauss-connector-odbc,openGauss-server;其中openssl和安全函数都在社区的三方库中 + +| 代码名称 | 代码仓库 | +| ------------------------ | ------------------------------------------------------------ | +| openssl | https://gitee.com/opengauss/openGauss-third_party/blob/master/dependency/openssl/openssl-OpenSSL_1_1_1n.tar.gz | +| 安全函数 | https://gitee.com/opengauss/openGauss-third_party/raw/master/platform/Huawei_Secure_C/Huawei_Secure_C_V100R001C01SPC010B002.zip | +| openGauss-connector-odbc | https://gitee.com/opengauss/openGauss-connector-odbc.git | +| openGauss-server | https://gitee.com/opengauss/openGauss-server.git | + + + +## 3、编译odbc + +首先先将上面的源代码,统一放到一个文件夹下,这样是为了方便规划,比如我这边是将上面4个源代码,放到window_odbc/win32/open_source路径下 + +![image-20230322095314026](odbc-win32%E7%BC%96%E8%AF%91%E6%8C%87%E5%AF%BC.assets/image-20230322095314026.png) + +**脚本介绍** + +在openGauss-connector-odbc\windows\build路径下有两个脚本,一个是openssl.bat编译openssl,一个是odbc.bat编译odbc + +odbc.bat脚本的最开始,是一些环境变量和代码的路径,需要根据自己实际路径配置下 + +```shell +set WD=%__CD__% +set LIB_SECURITY_DIR=D:\windows_odbc\win32\open_source\Huawei_Secure_C_V100R001C01SPC010B002 +set LIB_GAUSSDB_DIR=D:\windows_odbc\win32\open_source\openGauss-server +set LIB_ODBC_DIR=D:\windows_odbc\win32\open_source\openGauss-connector-odbc + +set MINGW_DIR=D:\buildtools\mingw-8.1.0\msys64\mingw32 +set CMAKE_DIR=D:\env\cmake-3.26 +REM openss compiled direction +set OPENSSL_DIR=D:\windows_odbc\win32\open_source\output\openssl-win32 + +set p7zip=D:\install\7-Zip +set OUTPUT_DIR=%LIB_ODBC_DIR%/odbc_output +``` + + + +### 3.1编译openssl + +在odbc.bat脚本中调用openssl.bat编译openssl + +```shell +if not exist %OPENSSL_DIR%/libcrypto-1_1.dll ( + cd %WD% + REM Build openssl + call openssl.bat +) +``` + +openssl.bat脚本的内容 + +```shell +cd %WD% +REM build openssl +cd %OPENSSL_DIR% +REM openssl config +%MSYS_SHELL% -defterm -mingw32 -no-start -full-path -here -c './Configure ^ +--prefix=$PWD/openssl-win32 ^ +shared mingw no-tests; make -j20; make install -j20; ^ +cp $PWD/openssl-win32/bin/libssl-1_1.dll $PWD/openssl-win32; ^ +cp $PWD/openssl-win32/bin/libcrypto-1_1.dll $PWD/openssl-win32; ^ +rm -rf $PWD/../../output; ^ +mkdir -p $PWD/../../output; mv $PWD/openssl-win32 $PWD/../../output/.' ^ +``` + + + +**编译结果** + +![image-20230322115658122](odbc-win32%E7%BC%96%E8%AF%91%E6%8C%87%E5%AF%BC.assets/image-20230322115658122.png) + +同时在window_odbc/win32/open_source/output路径中也会生成openssl-win32的文件夹 + +![image-20230322115736573](odbc-win32%E7%BC%96%E8%AF%91%E6%8C%87%E5%AF%BC.assets/image-20230322115736573.png) + +### 3.2编译libsecurec.lib + +```shell +cd %WD% +REM Build libsecurec.lib +cp win32/libpq/CMakeLists-huawei-securec.txt %LIB_SECURITY_DIR%/CMakeLists.txt +cd %LIB_SECURITY_DIR% +rm -rf build +mkdir build +cd build +cmake -DMINGW_DIR="%MINGW_DIR%" -D"CMAKE_MAKE_PROGRAM:PATH=%MINGW_DIR%/bin/make.exe" -G "MinGW Makefiles" .. +make +``` + + + +**编译结果** + +![image-20230322153805967](odbc-win32%E7%BC%96%E8%AF%91%E6%8C%87%E5%AF%BC.assets/image-20230322153805967.png) + + + +安全函数编译出的libsecurec.lib会在安全函数的output目录下 + +![image-20230322153855140](odbc-win32%E7%BC%96%E8%AF%91%E6%8C%87%E5%AF%BC.assets/image-20230322153855140.png) + +### 3.3编译libpq.lib + +```shell +cd %WD% +REM Build libpq.lib +rm -rf %LIB_GAUSSDB_DIR%/libpq-win32 +cp -r win32/libpq %LIB_GAUSSDB_DIR%/libpq-win32 +cd %LIB_GAUSSDB_DIR%/libpq-win32 +cp -r %LIB_SECURITY_DIR%/output ./lib +bash %LIB_GAUSSDB_DIR%/libpq-win32/project.sh +rm -rf build +mkdir build +cd build +cmake -DMINGW_DIR="%MINGW_DIR%" -DOPENSSL_DIR="%OPENSSL_DIR%" -D"CMAKE_MAKE_PROGRAM:PATH=%MINGW_DIR%/bin/make.exe" -G "MinGW Makefiles" .. +make +``` + + + +注意: + +- 在编译libpq.lib的时候,要确保project.sh执行成功,sh可以在git控制台执行 + +![image-20230322155042421](odbc-win32%E7%BC%96%E8%AF%91%E6%8C%87%E5%AF%BC.assets/image-20230322155042421.png) + +- 修改dirmod.cpp + +```c +第45行注释掉 // #include "storage/file/fio_device.h" + +在87行增加 +bool is_file_delete(int err) +{ + return (err == ENOENT); +} +``` + +- 修改gs_readdir.cpp + +```c +第31行注释掉 // #include "storage/file/fio_device.h" +``` + + + +**编译结果** + +如果遇到下面的问题,说明是openssl没有找到 + +![image-20230322161142228](odbc-win32%E7%BC%96%E8%AF%91%E6%8C%87%E5%AF%BC.assets/image-20230322161142228.png) + +解决方法:手动修改D:\windows_odbc\win32\open_source\openGauss-server\libpq-win32\build目录下的CMakeCache.txt文件 + +![image-20230322161255741](odbc-win32%E7%BC%96%E8%AF%91%E6%8C%87%E5%AF%BC.assets/image-20230322161255741.png) + +修改LIB_CRYPTO和LIB_SSL的环境依赖 + +![image-20230322161333409](odbc-win32%E7%BC%96%E8%AF%91%E6%8C%87%E5%AF%BC.assets/image-20230322161333409.png) + +重新make + +![image-20230322161444780](odbc-win32%E7%BC%96%E8%AF%91%E6%8C%87%E5%AF%BC.assets/image-20230322161444780.png) + + + +![image-20230322161457883](odbc-win32%E7%BC%96%E8%AF%91%E6%8C%87%E5%AF%BC.assets/image-20230322161457883.png) + +### 3.4编译psqlodbc35w.lib + +```shell +cd %WD% +REM Build psqlodbc35w.lib +cd %LIB_ODBC_DIR% +rm -rf libpq +cp -r %LIB_GAUSSDB_DIR%/libpq-win32/libpq-export ./libpq +cp -r %LIB_GAUSSDB_DIR%/libpq-win32/lib/* ./libpq/lib +cp -r %LIB_GAUSSDB_DIR%/libpq-win32/output/libpq.lib ./libpq/lib +rm -rf build +mkdir build +cd build +cmake -DMINGW_DIR="%MINGW_DIR%" -DOPENSSL_DIR="%OPENSSL_DIR%" -D"CMAKE_MAKE_PROGRAM:PATH=%MINGW_DIR%/bin/make.exe" -G "MinGW Makefiles" .. +make +``` + + + +**编译结果** + +如果遇到下面的问题,这说明还是环境依赖找不到的原因,和编译libpq.lib问题一样的,只需要修改CMakeCache.txt文件对应的环境依赖,参考libpq.lib的修改 + +![image-20230322161634102](odbc-win32%E7%BC%96%E8%AF%91%E6%8C%87%E5%AF%BC.assets/image-20230322161634102.png) + + + +输出正常结果 + +![image-20230322162117798](odbc-win32%E7%BC%96%E8%AF%91%E6%8C%87%E5%AF%BC.assets/image-20230322162117798.png) + +![image-20230322162151602](odbc-win32%E7%BC%96%E8%AF%91%E6%8C%87%E5%AF%BC.assets/image-20230322162151602.png) + + + +### 3.5制作odbc安装包 + +```shell +cd %WD% +REM Build psqlodbc.exe +cd psqlodbc-installer +rm -rf win32_dll +mkdir win32_dll +cp %LIB_ODBC_DIR%/output/psqlodbc35w.dll ./win32_dll +cp "%OPENSSL_DIR%"/libssl-1_1.dll ./win32_dll +cp "%OPENSSL_DIR%"/libcrypto-1_1.dll ./win32_dll +makensis odbc-installer.nsi +``` + + + +**编译结果** + +![image-20230322162318583](odbc-win32%E7%BC%96%E8%AF%91%E6%8C%87%E5%AF%BC.assets/image-20230322162318583.png) + + + +### 3.6将odbc打包成tar.gz + +```shell +cd %WD% +rm -rf odbc_output +mkdir odbc_output +cp psqlodbc-installer/psqlodbc.exe odbc_output +rm -rf psqlodbc-installer/psqlodbc.exe + +cd odbc_output +%p7zip%\7z.exe a -tgzip openGauss-5.0.0-ODBC-windows.tar.gz ./* + +rm -rf "%OUTPUT_DIR%" +mkdir "%OUTPUT_DIR%" +cp -r openGauss-5.0.0-ODBC-windows.tar.gz %OUTPUT_DIR% +``` + + + +**编译结果** + +![image-20230322164651923](odbc-win32%E7%BC%96%E8%AF%91%E6%8C%87%E5%AF%BC.assets/image-20230322164651923.png) + +![image-20230322164631029](odbc-win32%E7%BC%96%E8%AF%91%E6%8C%87%E5%AF%BC.assets/image-20230322164631029.png) \ No newline at end of file diff --git a/windows/odbc-测试.assets/image-20230322211202304.png b/windows/odbc-测试.assets/image-20230322211202304.png new file mode 100644 index 0000000..5d59032 Binary files /dev/null and b/windows/odbc-测试.assets/image-20230322211202304.png differ diff --git a/windows/odbc-测试.assets/image-20230322211326255.png b/windows/odbc-测试.assets/image-20230322211326255.png new file mode 100644 index 0000000..358ab19 Binary files /dev/null and b/windows/odbc-测试.assets/image-20230322211326255.png differ diff --git a/windows/odbc-测试.assets/image-20230322211350105.png b/windows/odbc-测试.assets/image-20230322211350105.png new file mode 100644 index 0000000..49016a1 Binary files /dev/null and b/windows/odbc-测试.assets/image-20230322211350105.png differ diff --git a/windows/odbc-测试.assets/image-20230322211421933.png b/windows/odbc-测试.assets/image-20230322211421933.png new file mode 100644 index 0000000..3ccf0eb Binary files /dev/null and b/windows/odbc-测试.assets/image-20230322211421933.png differ diff --git a/windows/odbc-测试.assets/image-20230322211526968.png b/windows/odbc-测试.assets/image-20230322211526968.png new file mode 100644 index 0000000..23df5e3 Binary files /dev/null and b/windows/odbc-测试.assets/image-20230322211526968.png differ diff --git a/windows/odbc-测试.assets/image-20230322211744562.png b/windows/odbc-测试.assets/image-20230322211744562.png new file mode 100644 index 0000000..e046be3 Binary files /dev/null and b/windows/odbc-测试.assets/image-20230322211744562.png differ diff --git a/windows/odbc-测试.assets/image-20230322211831798.png b/windows/odbc-测试.assets/image-20230322211831798.png new file mode 100644 index 0000000..6239035 Binary files /dev/null and b/windows/odbc-测试.assets/image-20230322211831798.png differ diff --git a/windows/odbc-测试.assets/image-20230322211914017.png b/windows/odbc-测试.assets/image-20230322211914017.png new file mode 100644 index 0000000..a2e6068 Binary files /dev/null and b/windows/odbc-测试.assets/image-20230322211914017.png differ diff --git a/windows/odbc-测试.md b/windows/odbc-测试.md new file mode 100644 index 0000000..c45b143 --- /dev/null +++ b/windows/odbc-测试.md @@ -0,0 +1,44 @@ +# odbc-测试 + +## 1、通过客户端odbct32w测试 + +### 1.1下载软件并安装 + +| 软件名字 | 地址 | +| ---------- | ------------------------------------------------------------ | +| odbct32w | https://download.microsoft.com/download/9/a/1/9a1256c9-d301-4fdc-93b9-370c5b2f9827/mdac28sdk.msi | +| odbc安装包 | https://opengauss.obs.cn-south-1.myhuaweicloud.com/tools/odbc/openGauss-5.0.0-ODBC-windows.tar.gz | + + + +### 1.2启动opengauss并配置白名单 + +参考opengauss官网,[odbc相关资料](https://docs.opengauss.org/zh/docs/latest/docs/BriefTutorial/ODBC.html) + + + +### 1.3配置数据源 + +打开windows自带的数据管理,选择odbc data source 32 + +![image-20230322211202304](odbc-%E6%B5%8B%E8%AF%95.assets/image-20230322211202304.png) + + + +配置提前启动的opengauss数据库 + +![image-20230322211421933](odbc-%E6%B5%8B%E8%AF%95.assets/image-20230322211421933.png) + +### 1.3通过odbct32w测试工具测试 + +启动odbct32w,在C:\Program Files (x86)\Microsoft Data Access SDK 2.8\Tools\x86,选择对应的架构类型,打开odbct32w.exe + +![image-20230322211526968](odbc-%E6%B5%8B%E8%AF%95.assets/image-20230322211526968.png) + +选择配置好的数据源 + +![image-20230322211744562](odbc-%E6%B5%8B%E8%AF%95.assets/image-20230322211744562.png) + +执行简单的sql,分别点击第一个按钮,会显示是否执行成功,第二个按钮,将结果输出 + +![image-20230322211914017](odbc-%E6%B5%8B%E8%AF%95.assets/image-20230322211914017.png) \ No newline at end of file