From 3d525e4301267459257ab03aef6b073ccf14f847 Mon Sep 17 00:00:00 2001
From: CNLohr <lohr85@gmail.com>
Date: Sat, 6 May 2023 01:35:29 -0400
Subject: [PATCH] Make it easier to librarify minichlink. + Pull static
 libgcc.a from the right place.

---
 ch32v003fun/ch32v003fun.mk |   2 +-
 minichlink/Makefile        |   2 +-
 minichlink/minichlink.c    |  28 +++++++++++++++++++++++-----
 minichlink/minichlink.exe  | Bin 79872 -> 80384 bytes
 minichlink/minichlink.h    |  14 ++++++++++++++
 5 files changed, 39 insertions(+), 7 deletions(-)

diff --git a/ch32v003fun/ch32v003fun.mk b/ch32v003fun/ch32v003fun.mk
index 0f74ac4..11ac26b 100644
--- a/ch32v003fun/ch32v003fun.mk
+++ b/ch32v003fun/ch32v003fun.mk
@@ -14,7 +14,7 @@ CFLAGS+= \
 	-nostdlib \
 	-I. -Wall
 
-LDFLAGS+=-T $(CH32V003FUN)/ch32v003fun.ld -Wl,--gc-sections -L../../misc -lgcc
+LDFLAGS+=-T $(CH32V003FUN)/ch32v003fun.ld -Wl,--gc-sections -L$(CH32V003FUN)/../misc -lgcc
 
 SYSTEM_C:=$(CH32V003FUN)/ch32v003fun.c
 
diff --git a/minichlink/Makefile b/minichlink/Makefile
index e90cca9..5f83f33 100644
--- a/minichlink/Makefile
+++ b/minichlink/Makefile
@@ -38,7 +38,7 @@ minichlink.so : $(C_S)
 	gcc -o $@ $^ $(LDFLAGS) $(CFLAGS) $(INCS) -shared -fPIC
 
 minichlink.dll : $(C_S)
-	x86_64-w64-mingw32-gcc -o $@ $^ $(LDFLAGS) $(CFLAGS) $(INCS) -shared
+	x86_64-w64-mingw32-gcc -o $@ $^ $(LDFLAGS) $(CFLAGS) $(INCS) -shared -DMINICHLINK_AS_LIBRARY
 
 install_udev_rules :
 	cp 99-WCH-LinkE.rules /etc/udev/rules.d/
diff --git a/minichlink/minichlink.c b/minichlink/minichlink.c
index d64b844..c4d2dd8 100644
--- a/minichlink/minichlink.c
+++ b/minichlink/minichlink.c
@@ -11,14 +11,14 @@
 #include "minichlink.h"
 #include "../ch32v003fun/ch32v003fun.h"
 
-static int64_t StringToMemoryAddress( const char * number );
-static void StaticUpdatePROGBUFRegs( void * dev );
-static int InternalUnlockBootloader( void * dev );
+static int64_t StringToMemoryAddress( const char * number ) __attribute__((used));
+static void StaticUpdatePROGBUFRegs( void * dev ) __attribute__((used));
+static int InternalUnlockBootloader( void * dev ) __attribute__((used));
 
 void TestFunction(void * v );
 struct MiniChlinkFunctions MCF;
 
-int main( int argc, char ** argv )
+void * MiniCHLinkInitAsDLL( struct MiniChlinkFunctions ** MCFO )
 {
 	void * dev = 0;
 	if( (dev = TryInit_WCHLinkE()) )
@@ -34,6 +34,24 @@ int main( int argc, char ** argv )
         fprintf( stderr, "Found NHC-Link042 Programmer\n" );
     }
 	else
+	{
+		fprintf( stderr, "Error: Could not initialize any supported programmers\n" );
+		return 0;
+	}
+	
+	SetupAutomaticHighLevelFunctions( dev );
+	if( MCFO )
+	{
+		*MCFO = &MCF;
+	}
+	return dev;
+}
+
+#if !defined( MINICHLINK_AS_LIBRARY ) && !defined( MINICHLINK_IMPORT )
+int main( int argc, char ** argv )
+{
+	void * dev = MiniCHLinkInitAsDLL( 0 );
+	if( !dev )
 	{
 		fprintf( stderr, "Error: Could not initialize any supported programmers\n" );
 		return -32;
@@ -516,7 +534,7 @@ unimplemented:
 	fprintf( stderr, "Error: Command '%s' unimplemented on this programmer.\n", lastcommand );
 	return -1;
 }
-
+#endif
 
 #if defined(WINDOWS) || defined(WIN32) || defined(_WIN32)
 #define strtoll _strtoi64
diff --git a/minichlink/minichlink.exe b/minichlink/minichlink.exe
index eda0a5a992c0971a374653f4e5e505ddabd6859f..e9436b78095303f977b4ba748ec43a27adeefb5c 100644
GIT binary patch
delta 19747
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
Ud7yO^|GP%;-G0EM7yp3&FVyy0RR910

delta 19442
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

diff --git a/minichlink/minichlink.h b/minichlink/minichlink.h
index 4bbd18a..0462984 100644
--- a/minichlink/minichlink.h
+++ b/minichlink/minichlink.h
@@ -130,8 +130,22 @@ struct InternalState
 #define DMCFGR       0x7D
 #define DMSHDWCFGR   0x7E
 
+#if defined( WIN32 ) || defined( _WIN32 )
+#if defined( MINICHLINK_AS_LIBRARY )
+	#define DLLDECORATE __declspec(dllexport)
+#elif defined( MINICHLINK_IMPORT )
+	#define DLLDECORATE __declspec(dllimport)
+#else
+	#define DLLDECORATE
+#endif
+#else
+	#define DLLDECORATE
+#endif
+
+void * MiniCHLinkInitAsDLL(struct MiniChlinkFunctions ** MCFO) DLLDECORATE;
 extern struct MiniChlinkFunctions MCF;
 
+
 // Returns 'dev' on success, else 0.
 void * TryInit_WCHLinkE();
 void * TryInit_ESP32S2CHFUN();
-- 
GitLab