diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 69705b2782ad2d0587aae26c600e9aab9146e565..79db0c62a48027e8412b7e2065764a69eab1839b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -55,8 +55,6 @@ include: tagname: 'FreeBSD' cross_platform: 'yes' build_flags: 'AR=/home/admin/mingw-w32/bin/i686-w64-mingw32-ar AS=/home/admin/mingw-w32/bin/i686-w64-mingw32-as CC="ccache /home/admin/mingw-w32/bin/i686-w64-mingw32-gcc" CXX="ccache /home/admin/mingw-w32/bin/i686-w64-mingw32-g++" RANLIB=/home/admin/mingw-w32/bin/i686-w64-mingw32-ranlib WINDRES=/home/admin/mingw-w32/bin/i686-w64-mingw32-windres RELEASE=1' - no_javascript: 'yes' - has_curses: 'no' - local: '.gitlab-ci-unix.yml' inputs: os: 'mingw-w64' diff --git a/3rdp/build/Common.gmake b/3rdp/build/Common.gmake index 39f997231ee05e7854b61149da483972082c2308..ca34e64aae399d80899ddce9502833c59c4eda1e 100644 --- a/3rdp/build/Common.gmake +++ b/3rdp/build/Common.gmake @@ -36,7 +36,9 @@ else endif endif -NSPR_LDFLAGS += -L/usr/local/lib -L$(NSPRDIR) +ifndef NSPR_LIBS + NSPR_LDFLAGS += -L/usr/local/lib -L$(NSPRDIR) +endif ifdef NSPRINCLUDE NSPR_CFLAGS += -I$(NSPRINCLUDE) @@ -133,7 +135,9 @@ else CRYPTLIBDIR := $(CRYPT_IDIR) CRYPT_DEPS := cl CRYPT_LIBS += $(CRYPT_IDIR)/libcl.a - CRYPT_CFLAGS += -DSTATIC_CRYPTLIB -DSTATIC_LIB + ifndef win + CRYPT_CFLAGS += -DSTATIC_CRYPTLIB -DSTATIC_LIB + endif endif # Put it all together... diff --git a/3rdp/build/GNUmakefile b/3rdp/build/GNUmakefile index 3defd7ad716d0c4c144caa3029ba582564f9c7fc..ea32c040ad8d8f55fa05523d43d444a6f41c19fa 100644 --- a/3rdp/build/GNUmakefile +++ b/3rdp/build/GNUmakefile @@ -103,7 +103,7 @@ $(CRYPT_SRC): | $(3RDPSRCDIR) $(CRYPT_IDIR): | $(3RDPODIR) $(QUIET)$(IFNOTEXIST) mkdir $(CRYPT_IDIR) -$(CRYPTLIB_BUILD): $(3RDP_ROOT)/dist/cryptlib.zip $(3RDP_ROOT)/build/cl-fix-test-select.patch $(3RDP_ROOT)/build/cl-terminal-params.patch $(3RDP_ROOT)/build/cl-mingw32-static.patch $(3RDP_ROOT)/build/cl-ranlib.patch $(3RDP_ROOT)/build/cl-win32-noasm.patch $(3RDP_ROOT)/build/cl-zz-country.patch $(3RDP_ROOT)/build/cl-algorithms.patch $(3RDP_ROOT)/build/cl-allow-duplicate-ext.patch $(3RDP_ROOT)/build/cl-macosx-minver.patch $(3RDP_ROOT)/build/cl-posix-me-gently.patch $(3RDP_ROOT)/build/cl-PAM-noprompts.patch $(3RDP_ROOT)/build/cl-zlib.patch $(3RDP_ROOT)/build/cl-Dynamic-linked-static-lib.patch $(3RDP_ROOT)/build/cl-SSL-fix.patch $(3RDP_ROOT)/build/cl-bigger-maxattribute.patch $(3RDP_ROOT)/build/cl-endian.patch $(3RDP_ROOT)/build/cl-vcxproj.patch $(3RDP_ROOT)/build/cl-mingw-vcver.patch $(3RDP_ROOT)/build/cl-win32-build-fix.patch $(3RDP_ROOT)/build/cl-no-odbc.patch $(3RDP_ROOT)/build/cl-noasm-defines.patch $(3RDP_ROOT)/build/cl-bn-noasm64-fix.patch $(3RDP_ROOT)/build/cl-prefer-ECC.patch $(3RDP_ROOT)/build/cl-prefer-ECC-harder.patch $(3RDP_ROOT)/build/cl-clear-GCM-flag.patch $(3RDP_ROOT)/build/cl-use-ssh-ctr.patch $(3RDP_ROOT)/build/cl-ssl-suite-blocksizes.patch $(3RDP_ROOT)/build/cl-no-tpm.patch $(3RDP_ROOT)/build/cl-no-via-aes.patch $(3RDP_ROOT)/build/cl-fix-ssh-ecc-ephemeral.patch $(3RDP_ROOT)/build/cl-just-use-cc.patch $(3RDP_ROOT)/build/cl-no-safe-stack.patch $(3RDP_ROOT)/build/cl-allow-pkcs12.patch $(3RDP_ROOT)/build/cl-openbsd-threads.patch $(3RDP_ROOT)/build/cl-allow-none-auth.patch $(3RDP_ROOT)/build/cl-mingw-add-m32.patch $(3RDP_ROOT)/build/cl-poll-not-select.patch $(3RDP_ROOT)/build/cl-good-sockets.patch $(3RDP_ROOT)/build/cl-moar-objects.patch $(3RDP_ROOT)/build/cl-server-term-support.patch $(3RDP_ROOT)/build/cl-add-pubkey-attribute.patch $(3RDP_ROOT)/build/cl-allow-ssh-auth-retries.patch $(3RDP_ROOT)/build/cl-fix-ssh-channel-close.patch $(3RDP_ROOT)/build/cl-vt-lt-2005-always-defined.patch $(3RDP_ROOT)/build/cl-no-pie.patch $(3RDP_ROOT)/build/cl-no-testobjs.patch $(3RDP_ROOT)/build/cl-win32-lean-and-mean.patch $(3RDP_ROOT)/build/cl-thats-not-asm.patch $(3RDP_ROOT)/build/cl-make-channels-work.patch $(3RDP_ROOT)/build/cl-allow-ssh-2.0-go.patch $(3RDP_ROOT)/build/cl-read-timeout-every-time.patch $(3RDP_ROOT)/build/cl-allow-servercheck-pubkeys.patch $(3RDP_ROOT)/build/cl-pass-after-pubkey.patch $(3RDP_ROOT)/build/cl-ssh-list-ctr-modes.patch $(3RDP_ROOT)/build/cl-double-delete-fine-on-close.patch $(3RDP_ROOT)/build/cl-handle-unsupported-pubkey.patch $(3RDP_ROOT)/build/cl-add-patches-info.patch $(3RDP_ROOT)/build/cl-netbsd-hmac-symbol.patch $(3RDP_ROOT)/build/cl-netbsd-no-getfsstat.patch GNUmakefile $(3RDP_ROOT)/build/cl-remove-march.patch $(3RDP_ROOT)/build/cl-fix-shell-exec-types.patch $(3RDP_ROOT)/build/cl-ssh-eof-half-close.patch $(3RDP_ROOT)/build/cl-add-win64.patch $(3RDP_ROOT)/build/cl-fix-mb-w-conv-warnings.patch $(3RDP_ROOT)/build/cl-fix-ssh-header-read.patch $(3RDP_ROOT)/build/cl-ssh-service-type-for-channel.patch $(3RDP_ROOT)/build/cl-ssh-sbbs-id-string.patch $(3RDP_ROOT)/build/cl-channel-select-both.patch $(3RDP_ROOT)/build/cl-allow-none-auth-svr.patch $(3RDP_ROOT)/build/cl-quote-cc.patch | $(CRYPT_SRC) $(CRYPT_IDIR) +$(CRYPTLIB_BUILD): $(3RDP_ROOT)/dist/cryptlib.zip $(3RDP_ROOT)/build/cl-fix-test-select.patch $(3RDP_ROOT)/build/cl-terminal-params.patch $(3RDP_ROOT)/build/cl-mingw32-static.patch $(3RDP_ROOT)/build/cl-ranlib.patch $(3RDP_ROOT)/build/cl-win32-noasm.patch $(3RDP_ROOT)/build/cl-zz-country.patch $(3RDP_ROOT)/build/cl-algorithms.patch $(3RDP_ROOT)/build/cl-allow-duplicate-ext.patch $(3RDP_ROOT)/build/cl-macosx-minver.patch $(3RDP_ROOT)/build/cl-posix-me-gently.patch $(3RDP_ROOT)/build/cl-PAM-noprompts.patch $(3RDP_ROOT)/build/cl-zlib.patch $(3RDP_ROOT)/build/cl-Dynamic-linked-static-lib.patch $(3RDP_ROOT)/build/cl-SSL-fix.patch $(3RDP_ROOT)/build/cl-bigger-maxattribute.patch $(3RDP_ROOT)/build/cl-endian.patch $(3RDP_ROOT)/build/cl-vcxproj.patch $(3RDP_ROOT)/build/cl-mingw-vcver.patch $(3RDP_ROOT)/build/cl-win32-build-fix.patch $(3RDP_ROOT)/build/cl-no-odbc.patch $(3RDP_ROOT)/build/cl-noasm-defines.patch $(3RDP_ROOT)/build/cl-bn-noasm64-fix.patch $(3RDP_ROOT)/build/cl-prefer-ECC.patch $(3RDP_ROOT)/build/cl-prefer-ECC-harder.patch $(3RDP_ROOT)/build/cl-clear-GCM-flag.patch $(3RDP_ROOT)/build/cl-use-ssh-ctr.patch $(3RDP_ROOT)/build/cl-ssl-suite-blocksizes.patch $(3RDP_ROOT)/build/cl-no-tpm.patch $(3RDP_ROOT)/build/cl-no-via-aes.patch $(3RDP_ROOT)/build/cl-fix-ssh-ecc-ephemeral.patch $(3RDP_ROOT)/build/cl-just-use-cc.patch $(3RDP_ROOT)/build/cl-no-safe-stack.patch $(3RDP_ROOT)/build/cl-allow-pkcs12.patch $(3RDP_ROOT)/build/cl-openbsd-threads.patch $(3RDP_ROOT)/build/cl-allow-none-auth.patch $(3RDP_ROOT)/build/cl-mingw-add-m32.patch $(3RDP_ROOT)/build/cl-poll-not-select.patch $(3RDP_ROOT)/build/cl-good-sockets.patch $(3RDP_ROOT)/build/cl-moar-objects.patch $(3RDP_ROOT)/build/cl-server-term-support.patch $(3RDP_ROOT)/build/cl-add-pubkey-attribute.patch $(3RDP_ROOT)/build/cl-allow-ssh-auth-retries.patch $(3RDP_ROOT)/build/cl-fix-ssh-channel-close.patch $(3RDP_ROOT)/build/cl-vt-lt-2005-always-defined.patch $(3RDP_ROOT)/build/cl-no-pie.patch $(3RDP_ROOT)/build/cl-no-testobjs.patch $(3RDP_ROOT)/build/cl-win32-lean-and-mean.patch $(3RDP_ROOT)/build/cl-thats-not-asm.patch $(3RDP_ROOT)/build/cl-make-channels-work.patch $(3RDP_ROOT)/build/cl-allow-ssh-2.0-go.patch $(3RDP_ROOT)/build/cl-read-timeout-every-time.patch $(3RDP_ROOT)/build/cl-allow-servercheck-pubkeys.patch $(3RDP_ROOT)/build/cl-pass-after-pubkey.patch $(3RDP_ROOT)/build/cl-ssh-list-ctr-modes.patch $(3RDP_ROOT)/build/cl-double-delete-fine-on-close.patch $(3RDP_ROOT)/build/cl-handle-unsupported-pubkey.patch $(3RDP_ROOT)/build/cl-add-patches-info.patch $(3RDP_ROOT)/build/cl-netbsd-hmac-symbol.patch $(3RDP_ROOT)/build/cl-netbsd-no-getfsstat.patch GNUmakefile $(3RDP_ROOT)/build/cl-remove-march.patch $(3RDP_ROOT)/build/cl-fix-shell-exec-types.patch $(3RDP_ROOT)/build/cl-ssh-eof-half-close.patch $(3RDP_ROOT)/build/cl-add-win64.patch $(3RDP_ROOT)/build/cl-fix-mb-w-conv-warnings.patch $(3RDP_ROOT)/build/cl-fix-ssh-header-read.patch $(3RDP_ROOT)/build/cl-ssh-service-type-for-channel.patch $(3RDP_ROOT)/build/cl-ssh-sbbs-id-string.patch $(3RDP_ROOT)/build/cl-channel-select-both.patch $(3RDP_ROOT)/build/cl-allow-none-auth-svr.patch $(3RDP_ROOT)/build/cl-quote-cc.patch $(3RDP_ROOT)/build/cl-mingw32-no-pragma-warning.patch $(3RDP_ROOT)/build/cl-win32-dynamic-linkage.patch $(3RDP_ROOT)/build/cl-limits.patch | $(CRYPT_SRC) $(CRYPT_IDIR) @echo Creating $@ ... $(QUIET)-rm -rf $(CRYPT_SRC)/* $(QUIET)unzip -oa $(3RDPDISTDIR)/cryptlib.zip -d $(CRYPT_SRC) @@ -178,6 +178,9 @@ $(CRYPTLIB_BUILD): $(3RDP_ROOT)/dist/cryptlib.zip $(3RDP_ROOT)/build/cl-fix-test $(QUIET)patch -b -p0 -d $(CRYPT_SRC) < cl-channel-select-both.patch $(QUIET)patch -b -p0 -d $(CRYPT_SRC) < cl-allow-none-auth-svr.patch $(QUIET)patch -b -p0 -d $(CRYPT_SRC) < cl-quote-cc.patch + $(QUIET)patch -b -p0 -d $(CRYPT_SRC) < cl-mingw32-no-pragma-warning.patch + $(QUIET)patch -b -p0 -d $(CRYPT_SRC) < cl-win32-dynamic-linkage.patch + $(QUIET)patch -b -p0 -d $(CRYPT_SRC) < cl-limits.patch $(QUIET)perl -pi.bak -e 's/^(#define CRYPTLIB_VERSION.*)$$/"$$1\n#define CRYPTLIB_PATCHES \"" . (chomp($$val = `cat cl-*.patch | if (which md5sum > \/dev\/null 2>&1); then md5sum; else md5; fi`), $$val) . "\""/e' $(CRYPT_SRC)/cryptlib.h $(QUIET)sed -E -iorig 's/%%MIN_MAC_OSX_VERSION%%/${MIN_MAC_OSX_VERSION}/g' $(CRYPT_SRC)/tools/ccopts.sh ifdef FIXED_FIXED_SEED diff --git a/3rdp/build/cl-limits.patch b/3rdp/build/cl-limits.patch new file mode 100644 index 0000000000000000000000000000000000000000..bad1794ed89f3e558c661e386f4308b8b7cf1bfd --- /dev/null +++ b/3rdp/build/cl-limits.patch @@ -0,0 +1,10 @@ +--- cryptlib.h.orig 2024-03-25 06:07:16.633688000 -0400 ++++ cryptlib.h 2024-03-25 06:07:24.449604000 -0400 +@@ -8,6 +8,7 @@ + #ifndef _CRYPTLIB_DEFINED + + #define _CRYPTLIB_DEFINED ++#include <limits.h> + + /* The current cryptlib version: 3.4.7 */ + diff --git a/3rdp/build/cl-mingw32-no-pragma-warning.patch b/3rdp/build/cl-mingw32-no-pragma-warning.patch new file mode 100644 index 0000000000000000000000000000000000000000..e18e0adfa4656d3f05a7da146c6340cd5f6547a5 --- /dev/null +++ b/3rdp/build/cl-mingw32-no-pragma-warning.patch @@ -0,0 +1,23 @@ +--- cryptlib.h.orig 2024-03-25 04:19:30.935061000 -0400 ++++ cryptlib.h 2024-03-25 04:20:04.604215000 -0400 +@@ -39,12 +39,14 @@ + /* The Windows headers are riddled with errors which are turned up at + warning level 4. To deal with this we disable some of the noisier + ones */ +- #pragma warning( push ) +- #pragma warning( disable: 4255 ) /* No function prototype given */ +- #pragma warning( disable: 4514 ) /* Unreferenced inline function has been removed */ +- #define WIN32_LEAN_AND_MEAN +- #include <windows.h> +- #pragma warning( pop ) ++ #ifndef __MINGW32__ ++ #pragma warning( push ) ++ #pragma warning( disable: 4255 ) /* No function prototype given */ ++ #pragma warning( disable: 4514 ) /* Unreferenced inline function has been removed */ ++ #define WIN32_LEAN_AND_MEAN ++ #include <windows.h> ++ #pragma warning( pop ) ++ #endif + + /* Catch use of CryptoAPI and cryptlib at the same time. wxWidgets + includes wincrypt.h by default so we undefine the conflicting values diff --git a/3rdp/build/cl-win32-dynamic-linkage.patch b/3rdp/build/cl-win32-dynamic-linkage.patch new file mode 100644 index 0000000000000000000000000000000000000000..5bdaa2f52b05f47eb6800ff2501f527bf1716001 --- /dev/null +++ b/3rdp/build/cl-win32-dynamic-linkage.patch @@ -0,0 +1,11 @@ +--- cryptlib.h.orig 2024-03-25 05:57:10.515088000 -0400 ++++ cryptlib.h 2024-03-25 05:59:23.436090000 -0400 +@@ -76,7 +76,7 @@ + internal crypt.h or not */ + + #if ( defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ ) || \ +- defined( _WIN32_WCE ) ) && !( defined( STATIC_LIB ) || defined( _SCCTK ) ) ++ defined( _WIN32_WCE ) ) && !( defined( _SCCTK ) ) + #define C_PTR * /* General pointer */ + #if defined( _WIN32_WCE ) + /* Rather than relying on _UNICODE being defined (which would cause diff --git a/src/build/Common.gmake b/src/build/Common.gmake index a61f175a9ff2195bde06b68bd6db0cae2febab23..adb5d5e3181a56035ad9401044f3ff962a1aee77 100644 --- a/src/build/Common.gmake +++ b/src/build/Common.gmake @@ -297,6 +297,9 @@ else ifeq ($(os),darwin) # Don't go digging for stuff on Mac, nobody knows what's up. CFLAGS += -DHAS_INTTYPES_H endif + ifeq ($(os),win32) # Don't go digging for stuff on Win, huge pain. + CFLAGS += -DHAS_INTTYPES_H + endif endif endif diff --git a/src/conio/Common.gmake b/src/conio/Common.gmake index 31032316023453a986fdfb694b4e71a20f3efa6d..28dc4abad623e0865843b174f70fafd96e91c1ab 100644 --- a/src/conio/Common.gmake +++ b/src/conio/Common.gmake @@ -28,6 +28,7 @@ ifndef win ifeq ($(shell pkg-config ncursesw --exists && echo YES), YES) CIOLIB-MT_LIBS += $(shell pkg-config ncursesw --libs) CIOLIB-MT_CFLAGS += $(shell pkg-config ncursesw --cflags) + CIOLIB-MT_CFLAGS += -DCIOLIB_IMPORTS else ifdef USE_SYSTEM_CURSES CIOLIB-MT_LIBS += $(UL_PRE)curses$(UL_SUF) diff --git a/src/conio/GNUmakefile b/src/conio/GNUmakefile index 75dc5708470e4944175df3ee5eaba21c28a0e380..d379704e3a53ef482dc66c654e4986dba1edb100 100644 --- a/src/conio/GNUmakefile +++ b/src/conio/GNUmakefile @@ -3,6 +3,8 @@ SRC_ROOT = .. include $(SRC_ROOT)/build/Common.gmake # defines clean and output directory rules CFLAGS += $(XPDEV-MT_CFLAGS) $(HASH_CFLAGS) $(ENCODE_CFLAGS) $(CIOLIB-MT_CFLAGS) +CFLAGS := $(filter-out -DCIOLIB_IMPORT,$(CFLAGS)) +CFLAGS += -DCIOLIB_EXPORTS VPATH = $(SRCODIR) ifdef win @@ -10,7 +12,13 @@ ifdef win OBJS += $(MTOBJODIR)$(DIRSEP)win32gdi$(OFILE) NEED_BITMAP := 1 endif - OBJS += $(MTOBJODIR)$(DIRSEP)SDL_win32_main$(OFILE) + ifdef WITH_SDL + OBJS += $(MTOBJODIR)$(DIRSEP)SDL_win32_main$(OFILE) + else + ifndef WITHOUT_GDI + OBJS += $(MTOBJODIR)$(DIRSEP)SDL_win32_main$(OFILE) + endif + endif OBJS += $(MTOBJODIR)$(DIRSEP)win32cio$(OFILE) OBJS += $(MTOBJODIR)$(DIRSEP)ciolib_res$(OFILE) else diff --git a/src/conio/ciolib.h b/src/conio/ciolib.h index 233d57a4fb948120a45fbd378528610588efd214..85348e1b9c8852558bcab9b325a036941719bba8 100644 --- a/src/conio/ciolib.h +++ b/src/conio/ciolib.h @@ -36,10 +36,10 @@ #if defined(CIOLIB_IMPORTS) || defined(CIOLIB_EXPORTS) #if defined(CIOLIB_IMPORTS) #define CIOLIBEXPORT __declspec( dllimport ) - #define CIOLIBEXPORTVAR __declspec( dllimport ) + #define CIOLIBEXPORTVAR __declspec( dllimport ) extern #else #define CIOLIBEXPORT __declspec( dllexport ) - #define CIOLIBEXPORTVAR __declspec( dllexport ) + #define CIOLIBEXPORTVAR __declspec( dllexport ) extern #endif #else /* self-contained executable */ #define CIOLIBEXPORT diff --git a/src/encode/Common.make b/src/encode/Common.make index f402765c0ffea88500b5305fc853b15317102982..2fe030f31a65a37e0770e56538826ec18a540b00 100644 --- a/src/encode/Common.make +++ b/src/encode/Common.make @@ -3,6 +3,6 @@ ENCODE_LIB = $(ENCODE_SRC)$(DIRSEP)$(LIBODIR)$(DIRSEP)$(LIBPREFIX)encode$(LIBFILE) -ENCODE_CFLAGS = -I$(ENCODE_SRC) +ENCODE_CFLAGS = -I$(ENCODE_SRC) -DB64_IMPORTS -DLZH_EXPORTS ENCODE_LDFLAGS = -L$(ENCODE_SRC)$(DIRSEP)$(LIBODIR) ENCODE_LIBS = $(UL_PRE)encode$(UL_SUF) diff --git a/src/encode/GNUmakefile b/src/encode/GNUmakefile index 1e9287667b58f66da9e48ea58c92bd9891961f4d..97a20cafc34c044a8780d18f89118e98047dd4f7 100644 --- a/src/encode/GNUmakefile +++ b/src/encode/GNUmakefile @@ -8,6 +8,8 @@ SRC_ROOT ?= .. include $(SRC_ROOT)/build/Common.gmake # defines clean and output directory rules CFLAGS += -I$(ENCODE_SRC) $(XPDEV_CFLAGS) +CFLAGS := $(filter-out -DB64_IMPORTS -DLZH_IMPORTS,$(CFLAGS)) +CFLAGS += -DB64_EXPORTS -DLZH_EXPORTS # ENCODE Library Link Rule $(ENCODE_BUILD): $(OBJODIR) $(OBJS) diff --git a/src/hash/Common.make b/src/hash/Common.make index 2ca17cfa8d17d558f59c962d487e956bf47999c3..e03b032f5972ac7678f01554b2b622f134fb6792 100644 --- a/src/hash/Common.make +++ b/src/hash/Common.make @@ -3,6 +3,6 @@ HASH_LIB = $(HASH_SRC)$(DIRSEP)$(LIBODIR)$(DIRSEP)$(LIBPREFIX)hash$(LIBFILE) -HASH_CFLAGS = -I$(HASH_SRC) +HASH_CFLAGS = -I$(HASH_SRC) -DMD5_EXPORTS HASH_LDFLAGS = -L$(HASH_SRC)$(DIRSEP)$(LIBODIR) HASH_LIBS = $(UL_PRE)hash$(UL_SUF) diff --git a/src/hash/GNUmakefile b/src/hash/GNUmakefile index e633edf8e992380b3ee6f2c66148f1280cacd773..ad46cba7cff6e4eb14a64502951fc0cfff12a1a4 100644 --- a/src/hash/GNUmakefile +++ b/src/hash/GNUmakefile @@ -7,7 +7,8 @@ SRC_ROOT ?= .. # Cross platform/compiler definitions include $(SRC_ROOT)/build/Common.gmake # defines clean and output directory rules -CFLAGS += -I$(HASH_SRC) $(XPDEV_CFLAGS) +CFLAGS := $(filter-out -DMD5_IMPORTS,$(CFLAGS)) +CFLAGS += -I$(HASH_SRC) $(XPDEV_CFLAGS) -DMD5_EXPORTS # HASH Library Link Rule $(HASH_BUILD): $(OBJODIR) $(OBJS) diff --git a/src/sbbs3/GNUmakefile b/src/sbbs3/GNUmakefile index 5982cc3fa37c2adb1f2b76b04e87e726c5c2c8c7..1f40d133ee8bb906ce541631971361330fb3c63e 100644 --- a/src/sbbs3/GNUmakefile +++ b/src/sbbs3/GNUmakefile @@ -115,8 +115,10 @@ else FILE_LIBS = -larchive endif -include sbbsdefs.mk -MT_CFLAGS += $(SBBSDEFS) $(SFTP-MT_CFLAGS) +CFLAGS := $(filter-out -DWRAPPER_IMPORTS -DSBBS_IMPORTS,$(CFLAGS)) +CFLAGS += -DWRAPPER_EXPORTS -DSBBS_EXPORTS -DRINGBUF_EVENT -DRINGBUF_MUTEX +MT_CFLAGS := $(filter-out -DWRAPPER_IMPORTS -DSBBS_IMPORTS,$(MT_CFLAGS)) +MT_CFLAGS += -DWRAPPER_EXPORTS -DSBBS_EXPORTS ifndef NO_LD_RUN_PATH # Set up LD_RUN_PATH for run-time locating of the .so files @@ -168,38 +170,60 @@ ifneq ($(os),darwin) SBBS_EXTRA_LDFLAGS += -Wl,--version-script=sbbs.version endif -# Synchronet BBS library Link Rule -$(SBBS): $(JS_DEPS) $(CRYPT_DEPS) $(OBJS) $(LIBS) $(EXTRA_SBBS_DEPENDS) $(ENCODE_LIB) $(HASH_LIB) $(SFTPLIB-MT) | $(LIBODIR) - @echo Linking $@ - $(QUIET)$(MKSHPPLIB) $(LDFLAGS) -o $@ $(OBJS) $(SBBS_LIBS) $(SMBLIB_LIBS) $(LIBS) $(SHLIBOPTS) $(JS_LIBS) $(CRYPT_LIBS) $(ENCODE_LIBS) $(HASH_LIBS) $(XPDEV-MT_LIBS) $(FILE_LIBS) $(SFTP-MT_LIBS) $(SBBS_EXTRA_LDFLAGS) -ifeq ($(os), netbsd) - paxctl +m $(SBBS) -endif - -# FTP Server Link Rule -$(FTPSRVR): $(MTOBJODIR)/ftpsrvr.o - @echo Linking $@ - $(QUIET)$(MKSHLIB) $(LDFLAGS) $(MTOBJODIR)/ftpsrvr.o $(SHLIBOPTS) -o $@ -lsbbs - -# Mail Server Link Rule -$(MAILSRVR): $(MAIL_OBJS) - @echo Linking $@ - $(QUIET)$(MKSHLIB) $(LDFLAGS) $(MAIL_OBJS) $(SHLIBOPTS) -o $@ -lsbbs - -# Web Server Link Rule -$(WEBSRVR): $(WEB_OBJS) - @echo Linking $@ - $(QUIET)$(MKSHLIB) $(LDFLAGS) $(WEB_OBJS) $(SHLIBOPTS) -o $@ $(ENCODE_LIBS) -lsbbs $(XPDEV-MT_LIBS) - -# Services Link Rule -$(SERVICES): $(SERVICE_OBJS) - @echo Linking $@ - $(QUIET)$(MKSHLIB) $(LDFLAGS) $(SERVICE_OBJS) $(SHLIBOPTS) -o $@ -lsbbs +LIB_EXPORTS = \ + CFLAGS="$(CFLAGS)" \ + SBBS="$(SBBS)" \ + QUIET="$(QUIET)" \ + MKSHPPLIB="$(MKSHPPLIB)" \ + LDFLAGS="$(LDFLAGS)" \ + SBBS_LIBS="$(SBBS_LIBS)" \ + SMBLIB_LIBS="$(SMBLIB_LIBS)" \ + LIBS="$(LIBS)" \ + SHLIBIPTS="$(SHLIBIPTS)" \ + JS_LIBS="$(JS_LIBS)" \ + CRYPT_LIBS="$(CRYPT_LIBS)" \ + ENCODE_LIBS="$(ENCODE_LIBS)" \ + HASH_LIBS="$(HASH_LIBS)" \ + XPDEV-MT_LIBS="$(XPDEV-MT_LIBS)" \ + FILE_LIBS="$(FILE_LIBS)" \ + SFTP-MT_LIBS="$(SFTP-MT_LIBS)" \ + SFTP-MT_CFLAGS="$(SFTP-MT_CFLAGS)" \ + MT_CFLAGS="$(MT_CFLAGS)" \ + SBBS_EXTRA_LDFLAGS="$(SBBS_EXTRA_LDFLAGS)" \ + MTOBJODIR="$(MTOBJODIR)" \ + FTPSRVR="$(FTPSRVR)" \ + MAILSRVR="$(MAILSRVR)" \ + WEBSRVR="$(WEBSRVR)" \ + SERVICES="$(SERVICES)" \ + BUILD_DEPENDS="$(BUILD_DEPENDS)" \ + OBJODIR="$(OBJODIR)" \ + COMPILE_MSG="$(COMPILE_MSG)" \ + AS="$(AS)" \ + ASFLAGS="$(ASFLAGS)" \ + OFILE="$(OFILE)" \ + CC="$(CC)" \ + CCFLAGS="$(CCFLAGS)" \ + CXX="$(CXX)" + + +$(SBBS): $(JS_DEPS) $(CRYPT_DEPS) $(LIBS) $(EXTRA_SBBS_DEPENDS) $(ENCODE_LIB) $(HASH_LIB) $(SFTPLIB-MT) | $(LIBODIR) + $(QUIET)$(MAKE) -f sbbs.mk $(LIB_EXPORTS) OBJS="$(OBJS)" $@ + +$(FTPSRVR): + $(QUIET)$(MAKE) -f ftpsrvr.mk $(LIB_EXPORTS) FTP_OBJS="$(FTP_OBJS)" $@ + +$(MAILSRVR): + $(QUIET)$(MAKE) -f mailsrvr.mk $(LIB_EXPORTS) MAIL_OBJS="$(MAIL_OBJS)" $@ + +$(WEBSRVR): + $(QUIET)$(MAKE) -f websrvr.mk $(LIB_EXPORTS) WEB_OBJS="$(WEB_OBJS)" $@ + +$(SERVICES): + $(QUIET)$(MAKE) -f services.mk $(LIB_EXPORTS) SERVICES_OBJS="$(SERVICES_OBJS)" $@ # Synchronet Console Build Rule -$(SBBSCON): $(CON_OBJS) $(SBBS) $(FTPSRVR) $(WEBSRVR) $(MAILSRVR) $(SERVICES) - @echo Linking $@ - $(QUIET)$(CXX) $(LDFLAGS) $(MT_LDFLAGS) -o $@ $(CON_OBJS) $(CON_LIBS) $(SMBLIB_LIBS) $(XPDEV-MT_LIBS) +$(SBBSCON): $(SBBS) $(FTPSRVR) $(WEBSRVR) $(MAILSRVR) $(SERVICES) + $(QUIET)$(MAKE) -f sbbs.mk $(LIB_EXPORTS) CON_OBJS="$(CON_OBJS)" $@ # Baja Utility $(BAJA): $(BAJA_OBJS) | $(EXEODIR) @@ -254,7 +278,7 @@ $(FILELIST): $(FILELIST_OBJS) $(ENCODE_LIB) | $(EXEODIR) # MAKEUSER $(MAKEUSER): $(MAKEUSER_OBJS) | $(EXEODIR) @echo Linking $@ - $(QUIET)$(CC) $(CONSOLE_LDFLAGS) -o $@ $(MAKEUSER_OBJS) $(XPDEV_LIBS) $(SMBLIB_LIBS) $(ENCODE_LIBS) $(HASH_LIBS) + $(QUIET)$(CC) $(CONSOLE_LDFLAGS) -o $@ $(MAKEUSER_OBJS) $(XPDEV_LIBS) $(SMBLIB_LIBS) $(ENCODE_LIBS) $(HASH_LIBS) $(FILE_LIBS) # JSDOOR $(JSDOOR): $(JSDOOR_OBJS) $(XPDEV_LIB) $(ENCODE_LIB) $(HASH_LIB) $(CIOLIB-MT) | $(EXEODIR) @@ -265,12 +289,8 @@ ifeq ($(os), netbsd) endif # JSEXEC -$(JSEXEC): $(JSEXEC_OBJS) $(SBBS) $(CIOLIB-MT) | $(EXEODIR) - @echo Linking $@ - $(QUIET)$(CXX) $(LDFLAGS) $(MT_LDFLAGS) -o $@ $(JSEXEC_OBJS) -lsbbs $(JS_LIBS) $(SMBLIB_LIBS) $(UIFC-MT_LIBS) $(CIOLIB-MT_LIBS) $(XPDEV-MT_LIBS) -ifeq ($(os), netbsd) - paxctl +m $(JSEXEC) -endif +$(JSEXEC): $(SBBS) $(CIOLIB-MT) | $(EXEODIR) + $(QUIET)$(MAKE) -f jsexec.mk $(LIB_EXPORTS) JSEXEC_OBJS="$(JSEXEC_OBJS)" $@ # ANS2ASC $(ANS2ASC): $(OBJODIR)/ans2asc.o $(OBJODIR)/sauce.o $(XPDEV_LIB) | $(EXEODIR) diff --git a/src/sbbs3/dllexport.h b/src/sbbs3/dllexport.h index 5308120b5395152b25828da774bb853f3391936f..4e5afa395d54eefd6f0ff548bf5b447fc413b4b7 100644 --- a/src/sbbs3/dllexport.h +++ b/src/sbbs3/dllexport.h @@ -1,7 +1,7 @@ #ifdef DLLEXPORT #undef DLLEXPORT #endif -#if defined(_WIN32) && ! defined(__MINGW32__) +#if defined(_WIN32) #ifdef SBBS_EXPORTS #define DLLEXPORT __declspec(dllexport) #else diff --git a/src/sbbs3/ftpsrvr.mk b/src/sbbs3/ftpsrvr.mk new file mode 100644 index 0000000000000000000000000000000000000000..2d72debaedc38861d8225363734abb9b89d48737 --- /dev/null +++ b/src/sbbs3/ftpsrvr.mk @@ -0,0 +1,24 @@ +PWD := $(shell /bin/pwd) +SRC_ROOT ?= ${PWD}/.. +include $(SRC_ROOT)/build/Common.gmake +include extdeps.mk +vpath %.c ../comio + +include sbbsdefs.mk +override CFLAGS += $(SBBSDEFS) +override CFLAGS := $(filter-out -DSBBS_EXPORTS -DSMB_EXPORTS -DMD5_EXPORTS -DWRAPPER_EXPORTS -DB64_EXPORTS,$(CFLAGS)) +override MT_CFLAGS := $(filter-out -DSBBS_EXPORTS -DSMB_EXPORTS -DMD5_EXPORTS -DWRAPPER_EXPORTS -DB64_EXPORTS,$(MT_CFLAGS)) +override CFLAGS += -DSBBS_IMPORTS -DSMB_IMPORTS -DMD5_IMPORTS -DWRAPPER_IMPORTS -DB64_IMPORTS +override MT_CFLAGS += -DSBBS_IMPORTS -DSMB_IMPORTS -DMD5_IMPORTS -DWRAPPER_IMPORTS -DB64_IMPORTS +override CFLAGS := $(filter-out -DFTPSRVR_IMPORTS,$(CFLAGS)) +override CFLAGS += -DFTPSRVR_EXPORTS +override MT_CFLAGS := $(filter-out -DFTPSRVR_IMPORTS,$(MT_CFLAGS)) +override MT_CFLAGS += -DFTPSRVR_EXPORTS +override OBJS := +override MTOBJS := + +# FTP Server Link Rule +$(FTPSRVR): $(FTP_OBJS) + @echo Linking $@ + $(QUIET)$(MKSHLIB) $(LDFLAGS) $(FTP_OBJS) $(SHLIBOPTS) -o $@ -lsbbs $(XPDEV-MT_LIBS) + rm $(MTOBJODIR)/nopen$(OFILE) diff --git a/src/sbbs3/jsdebug.h b/src/sbbs3/jsdebug.h index 528ce9202af513a90b635277d0d0184419b2e907..b321859d8f6bc2267fb058672d629a8b32069823 100644 --- a/src/sbbs3/jsdebug.h +++ b/src/sbbs3/jsdebug.h @@ -2,15 +2,16 @@ #define JSDEBUG_H #include <jsapi.h> +#include "dllexport.h" enum debug_action { DEBUG_CONTINUE, DEBUG_EXIT }; -void setup_debugger(void); -BOOL init_debugger(JSRuntime *rt, JSContext *cx,void (*puts)(const char *), char *(*getline)(void)); -enum debug_action debug_prompt(JSContext *cx, JSObject *script); -void end_debugger(JSRuntime *rt, JSContext *cx); +DLLEXPORT void setup_debugger(void); +DLLEXPORT BOOL init_debugger(JSRuntime *rt, JSContext *cx,void (*puts)(const char *), char *(*getline)(void)); +DLLEXPORT enum debug_action debug_prompt(JSContext *cx, JSObject *script); +DLLEXPORT void end_debugger(JSRuntime *rt, JSContext *cx); #endif diff --git a/src/sbbs3/jsexec.c b/src/sbbs3/jsexec.c index af80f577ce4bd71c2cafb03f8f983441166d7491..a870c91b6c310bb15475ab222ae96aaea2e2db66 100644 --- a/src/sbbs3/jsexec.c +++ b/src/sbbs3/jsexec.c @@ -32,7 +32,8 @@ #define STARTUP_INI_JSOPT_BITDESC_TABLE #include "sbbs.h" #include "ciolib.h" -#if defined(main) && defined(_WIN32) && !defined(JSDOOR) +// TODO: Whatever the MSVC build is doing to make this work should be done here too... +#if defined(main) && defined(_WIN32) && !defined(JSDOOR) && !defined(__MINGW32__) #undef main // Don't be a Windows program, be a Console one #endif #include "ini_file.h" diff --git a/src/sbbs3/jsexec.mk b/src/sbbs3/jsexec.mk new file mode 100644 index 0000000000000000000000000000000000000000..fb1a6995ec84c75670c48a5c0be92d4cadf4d513 --- /dev/null +++ b/src/sbbs3/jsexec.mk @@ -0,0 +1,22 @@ +PWD := $(shell /bin/pwd) +SRC_ROOT ?= ${PWD}/.. +include $(SRC_ROOT)/build/Common.gmake +include extdeps.mk +vpath %.c ../comio + +include sbbsdefs.mk +override CFLAGS += $(SBBSDEFS) +override CFLAGS := $(filter-out -DSBBS_EXPORTS -DSMB_EXPORTS -DMD5_EXPORTS -DWRAPPER_EXPORTS -DB64_EXPORTS,$(CFLAGS)) +override MT_CFLAGS := $(filter-out -DSBBS_EXPORTS -DSMB_EXPORTS -DMD5_EXPORTS -DWRAPPER_EXPORTS -DB64_EXPORTS,$(MT_CFLAGS)) +override CFLAGS += -DSBBS_IMPORTS -DSMB_IMPORTS -DMD5_IMPORTS -DWRAPPER_IMPORTS -DB64_IMPORTS +override MT_CFLAGS += -DSBBS_IMPORTS -DSMB_IMPORTS -DMD5_IMPORTS -DWRAPPER_IMPORTS -DB64_IMPORTS +override OBJS := +override MTOBJS := + +# JSEXEC +$(JSEXEC): $(JSEXEC_OBJS) + @echo Linking $@ + $(QUIET)$(CXX) $(LDFLAGS) $(MT_LDFLAGS) -o $@ $(JSEXEC_OBJS) -lsbbs $(JS_LIBS) $(SMBLIB_LIBS) $(UIFC-MT_LIBS) $(CIOLIB-MT_LIBS) $(XPDEV-MT_LIBS) +ifeq ($(os), netbsd) + paxctl +m $(JSEXEC) +endif diff --git a/src/sbbs3/mailsrvr.mk b/src/sbbs3/mailsrvr.mk new file mode 100644 index 0000000000000000000000000000000000000000..7fb5372656830f8b4ce41ca204c002160e72ec99 --- /dev/null +++ b/src/sbbs3/mailsrvr.mk @@ -0,0 +1,25 @@ +PWD := $(shell /bin/pwd) +SRC_ROOT ?= ${PWD}/.. +include $(SRC_ROOT)/build/Common.gmake +include extdeps.mk +vpath %.c ../comio +vpath %.c ../encode + +include sbbsdefs.mk +override CFLAGS += $(SBBSDEFS) +override CFLAGS := $(filter-out -DSBBS_EXPORTS -DSMB_EXPORTS -DMD5_EXPORTS -DWRAPPER_EXPORTS -DB64_EXPORTS,$(CFLAGS)) +override MT_CFLAGS := $(filter-out -DSBBS_EXPORTS -DSMB_EXPORTS -DMD5_EXPORTS -DWRAPPER_EXPORTS -DB64_EXPORTS,$(MT_CFLAGS)) +override CFLAGS += -DSBBS_IMPORTS -DSMB_IMPORTS -DMD5_IMPORTS -DWRAPPER_IMPORTS -DB64_IMPORTS +override MT_CFLAGS += -DSBBS_IMPORTS -DSMB_IMPORTS -DMD5_IMPORTS -DWRAPPER_IMPORTS -DB64_IMPORTS +override CFLAGS := $(filter-out -DMAILSRVR_IMPORTS,$(CFLAGS)) +override CFLAGS += -DMAILSRVR_EXPORTS +override MT_CFLAGS := $(filter-out -DMAILSRVR_IMPORTS,$(MT_CFLAGS)) +override MT_CFLAGS += -DMAILSRVR_EXPORTS +override OBJS := +override MTOBJS := + +# Mail Server Link Rule +$(MAILSRVR): $(MAIL_OBJS) + @echo Linking $@ + $(QUIET)$(MKSHLIB) $(LDFLAGS) $(MAIL_OBJS) $(SHLIBOPTS) -o $@ -lsbbs $(XPDEV-MT_LIBS) + rm $(MTOBJODIR)/nopen$(OFILE) diff --git a/src/sbbs3/objects.mk b/src/sbbs3/objects.mk index ff20d2664ebb496a80733880dd671fedc40b4280..10affe94e5a62a31dbe72ed78a20990acf5fc785 100644 --- a/src/sbbs3/objects.mk +++ b/src/sbbs3/objects.mk @@ -112,23 +112,26 @@ OBJS = $(LOAD_CFG_OBJS) \ $(MTOBJODIR)/ssl$(OFILE) CON_OBJS = $(MTOBJODIR)/sbbscon$(OFILE) \ - $(MTOBJODIR)/sbbs_ini$(OFILE) + $(MTOBJODIR)/sbbs_ini$(OFILE) \ + $(MTOBJODIR)/getctrl$(OFILE) FTP_OBJS = $(MTOBJODIR)/ftpsrvr$(OFILE) \ $(MTOBJODIR)/nopen$(OFILE) MAIL_OBJS = $(MTOBJODIR)/mailsrvr$(OFILE) \ $(MTOBJODIR)/mxlookup$(OFILE) \ - $(MTOBJODIR)/mime$(OFILE) \ - $(MTOBJODIR)/nopen$(OFILE) \ - $(MTOBJODIR)/ars$(OFILE) + $(MTOBJODIR)/mime$(OFILE) \ + $(MTOBJODIR)/nopen$(OFILE) \ + $(MTOBJODIR)/ars$(OFILE) \ + $(MTOBJODIR)/utf8$(OFILE) WEB_OBJS = $(MTOBJODIR)/websrvr$(OFILE) \ $(MTOBJODIR)/ars$(OFILE) \ $(MTOBJODIR)/ringbuf$(OFILE) SERVICE_OBJS = $(MTOBJODIR)/services$(OFILE) \ - $(MTOBJODIR)/sbbs_ini$(OFILE) + $(MTOBJODIR)/sbbs_ini$(OFILE) \ + $(MTOBJODIR)/nopen$(OFILE) BAJA_OBJS = \ $(OBJODIR)/baja$(OFILE) \ @@ -195,12 +198,13 @@ MAKEUSER_OBJS = $(LOAD_CFG_OBJS) \ $(OBJODIR)/userdat$(OFILE) \ $(OBJODIR)/trash$(OFILE) \ $(OBJODIR)/getstats$(OFILE) \ - $(OBJODIR)/msgdate$(OFILE) + $(OBJODIR)/msgdate$(OFILE) \ JSEXEC_OBJS = \ $(MTOBJODIR)/jsexec$(OFILE) \ $(MTOBJODIR)/js_uifc$(OFILE) \ - $(MTOBJODIR)/js_conio$(OFILE) + $(MTOBJODIR)/js_conio$(OFILE) \ + $(MTOBJODIR)/getctrl$(OFILE) JSDOOR_OBJS = $(LOAD_CFG_OBJS) \ $(MTOBJODIR)/date_str$(OFILE) \ diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h index 2ccfa79d695bcaea30fef7ff1a44acbfc182fa2d..815330ca3ceece3588ad3d7ad24a73d023d73bc6 100644 --- a/src/sbbs3/sbbs.h +++ b/src/sbbs3/sbbs.h @@ -1343,14 +1343,10 @@ public: #undef DLLEXPORT #endif #ifdef _WIN32 - #ifdef __MINGW32__ - #define DLLEXPORT + #ifdef SBBS_EXPORTS + #define DLLEXPORT __declspec(dllexport) #else - #ifdef SBBS_EXPORTS - #define DLLEXPORT __declspec(dllexport) - #else - #define DLLEXPORT __declspec(dllimport) - #endif + #define DLLEXPORT __declspec(dllimport) #endif #else /* !_WIN32 */ #define DLLEXPORT diff --git a/src/sbbs3/sbbs.mk b/src/sbbs3/sbbs.mk new file mode 100644 index 0000000000000000000000000000000000000000..78bba021e1fd0594507ddf912626d35deced5e89 --- /dev/null +++ b/src/sbbs3/sbbs.mk @@ -0,0 +1,19 @@ +PWD := $(shell /bin/pwd) +SRC_ROOT ?= ${PWD}/.. +include $(SRC_ROOT)/build/Common.gmake +include extdeps.mk +vpath %.c ../comio + +include sbbsdefs.mk +override CFLAGS := $(filter-out -DSBBS_IMPORTS -DWRAPPER_IMPORTS -DMD5_IMPORTS -DB64_IMPORTS,$(CFLAGS)) +override MT_CFLAGS := $(filter-out -DSBBS_IMPORTS -DWRAPPER_IMPORTS -DMD5_IMPORTS -DB64_IMPORTS,$(MT_CFLAGS)) +override CFLAGS += -DWRAPPER_EXPORTS -DB64_EXPORTS -D_CRYPT_DEFINED $(SFTP-MT_CFLAGS) $(SBBSDEFS) +override MT_CFLAGS += -DWRAPPER_EXPORTS -DB64_EXPORTS -D_CRYPT_DEFINED + +# Synchronet BBS library Link Rule +$(SBBS): $(OBJS) + @echo Linking $@ + $(QUIET)$(MKSHPPLIB) $(LDFLAGS) -o $@ $(OBJS) $(SBBS_LIBS) $(SMBLIB_LIBS) $(LIBS) $(SHLIBOPTS) $(JS_LIBS) $(CRYPT_LIBS) $(ENCODE_LIBS) $(HASH_LIBS) $(XPDEV-MT_LIBS) $(FILE_LIBS) $(SFTP-MT_LIBS) $(SBBS_EXTRA_LDFLAGS) +ifeq ($(os), netbsd) + paxctl +m $(SBBS) +endif diff --git a/src/sbbs3/sbbscon.mk b/src/sbbs3/sbbscon.mk new file mode 100644 index 0000000000000000000000000000000000000000..4be60c7bc8aa6386d7e68d5384d23033991678eb --- /dev/null +++ b/src/sbbs3/sbbscon.mk @@ -0,0 +1,19 @@ +PWD := $(shell /bin/pwd) +SRC_ROOT ?= ${PWD}/.. +include $(SRC_ROOT)/build/Common.gmake +include extdeps.mk +vpath %.c ../comio + +include sbbsdefs.mk +override CFLAGS += $(SBBSDEFS) +override CFLAGS := $(filter-out -DSBBS_EXPORTS -DSMB_EXPORTS -DMD5_EXPORTS -DWRAPPER_EXPORTS -DB64_EXPORTS,$(CFLAGS)) +override MT_CFLAGS := $(filter-out -DSBBS_EXPORTS -DSMB_EXPORTS -DMD5_EXPORTS -DWRAPPER_EXPORTS -DB64_EXPORTS,$(MT_CFLAGS)) +override CFLAGS += -DSBBS_IMPORTS -DSMB_IMPORTS -DMD5_IMPORTS -DWRAPPER_IMPORTS -DB64_IMPORTS +override MT_CFLAGS += -DSBBS_IMPORTS -DSMB_IMPORTS -DMD5_IMPORTS -DWRAPPER_IMPORTS -DB64_IMPORTS +override OBJS := +override MTOBJS := + +# Synchronet Console Build Rule +$(SBBSCON): $(CON_OBJS) + @echo Linking $@ + $(QUIET)$(CXX) $(LDFLAGS) $(MT_LDFLAGS) -o $@ $(CON_OBJS) $(CON_LIBS) $(SMBLIB_LIBS) $(XPDEV-MT_LIBS) diff --git a/src/sbbs3/scfg/GNUmakefile b/src/sbbs3/scfg/GNUmakefile index 4bc15dae41b487f1372785f0550c92b21244033a..b7b493aa8ba9bb8983be73e063e757c0c3fdf107 100644 --- a/src/sbbs3/scfg/GNUmakefile +++ b/src/sbbs3/scfg/GNUmakefile @@ -1,7 +1,7 @@ SRC_ROOT ?= ../.. include ${SRC_ROOT}/build/Common.gmake -CFLAGS += -DSCFG -I.. -I../../comio $(CRYPT_CFLAGS) $(SMBLIB_CFLAGS) $(UIFC-MT_CFLAGS) $(CIOLIB-MT_CFLAGS) $(XPDEV-MT_CFLAGS) $(ENCODE_CFLAGS) $(HASH_CFLAGS) +CFLAGS += -DSCFG -I.. -I../../comio $(CRYPT_CFLAGS) $(SMBLIB_CFLAGS) $(UIFC-MT_CFLAGS) $(CIOLIB-MT_CFLAGS) $(XPDEV-MT_CFLAGS) $(ENCODE_CFLAGS) $(HASH_CFLAGS) -DWRAPPER_EXPORTS -DSBBS_EXPORTS -D_CRYPT_DEFINED LDFLAGS += $(SMBLIB_LDFLAGS) $(ENCODE_LDFLAGS) $(HASH_LDFLAGS) $(UIFC-MT_LDFLAGS) $(CIOLIB-MT_LDFLAGS) $(XPDEV-MT_LDFLAGS) $(CRYPT_LDFLAGS) vpath %.c .. diff --git a/src/sbbs3/services.mk b/src/sbbs3/services.mk new file mode 100644 index 0000000000000000000000000000000000000000..39aef2bb1f86942833b05b8b289c32f849e65ecd --- /dev/null +++ b/src/sbbs3/services.mk @@ -0,0 +1,24 @@ +PWD := $(shell /bin/pwd) +SRC_ROOT ?= ${PWD}/.. +include $(SRC_ROOT)/build/Common.gmake +include extdeps.mk +vpath %.c ../comio + +include sbbsdefs.mk +override CFLAGS += $(SBBSDEFS) +override CFLAGS := $(filter-out -DSBBS_EXPORTS -DSMB_EXPORTS -DMD5_EXPORTS -DWRAPPER_EXPORTS -DB64_EXPORTS,$(CFLAGS)) +override MT_CFLAGS := $(filter-out -DSBBS_EXPORTS -DSMB_EXPORTS -DMD5_EXPORTS -DWRAPPER_EXPORTS -DB64_EXPORTS,$(MT_CFLAGS)) +override CFLAGS += -DSBBS_IMPORTS -DSMB_IMPORTS -DMD5_IMPORTS -DWRAPPER_IMPORTS -DB64_IMPORTS +override MT_CFLAGS += -DSBBS_IMPORTS -DSMB_IMPORTS -DMD5_IMPORTS -DWRAPPER_IMPORTS -DB64_IMPORTS +override CFLAGS := $(filter-out -DSERVICES_IMPORTS,$(CFLAGS)) +override CFLAGS += -DSERVICES_EXPORTS +override MT_CFLAGS := $(filter-out -DSERVICES_IMPORTS,$(MT_CFLAGS)) +override MT_CFLAGS += -DSERVICES_EXPORTS +override OBJS := +override MTOBJS := + +# Services Link Rule +$(SERVICES): $(SERVICE_OBJS) + @echo Linking $@ + $(QUIET)$(MKSHLIB) $(LDFLAGS) $(SERVICE_OBJS) $(SHLIBOPTS) -o $@ -lsbbs $(XPDEV-MT_LIBS) + rm $(MTOBJODIR)/nopen$(OFILE) diff --git a/src/sbbs3/sftp.cpp b/src/sbbs3/sftp.cpp index 295de248bd540d8b62b6a94db8f0e33b93b6d84d..32db136c7ec7a70cb850823bdadc43b560d71394 100644 --- a/src/sbbs3/sftp.cpp +++ b/src/sbbs3/sftp.cpp @@ -518,17 +518,21 @@ sftp_attr_string(sftp_file_attr_t attr) if (sftp_fattr_get_atime(attr, &u32)) { struct tm t; time_t tt = u32; +#ifndef __MINGW32__ if (gmtime_r(&tt, &t)) ret << "atime=" << std::put_time(&t, "%c") << u32 << ", "; else +#endif ret << "atime=" << u32 << ", "; } if (sftp_fattr_get_mtime(attr, &u32)) { struct tm t; time_t tt = u32; +#ifndef __MINGW32__ if (gmtime_r(&tt, &t)) ret << "mtime=" << std::put_time(&t, "%c") << u32 << ", "; else +#endif ret << "mtime=" << u32 << ", "; } u32 = sftp_fattr_get_ext_count(attr); diff --git a/src/sbbs3/targets.mk b/src/sbbs3/targets.mk index 0dc2782d17a58892cc706ffe79463e8c72cc9d82..37083b4d6a2ec88ac215fcc60ab76cb2123ba4ce 100644 --- a/src/sbbs3/targets.mk +++ b/src/sbbs3/targets.mk @@ -182,10 +182,10 @@ jsdoor: $(GIT_INFO) $(JS_DEPS) $(CRYPT_DEPS) $(XPDEV-MT_LIB) $(SMBLIB) $(UIFCLIB # Library dependencies $(SBBS): -$(FTPSRVR): $(SMBLIB) -$(WEBSRVR): -$(MAILSRVR): -$(SERVICES): +$(FTPSRVR): $(SBBS) $(XPDEV-MT_LIB) $(SMBLIB) +$(WEBSRVR): $(SBBS) $(XPDEV-MT_LIB) +$(MAILSRVR): $(SBBS) $(XPDEV-MT_LIB) $(SMBLIB) +$(SERVICES): $(SBBS) $(XPDEV-MT_LIB) $(SBBSCON): $(XPDEV-MT_LIB) $(SMBLIB) $(SBBSMONO): $(XPDEV-MT_LIB) $(SMBLIB) $(JSEXEC): $(XPDEV-MT_LIB) $(SMBLIB) diff --git a/src/sbbs3/uedit/GNUmakefile b/src/sbbs3/uedit/GNUmakefile index 2eacd9bd338d8e32f82d4b0ae82230fd1b7cdac1..738f5acf90da95a3e2c6fc5018018454a3c3e593 100644 --- a/src/sbbs3/uedit/GNUmakefile +++ b/src/sbbs3/uedit/GNUmakefile @@ -22,7 +22,7 @@ endif vpath %.c .. -CFLAGS += -DHAS_CURSES -I.. -I../../comio $(SMBLIB_CFLAGS) $(HASH_CFLAGS) $(ENCODE_CFLAGS) $(UIFC-MT_CFLAGS) $(CIOLIB-MT_CFLAGS) $(XPDEV-MT_CFLAGS) +CFLAGS += -DHAS_CURSES -I.. -I../../comio $(SMBLIB_CFLAGS) $(HASH_CFLAGS) $(ENCODE_CFLAGS) $(UIFC-MT_CFLAGS) $(CIOLIB-MT_CFLAGS) $(XPDEV-MT_CFLAGS) -DWRAPPER_EXPORTS -DSBBS_EXPORTS -D_CRYPT_DEFINED LDFLAGS += $(SMBLIB_LDFLAGS) $(ENCODE_LDFLAGS) $(HASH_LDFLAGS) $(UIFC-MT_LDFLAGS) $(CIOLIB-MT_LDFLAGS) $(XPDEV-MT_LDFLAGS) $(MT_LDFLAGS) $(UEDIT): $(OBJS) | $(MTOBJODIR) $(EXEODIR) diff --git a/src/sbbs3/uedit/uedit.c b/src/sbbs3/uedit/uedit.c index b6c7f19fe4f8ceb40db802459b7d2c6f26569521..0a0929b0c765bc0ce66ad3da3063add01bf0f465 100644 --- a/src/sbbs3/uedit/uedit.c +++ b/src/sbbs3/uedit/uedit.c @@ -69,7 +69,7 @@ char sepchar = 0xb3; * From FreeBSD src/lib/libc/string/strcasestr.c */ char * -strcasestr(const char *s, const char *find) +uedit_strcasestr(const char *s, const char *find) { char c, sc; size_t len; @@ -191,12 +191,12 @@ int do_cmd(char *cmd) { int i; -#ifdef HAS_CURSES +#if defined(HAS_CURSES) && !defined(_WIN32) if(cio_api.mode == CIOLIB_MODE_CURSES || cio_api.mode == CIOLIB_MODE_CURSES_IBM) endwin(); #endif i=system(cmd); -#ifdef HAS_CURSES +#if defined(HAS_CURSES) && !defined(_WIN32) if(cio_api.mode == CIOLIB_MODE_CURSES || cio_api.mode == CIOLIB_MODE_CURSES_IBM) refresh(); #endif @@ -1703,7 +1703,7 @@ int finduser(scfg_t *cfg, user_t *user) for(i=1; i<=last; i++) { user->number=i; GETUSERDAT(cfg,user); - if(strcasestr(user->alias, str)!=NULL || strcasestr(user->name, str)!=NULL || strcasestr(user->handle, str)!=NULL + if(uedit_strcasestr(user->alias, str)!=NULL || uedit_strcasestr(user->name, str)!=NULL || uedit_strcasestr(user->handle, str)!=NULL || user->number==un) { FREE_AND_NULL(opt[j]); if((opt[j]=(struct user_list *)malloc(sizeof(struct user_list)))==NULL) @@ -1755,7 +1755,7 @@ int getuser(scfg_t *cfg, user_t *user, char* str) for(i=1; i<=last; i++) { user->number=i; GETUSERDAT(cfg,user); - if(strcasestr(user->alias, str)!=NULL || strcasestr(user->name, str)!=NULL || strcasestr(user->handle, str)!=NULL) { + if(uedit_strcasestr(user->alias, str)!=NULL || uedit_strcasestr(user->name, str)!=NULL || uedit_strcasestr(user->handle, str)!=NULL) { FREE_AND_NULL(opt[j]); if((opt[j]=(struct user_list *)malloc(sizeof(struct user_list)))==NULL) allocfail(sizeof(struct user_list)); diff --git a/src/sbbs3/umonitor/GNUmakefile b/src/sbbs3/umonitor/GNUmakefile index 4502e049d2e7f76f3f0dbd7a7ae05dbf28b40afe..03f1db805901e40352948eef6d8e1225f5091de3 100644 --- a/src/sbbs3/umonitor/GNUmakefile +++ b/src/sbbs3/umonitor/GNUmakefile @@ -22,7 +22,7 @@ endif vpath %.c .. -CFLAGS += -I.. -I../../comio $(SMBLIB_CFLAGS) $(ENCODE_CFLAGS) $(HASH_CFLAGS) $(UIFC-MT_CFLAGS) $(CIOLIB-MT_CFLAGS) $(XPDEV-MT_CFLAGS) +CFLAGS += -I.. -I../../comio $(SMBLIB_CFLAGS) $(ENCODE_CFLAGS) $(HASH_CFLAGS) $(UIFC-MT_CFLAGS) $(CIOLIB-MT_CFLAGS) $(XPDEV-MT_CFLAGS) -DWRAPPER_EXPORTS -DSBBS_EXPORTS LDFLAGS += $(SMBLIB_LDFLAGS) $(ENCODE_LDFLAGS) $(HASH_LDFLAGS) $(UIFC-MT_LDFLAGS) $(CIOLIB-MT_LDFLAGS) $(XPDEV-MT_LDFLAGS) $(MT_LDFLAGS) $(UMONITOR): $(OBJS) diff --git a/src/sbbs3/websrvr.mk b/src/sbbs3/websrvr.mk new file mode 100644 index 0000000000000000000000000000000000000000..9d1910158929f5fa73dd01e5a5c47dafa70f321d --- /dev/null +++ b/src/sbbs3/websrvr.mk @@ -0,0 +1,21 @@ +PWD := $(shell /bin/pwd) +SRC_ROOT ?= ${PWD}/.. +include $(SRC_ROOT)/build/Common.gmake +include extdeps.mk +vpath %.c ../comio + +include sbbsdefs.mk +override CFLAGS += $(SBBSDEFS) +override CFLAGS := $(filter-out -DSBBS_EXPORTS -DSMB_EXPORTS -DMD5_EXPORTS -DWRAPPER_EXPORTS -DB64_EXPORTS,$(CFLAGS)) +override MT_CFLAGS := $(filter-out -DSBBS_EXPORTS -DSMB_EXPORTS -DMD5_EXPORTS -DWRAPPER_EXPORTS -DB64_EXPORTS,$(MT_CFLAGS)) +override CFLAGS += -DSBBS_IMPORTS -DSMB_IMPORTS -DMD5_IMPORTS -DWRAPPER_IMPORTS -DB64_IMPORTS +override MT_CFLAGS += -DSBBS_IMPORTS -DSMB_IMPORTS -DMD5_IMPORTS -DWRAPPER_IMPORTS -DB64_IMPORTS +override CFLAGS := $(filter-out -DWEBSRVR_IMPORTS,$(CFLAGS)) +override CFLAGS += -DWEBSRVR_EXPORTS +override CFLAGS := $(filter-out -DWEBSRVR_IMPORTS,$(CFLAGS)) +override CFLAGS += -DWEBSRVR_EXPORTS + +# Web Server Link Rule +$(WEBSRVR): $(WEB_OBJS) + @echo Linking $@ + $(QUIET)$(MKSHLIB) $(LDFLAGS) $(WEB_OBJS) $(SHLIBOPTS) -o $@ $(ENCODE_LIBS) -lsbbs $(XPDEV-MT_LIBS) diff --git a/src/smblib/GNUmakefile b/src/smblib/GNUmakefile index cac443a6fbff66a5382e66f78c672077422f7d8a..446b2f80b8573d8c799d67f4aac92b1ca95d3935 100644 --- a/src/smblib/GNUmakefile +++ b/src/smblib/GNUmakefile @@ -18,7 +18,8 @@ SRC_ROOT = .. include $(SRC_ROOT)/build/Common.gmake # defines clean and output directory rules CFLAGS += -I$(XPDEV_SRC) $(ENCODE_CFLAGS) $(HASH_CFLAGS) $(XPDEV_CFLAGS) - +CFLAGS := $(filter-out -DSMB_IMPORTS -DMD5_IMPORTS -DB64_IMPORTS,$(CFLAGS)) +CFLAGS += -DSMB_EXPORTS -DMD5_EXPORTS -DB64_EXPORTS # SMBLIB Library Link Rule $(SMBLIB_BUILD): $(OBJS) | $(OBJODIR) diff --git a/src/syncterm/GNUmakefile b/src/syncterm/GNUmakefile index 538f93a47e6c6b13a0091d68683686fe356e5417..835ab170cb94877dcdab16e945a2df9d90369311 100644 --- a/src/syncterm/GNUmakefile +++ b/src/syncterm/GNUmakefile @@ -28,7 +28,7 @@ ifdef WITHOUT_CRYPTLIB else OBJS += $(MTOBJODIR)$(DIRSEP)ssh$(OFILE) OBJS += $(MTOBJODIR)$(DIRSEP)telnets$(OFILE) - CFLAGS += $(CRYPT_CFLAGS) $(SFTP-MT_CFLAGS) + CFLAGS += $(CRYPT_CFLAGS) $(SFTP-MT_CFLAGS) -D_CRYPT_DEFINED CRYPT_LDFLAGS += $(SFTP-MT_LDFLAGS) EXTRA_LIBS += $(CRYPT_LIBS) $(SFTP-MT_LIBS) STATIC_CRYPTLIB := true @@ -61,6 +61,8 @@ CFLAGS += -DSYSTEM_LIST_DIR=\"${SYSTEM_LIST_DIR}\" CFLAGS += $(UIFC-MT_CFLAGS) $(CIOLIB-MT_CFLAGS) $(XPDEV-MT_CFLAGS) $(ENCODE_CFLAGS) $(HASH_CFLAGS) -I../sbbs3 -I../comio LDFLAGS += $(UIFC-MT_LDFLAGS) $(CIOLIB-MT_LDFLAGS) $(XPDEV-MT_LDFLAGS) $(ENCODE_LDFLAGS) $(HASH_LDFLAGS) $(CRYPT_LDFLAGS) +CFLAGS := $(filter-out -DB64_IMPORTS,$(CFLAGS)) +CFLAGS += -DB64_EXPORTS -DCIOLIB_EXPORTS vpath %.c ../sbbs3 ../uifc ../comio diff --git a/src/xpdev/Common.gmake b/src/xpdev/Common.gmake index 1ce8175ab51082d20ce77406092e2a227991c784..8195169100e4c73e4ac81195dfa92a9b3010b079 100644 --- a/src/xpdev/Common.gmake +++ b/src/xpdev/Common.gmake @@ -29,8 +29,12 @@ ifeq ($(os),linux) # Linux XPDEV-MT_LIBS += -lpthread endif ifdef win # MinGW32 - XPDEV_LIBS += -lws2_32 -lwinmm -lnetapi32 -liphlpapi - XPDEV-MT_LIBS += -lws2_32 -lwinmm -lnetapi32 -liphlpapi + XPDEV_LIBS += -lws2_32 -lwinmm -lnetapi32 -liphlpapi + XPDEV-MT_LIBS += -lws2_32 -lwinmm -lnetapi32 -liphlpapi + XPDEV_CFLAGS += -DWRAPPER_EXPORTS + XPDEV-MT_CFLAGS += -DWRAPPER_EXPORTS + XPDEV_LIBS += $(XPDEV_SRC)$(DIRSEP)$(MTOBJODIR)$(DIRSEP)xpmap$(OFILE) + XPDEV-MT_LIBS += $(XPDEV_SRC)$(DIRSEP)$(MTOBJODIR)$(DIRSEP)xpmap$(OFILE) endif ifndef win ifeq ($(shell if [ -c /dev/urandom ] ; then echo YES ; fi),YES) @@ -188,13 +192,15 @@ X_PRESENT = $(shell if [ ! \( -f $(X_HEADERS)$(DIRSEP)X11$(DIRSEP)Xlib.h -a -f $ ifeq ($(X_PRESENT),NO) NO_X=1 else - ifeq ($(os),darwin) # No X11 for OSX - ifndef HAS_DLOPEN - NO_X=1 + ifneq ($(os),win32) + ifeq ($(os),darwin) # No X11 for OSX + ifndef HAS_DLOPEN + NO_X=1 + endif endif + XPDEV-MT_CFLAGS += -I$(X_HEADERS) + XPDEV_CFLAGS += -I$(X_HEADERS) endif - XPDEV-MT_CFLAGS += -I$(X_HEADERS) - XPDEV_CFLAGS += -I$(X_HEADERS) endif ifndef WITHOUT_PORTAUDIO diff --git a/src/xpdev/GNUmakefile b/src/xpdev/GNUmakefile index ed119f58e4b5597393312b4ee952b7a62eeb28b9..a909140e287e99480c1e35b07c6fe26b3e0e675a 100644 --- a/src/xpdev/GNUmakefile +++ b/src/xpdev/GNUmakefile @@ -15,13 +15,18 @@ ifndef NO_PULSEAUDIO endif endif -CFLAGS += -DSOUNDCARD_H_IN=$(shell if [ -f /usr/include/sys/soundcard.h ] ; then echo 1 ; elif [ -f /usr/include/soundcard.h ] ; then echo 2 ; elif [ -f /usr/include/linux/soundcard.h ] ; then echo 3 ; else echo 0 ; fi) -I. $(XPDEV_CFLAGS) +ifneq ($(os),win32) + CFLAGS += -DSOUNDCARD_H_IN=$(shell if [ -f /usr/include/sys/soundcard.h ] ; then echo 1 ; elif [ -f /usr/include/soundcard.h ] ; then echo 2 ; elif [ -f /usr/include/linux/soundcard.h ] ; then echo 3 ; else echo 0 ; fi) -I. $(XPDEV_CFLAGS) +endif ifndef WITHOUT_ALSA_SOUND ifeq ($(shell if [ -f /usr/include/alsa/asoundlib.h ] ; then echo YES ; fi),YES) CFLAGS += -DUSE_ALSA_SOUND endif endif -MT_CFLAGS += $(XPDEV-MT_CFLAGS) +CFLAGS := $(filter-out -DWRAPPER_IMPORTS,$(CFLAGS)) +MT_CFLAGS += $(XPDEV-MT_CFLAGS) +MT_CFLAGS := $(filter-out -DWRAPPER_IMPORTS,$(MT_CFLAGS)) +MT_CFLAGS += -DWRAPPER_EXPORTS ifdef WITH_SDL_AUDIO MTOBJS += $(MTOBJODIR)$(DIRSEP)sdlfuncs$(OFILE) diff --git a/src/xpdev/genwrap.h b/src/xpdev/genwrap.h index d07d86962765313c854e881b0069027fceb842db..26f3b0454b54a3a7067dfa8b418bcc3ec531dec0 100644 --- a/src/xpdev/genwrap.h +++ b/src/xpdev/genwrap.h @@ -259,8 +259,8 @@ extern "C" { #endif #if defined(NEEDS_STRLCPY) - size_t strlcpy(char *dst, const char *src, size_t size); - size_t strlcat(char *dst, const char *src, size_t dstsize); + DLLEXPORT size_t strlcpy(char *dst, const char *src, size_t size); + DLLEXPORT size_t strlcat(char *dst, const char *src, size_t dstsize); #endif #if defined(_WIN32)