But there's still one problem. Using a build script in msys2 can't really build a complete codeblocks. wxSmith related plugins, which are considered the best plugins in CB, always give us errors:
wxsarraystringeditordlg.cpp: In member function 'virtual const wxEventTable* wxsArrayStringEditorDlg::GetEventTable() const':
wxsarraystringeditordlg.cpp:39:19: error: definition of static data member 'wxsArrayStringEditorDlg::sm_eventTable' of dllimport'd class
39 | BEGIN_EVENT_TABLE(wxsArrayStringEditorDlg,wxScrollingDialog)
| ^~~~~~~~~~~~~~~~~~~~~~~
D:/msys64/mingw32/include/wx-3.2/wx/event.h:4371:24: note: in definition of macro 'wxBEGIN_EVENT_TABLE'
4371 | const wxEventTable theClass::sm_eventTable = \
| ^~~~~~~~
wxsarraystringeditordlg.cpp:39:1: note: in expansion of macro 'BEGIN_EVENT_TABLE'
39 | BEGIN_EVENT_TABLE(wxsArrayStringEditorDlg,wxScrollingDialog)
| ^~~~~~~~~~~~~~~~~
wxsarraystringeditordlg.cpp: In member function 'virtual wxEventHashTable& wxsArrayStringEditorDlg::GetEventHashTable() const':
wxsarraystringeditordlg.cpp:39:19: error: definition of static data member 'wxsArrayStringEditorDlg::sm_eventHashTable' of dllimport'd class
39 | BEGIN_EVENT_TABLE(wxsArrayStringEditorDlg,wxScrollingDialog)
| ^~~~~~~~~~~~~~~~~~~~~~~
D:/msys64/mingw32/include/wx-3.2/wx/event.h:4375:22: note: in definition of macro 'wxBEGIN_EVENT_TABLE'
4375 | wxEventHashTable theClass::sm_eventHashTable(theClass::sm_eventTable); \
| ^~~~~~~~
wxsarraystringeditordlg.cpp:39:1: note: in expansion of macro 'BEGIN_EVENT_TABLE'
39 | BEGIN_EVENT_TABLE(wxsArrayStringEditorDlg,wxScrollingDialog)
| ^~~~~~~~~~~~~~~~~
wxsarraystringeditordlg.cpp: In constructor 'wxsArrayStringEditorDlg::wxsArrayStringEditorDlg(wxWindow*, wxArrayString&, wxWindowID)':
wxsarraystringeditordlg.cpp:34:12: error: definition of static data member 'wxsArrayStringEditorDlg::ID_TEXTCTRL1' of dllimport'd class
34 | const long wxsArrayStringEditorDlg::ID_TEXTCTRL1 = wxNewId();
| ^~~~~~~~~~~~~~~~~~~~~~~
Hi, thanks.
That's why you disable the wxSmith related option for building C::B
./configure --disable-pch --with-contrib-plugins=all,-wxsmith,-wxsmithaui,-wxsmithcontrib,-Valgrind --prefix=/opt/codeblocks
I see it in:
https://github.com/zxunge/i686-codeblocks-builds/blob/main/.ci/build.sh
I have forked the project, and enabled the github action, and I manually start a build action runner for the 64bit C::B.
See here:
https://github.com/asmwarrior/x86-codeblocks-builds/actions/runs/10446493022
It looks like the build is successful. When I download the result file, in github, it is called Artifacts, named "codeblocks64.zip"
I download the zip file, and extract it in my computer, it looks like the structure is like "Linux file system", here is the structure:
# tree
.
├── bin
│ ├── cb_console_runner.exe
│ ├── cb_share_config.exe
│ ├── codeblocks.exe
│ ├── libcodeblocks-0.dll
│ ├── libwxchartctrl-0.dll
│ ├── libwxcustombutton-0.dll
│ ├── libwxflatnotebook-0.dll
│ ├── libwximagepanel-0.dll
│ ├── libwxkwic-0.dll
│ ├── libwxled-0.dll
│ ├── libwxmathplot-0.dll
│ ├── libwxsmithlib.dll
│ └── libwxspeedbutton-0.dll
├── include
│ ├── codeblocks
│ │ ├── annoyingdialog.h
│ │ ├── autodetectcompilers.h
│ │ ├── backgroundthread.h
│ │ ├── base64.h
│ │ ├── blockallocated.h
│ │ ├── cbart_provider.h
│ │ ├── cbauibook.h
│ │ ├── cbcolourmanager.h
│ │ ├── cbdebugger_interfaces.h
...
I think we need a tool named "copy dependency", I mean we need a tool to copy all the dependency dlls to the bin folder.
This tool could be used: brechtsanders/pedeps: Cross-platform C library to read data from PE/PE+ files (the format of Windows .exe and .dll files) (https://github.com/brechtsanders/pedeps)
Another issue is that we don't need the "include" folders.
Also, I think the file structure could be like "Windows" system? I mean there is a share folder in the same folder of the codeblocks.exe.
But why a lot of undefined errors?
g++.exe -shared -LD:/msys64/opt/wxwidgets3.2/lib\gcc_dll -Ldevel32 .objs32\\sdk\\scripting\\bindings\\sc_plugin.o .objs32\\sdk\\scripting\\bindings\\scriptbindings.o .objs32\\sdk\\scripting\\bindings\\sc_wxtypes.o .objs32\\sdk\\scripting\\bindings\\sc_utils.o .objs32\\sdk\\scripting\\bindings\\sc_util_dialogs.o .objs32\\sdk\\scripting\\bindings\\sc_tinyxml.o .objs32\\sdk\\scripting\\bindings\\sc_progress.o .objs32\\sdk\\scripting\\bindings\\sc_io.o .objs32\\sdk\\scripting\\bindings\\sc_globals.o .objs32\\sdk\\scripting\\bindings\\sc_consts.o .objs32\\sdk\\workspaceloader.o .objs32\\sdk\\uservarmanager.o .objs32\\sdk\\toolsmanager.o .objs32\\sdk\\tinywxuni.o .objs32\\sdk\\templatemanager.o .objs32\\sdk\\selecttargetdlg.o .objs32\\sdk\\searchresultslog.o .objs32\\sdk\\sdk_events.o .objs32\\sdk\\scrollingdialog.o .objs32\\sdk\\scriptsecuritywarningdlg.o .objs32\\sdk\\scriptingmanager.o .objs32\\sdk\\mozilla_chardet\\src\\nsEUCJPProber.o .objs32\\sdk\\mozilla_chardet\\src\\nsMBCSSM.o .objs32\\sdk\\mozilla_chardet\\src\\nsMBCSGroupProber.o .objs32\\sdk\\mozilla_chardet\\src\\nsLatin1Prober.o .objs32\\sdk\\mozilla_chardet\\src\\nsHebrewProber.o .objs32\\sdk\\mozilla_chardet\\src\\nsGB2312Prober.o .objs32\\sdk\\mozilla_chardet\\src\\nsEscSM.o .objs32\\sdk\\mozilla_chardet\\src\\nsEscCharsetProber.o .objs32\\sdk\\mozilla_chardet\\src\\nsEUCTWProber.o .objs32\\sdk\\mozilla_chardet\\src\\nsEUCKRProber.o .objs32\\sdk\\mozilla_chardet\\src\\nsSBCSGroupProber.o .objs32\\sdk\\mozilla_chardet\\src\\nsCharSetProber.o .objs32\\sdk\\mozilla_chardet\\src\\nsBig5Prober.o .objs32\\sdk\\mozilla_chardet\\src\\LangThaiModel.o .objs32\\sdk\\mozilla_chardet\\src\\LangHungarianModel.o .objs32\\sdk\\mozilla_chardet\\src\\LangHebrewModel.o .objs32\\sdk\\mozilla_chardet\\src\\LangGreekModel.o .objs32\\sdk\\mozilla_chardet\\src\\LangCyrillicModel.o .objs32\\sdk\\mozilla_chardet\\src\\LangBulgarianModel.o .objs32\\sdk\\mozilla_chardet\\src\\JpCntx.o .objs32\\sdk\\pipedprocess.o .objs32\\sdk\\projectloader_hooks.o .objs32\\sdk\\projectloader.o .objs32\\sdk\\projectlayoutloader.o .objs32\\sdk\\projectfileoptionsdlg.o .objs32\\sdk\\projectfile.o .objs32\\sdk\\projectbuildtarget.o .objs32\\sdk\\printing_types.o .objs32\\sdk\\pluginsconfigurationdlg.o .objs32\\sdk\\pluginmanager.o .objs32\\sdk\\personalitymanager.o .objs32\\sdk\\newfromtemplatedlg.o .objs32\\sdk\\multiselectdlg.o .objs32\\sdk\\mozilla_chardet\\src\\nsUniversalDetector.o .objs32\\sdk\\mozilla_chardet\\src\\nsUTF8Prober.o .objs32\\sdk\\mozilla_chardet\\src\\nsSJISProber.o .objs32\\sdk\\mozilla_chardet\\src\\nsSBCharSetProber.o .objs32\\sdk\\mozilla_chardet\\src\\CharDistribution.o .objs32\\sdk\\projectmanager.o .objs32\\sdk\\projecttemplateloader.o .objs32\\sdk\\projectsfilemasksdlg.o .objs32\\sdk\\xtra_res.o .objs32\\sdk\\editorlexerloader.o .objs32\\sdk\\filemanager.o .objs32\\sdk\\filegroupsandmasks.o .objs32\\sdk\\filefilters.o .objs32\\sdk\\externaldepsdlg.o .objs32\\sdk\\encodingdetector.o .objs32\\sdk\\edittooldlg.o .objs32\\sdk\\editpathdlg.o .objs32\\sdk\\editpairdlg.o .objs32\\sdk\\editormanager.o .objs32\\sdk\\findreplacedlg.o .objs32\\sdk\\editorcolourset.o .objs32\\sdk\\editorbase.o .objs32\\sdk\\editor_utils.o .objs32\\sdk\\editor_hooks.o .objs32\\sdk\\editarraystringdlg.o .objs32\\sdk\\editarrayorderdlg.o .objs32\\sdk\\editarrayfiledlg.o .objs32\\sdk\\debuggermanager.o .objs32\\sdk\\manager.o .objs32\\sdk\\menuitemsmanager.o .objs32\\sdk\\cygwin.o .objs32\\sdk\\macrosmanager.o .objs32\\sdk\\logmanager.o .objs32\\sdk\\loggers.o .objs32\\sdk\\infowindow.o .objs32\\sdk\\incremental_select_helper.o .objs32\\sdk\\importers_globals.o .objs32\\sdk\\globals.o .objs32\\sdk\\genericmultilinenotesdlg.o .objs32\\sdk\\autodetectcompilers.o .objs32\\sdk\\cbexception.o .objs32\\sdk\\cbeditorprintout.o .objs32\\sdk\\cbeditor.o .objs32\\sdk\\cbdebugger_interfaces.o .objs32\\sdk\\cbcolourmanager.o .objs32\\sdk\\cbauibook.o .objs32\\sdk\\cbart_provider.o .objs32\\sdk\\blockallocated.o .objs32\\sdk\\base64.o .objs32\\sdk\\cbplugin.o .objs32\\sdk\\annoyingdialog.o .objs32\\sdk\\compiler.o .objs32\\sdk\\crc32.o .objs32\\sdk\\confirmreplacedlg.o .objs32\\sdk\\configuretoolsdlg.o .objs32\\sdk\\configurationpanel.o .objs32\\sdk\\configmanager.o .objs32\\sdk\\compiletargetbase.o .objs32\\sdk\\compileroptions.o .objs32\\sdk\\compilerfactory.o .objs32\\sdk\\compilercommandgenerator.o .objs32\\sdk\\compileoptionsbase.o .objs32\\sdk\\ccmanager.o .objs32\\sdk\\cbworkspace.o .objs32\\sdk\\cbtreectrl.o .objs32\\sdk\\cbthreadpool.o .objs32\\sdk\\cbstyledtextctrl.o .objs32\\sdk\\cbstatusbar.o .objs32\\sdk\\cbproject.o .objs32\\sdk\\configmanager-revision.o -o devel32\\codeblocks.dll -Wl,--enable-auto-image-base -Wl,--add-stdcall-alias -Wl,--enable-auto-import -Wl,--no-undefined -lwxmsw32u -lshfolder -ltxml -lwxscintilla_cb -lsquirrel -lgdi32
D:/msys64/opt/mingw32/bin/../lib/gcc/i686-w64-mingw32/14.2.0/../../../../i686-w64-mingw32/bin/ld.exe: devel32/libwxscintilla_cb.a(wxscintilla.o):wxscintilla.cp:(.text+0x3ff): undefined reference to `_imp___ZN9wxControl6CreateEP8wxWindowiRK7wxPointRK6wxSizelRK11wxValidatorRK8wxString'
D:/msys64/opt/mingw32/bin/../lib/gcc/i686-w64-mingw32/14.2.0/../../../../i686-w64-mingw32/bin/ld.exe: devel32/libwxscintilla_cb.a(wxscintilla.o):wxscintilla.cp:(.text+0x4a8): undefined reference to `_imp___ZN12wxWindowBase14SetInitialSizeERK6wxSize'
D:/msys64/opt/mingw32/bin/../lib/gcc/i686-w64-mingw32/14.2.0/../../../../i686-w64-mingw32/bin/ld.exe: devel32/libwxscintilla_cb.a(wxscintilla.o):wxscintilla.cp:(.text+0xad84): undefined reference to `_imp___ZN17wxStringTokenizerC1ERK8wxStringS2_21wxStringTokenizerMode'
D:/msys64/opt/mingw32/bin/../lib/gcc/i686-w64-mingw32/14.2.0/../../../../i686-w64-mingw32/bin/ld.exe: devel32/libwxscintilla_cb.a(wxscintilla.o):wxscintilla.cp:(.text+0xadae): undefined reference to `_imp___ZN17wxStringTokenizer12GetNextTokenEv'
D:/msys64/opt/mingw32/bin/../lib/gcc/i686-w64-mingw32/14.2.0/../../../../i686-w64-mingw32/bin/ld.exe: devel32/libwxscintilla_cb.a(wxscintilla.o):wxscintilla.cp:(.text+0xb0a6): undefined reference to `_imp___ZNK17wxStringTokenizer13HasMoreTokensEv'
D:/msys64/opt/mingw32/bin/../lib/gcc/i686-w64-mingw32/14.2.0/../../../../i686-w64-mingw32/bin/ld.exe: devel32/libwxscintilla_cb.a(wxscintilla.o):wxscintilla.cp:(.text+0xb1a7): undefined reference to `_imp___ZN6wxFont11SetFaceNameERK8wxString'
D:/msys64/opt/mingw32/bin/../lib/gcc/i686-w64-mingw32/14.2.0/../../../../i686-w64-mingw32/bin/ld.exe: devel32/libwxscintilla_cb.a(wxscintilla.o):wxscintilla.cp:(.text+0xb583): undefined reference to `_imp___ZN7wxFFileC1ERK8wxStringS2_'
D:/msys64/opt/mingw32/bin/../lib/gcc/i686-w64-mingw32/14.2.0/../../../../i686-w64-mingw32/bin/ld.exe: devel32/libwxscintilla_cb.a(wxscintilla.o):wxscintilla.cp:(.text+0xb5aa): undefined reference to `_imp__wxConvCurrent'
D:/msys64/opt/mingw32/bin/../lib/gcc/i686-w64-mingw32/14.2.0/../../../../i686-w64-mingw32/bin/ld.exe: devel32/libwxscintilla_cb.a(wxscintilla.o):wxscintilla.cp:(.text+0xb5d8): undefined reference to `_imp___ZN7wxFFile5WriteERK8wxStringRK8wxMBConv'
D:/msys64/opt/mingw32/bin/../lib/gcc/i686-w64-mingw32/14.2.0/../../../../i686-w64-mingw32/bin/ld.exe: devel32/libwxscintilla_cb.a(wxscintilla.o):wxscintilla.cp:(.text+0xb6a8): undefined reference to `_imp___ZN7wxFFileC1ERK8wxStringS2_'
D:/msys64/opt/mingw32/bin/../lib/gcc/i686-w64-mingw32/14.2.0/../../../../i686-w64-mingw32/bin/ld.exe: devel32/libwxscintilla_cb.a(wxscintilla.o):wxscintilla.cp:(.text+0xb704): undefined reference to `_imp___ZN7wxFFile7ReadAllEP8wxStringRK8wxMBConv'
D:/msys64/opt/mingw32/bin/../lib/gcc/i686-w64-mingw32/14.2.0/../../../../i686-w64-mingw32/bin/ld.exe: devel32/libwxscintilla_cb.a(wxscintilla.o):wxscintilla.cp:(.text+0xc0a4): undefined reference to `_imp___ZN9wxPaintDCC1EP8wxWindow'
D:/msys64/opt/mingw32/bin/../lib/gcc/i686-w64-mingw32/14.2.0/../../../../i686-w64-mingw32/bin/ld.exe: devel32/libwxscintilla_cb.a(wxscintilla.o):wxscintilla.cp:(.text+0xc1cb): undefined reference to `_imp___ZN11wxScrollBar12ms_classInfoE'
D:/msys64/opt/mingw32/bin/../lib/gcc/i686-w64-mingw32/14.2.0/../../../../i686-w64-mingw32/bin/ld.exe: devel32/libwxscintilla_cb.a(wxscintilla.o):wxscintilla.cp:(.text+0xdb33): undefined reference to `_imp__wxEVT_PAINT'
D:/msys64/opt/mingw32/bin/../lib/gcc/i686-w64-mingw32/14.2.0/../../../../i686-w64-mingw32/bin/ld.exe: devel32/libwxscintilla_cb.a(wxscintilla.o):wxscintilla.cp:(.text+0xdb42): undefined reference to `_imp__wxEVT_PAINT'
D:/msys64/opt/mingw32/bin/../lib/gcc/i686-w64-mingw32/14.2.0/../../../../i686-w64-mingw32/bin/ld.exe: devel32/libwxscintilla_cb.a(wxscintilla.o):wxscintilla.cp:(.text+0xdbb4): undefined reference to `_imp__wxEVT_SCROLLWIN_TOP'
D:/msys64/opt/mingw32/bin/../lib/gcc/i686-w64-mingw32/14.2.0/../../../../i686-w64-mingw32/bin/ld.exe: devel32/libwxscintilla_cb.a(wxscintilla.o):wxscintilla.cp:(.text+0xdbc3): undefined reference to `_imp__wxEVT_SCROLLWIN_TOP'
D:/msys64/opt/mingw32/bin/../lib/gcc/i686-w64-mingw32/14.2.0/../../../../i686-w64-mingw32/bin/ld.exe: devel32/libwxscintilla_cb.a(wxscintilla.o):wxscintilla.cp:(.text+0xdc32): undefined reference to `_imp__wxEVT_SCROLLWIN_BOTTOM'
D:/msys64/opt/mingw32/bin/../lib/gcc/i686-w64-mingw32/14.2.0/../../../../i686-w64-mingw32/bin/ld.exe: devel32/libwxscintilla_cb.a(wxscintilla.o):wxscintilla.cp:(.text+0xdc41): undefined reference to `_imp__wxEVT_SCROLLWIN_BOTTOM'
D:/msys64/opt/mingw32/bin/../lib/gcc/i686-w64-mingw32/14.2.0/../../../../i686-w64-mingw32/bin/ld.exe: devel32/libwxscintilla_cb.a(wxscintilla.o):wxscintilla.cp:(.text+0xdcb0): undefined reference to `_imp__wxEVT_SCROLLWIN_LINEUP'
D:/msys64/opt/mingw32/bin/../lib/gcc/i686-w64-mingw32/14.2.0/../../../../i686-w64-mingw32/bin/ld.exe: devel32/libwxscintilla_cb.a(wxscintilla.o):wxscintilla.cp:(.text+0xdcbf): undefined reference to `_imp__wxEVT_SCROLLWIN_LINEUP'
My guess:
-Wl,--enable-auto-import -Wl,--no-undefined -lwxmsw32u -lshfolder -ltxml -lwxscintilla_cb -lsquirrel -lgdi32
is that the
should be put "after" the
Another error occurred:
zip -jq9 devel32\share\CodeBlocks\manager_resources.zip sdk\resources\*.xrc
zip error: Nothing to do! (devel32/share/CodeBlocks/manager_resources.zip)
mingw32-make: *** [Makefile_core:958: after_sdk] Error 12
I just looked at the source code of cb2make project, I see this line:
https://github.com/mirai-computing/cbp2make/blob/d40e6de50a5142f57576d0f2e8e433b7f510270a/src/platforms.cpp#L89
void CPlatform::Assign(const CPlatform& Platform)
{
m_OS_Type = Platform.m_OS_Type;
m_Active = Platform.m_Active;
m_Cmd_Null = Platform.m_Cmd_Null;
m_Cmd_Copy = Platform.m_Cmd_Copy;
m_Cmd_Move = Platform.m_Cmd_Move;
m_Cmd_Make = Platform.m_Cmd_Make;
m_Tool_Make = Platform.m_Tool_Make;
//m_Cmd_TestFile = Platform.m_Cmd_TestFile;
m_Cmd_RemoveFile = Platform.m_Cmd_RemoveFile;
m_Cmd_ForceRemoveFile = Platform.m_Cmd_ForceRemoveFile;
//m_Cmd_TestDir = Platform.m_Cmd_TestDir;
m_Cmd_MakeDir = Platform.m_Cmd_MakeDir;
m_Cmd_TestMakeDir = Platform.m_Cmd_TestMakeDir;
m_Cmd_ForceMakeDir = Platform.m_Cmd_ForceMakeDir;
m_Cmd_RemoveDir = Platform.m_Cmd_RemoveDir;
m_Cmd_PrintWorkDir = Platform.m_Cmd_PrintWorkDir;
m_Cmd_EvalWorkDir = Platform.m_Cmd_EvalWorkDir;
m_Cmd_ChangeDir = Platform.m_Cmd_ChangeDir;
m_PathDelimiter = Platform.m_PathDelimiter;
m_LibraryPrefix = Platform.m_LibraryPrefix;
m_StaticLibraryExtensions = Platform.m_StaticLibraryExtensions;
m_DynamicLibraryExtensions = Platform.m_DynamicLibraryExtensions;
}
So, we can hack the "m_PathDelimiter" variable? for Windows system?
I just looked at the source code of cb2make project, I see this line:
https://github.com/mirai-computing/cbp2make/blob/d40e6de50a5142f57576d0f2e8e433b7f510270a/src/platforms.cpp#L89
void CPlatform::Assign(const CPlatform& Platform)
{
m_OS_Type = Platform.m_OS_Type;
m_Active = Platform.m_Active;
m_Cmd_Null = Platform.m_Cmd_Null;
m_Cmd_Copy = Platform.m_Cmd_Copy;
m_Cmd_Move = Platform.m_Cmd_Move;
m_Cmd_Make = Platform.m_Cmd_Make;
m_Tool_Make = Platform.m_Tool_Make;
//m_Cmd_TestFile = Platform.m_Cmd_TestFile;
m_Cmd_RemoveFile = Platform.m_Cmd_RemoveFile;
m_Cmd_ForceRemoveFile = Platform.m_Cmd_ForceRemoveFile;
//m_Cmd_TestDir = Platform.m_Cmd_TestDir;
m_Cmd_MakeDir = Platform.m_Cmd_MakeDir;
m_Cmd_TestMakeDir = Platform.m_Cmd_TestMakeDir;
m_Cmd_ForceMakeDir = Platform.m_Cmd_ForceMakeDir;
m_Cmd_RemoveDir = Platform.m_Cmd_RemoveDir;
m_Cmd_PrintWorkDir = Platform.m_Cmd_PrintWorkDir;
m_Cmd_EvalWorkDir = Platform.m_Cmd_EvalWorkDir;
m_Cmd_ChangeDir = Platform.m_Cmd_ChangeDir;
m_PathDelimiter = Platform.m_PathDelimiter;
m_LibraryPrefix = Platform.m_LibraryPrefix;
m_StaticLibraryExtensions = Platform.m_StaticLibraryExtensions;
m_DynamicLibraryExtensions = Platform.m_DynamicLibraryExtensions;
}
So, we can hack the "m_PathDelimiter" variable? for Windows system?
There is an option for msys that should fix the issue under msys2 and may fix it for the poster.
I was planning to test it; but, the issue I had was fixed by an Msys2 packager.
Manage platforms:
cbp2make --config platform [-msys|-unix|-windows|-mac] [-pwd <print_dir_command>]
[-cd <change_dir_command>] [-rm <remove_file_command>]
[-rmf <remove_file_forced>] [-rmd <remove_dir_command>]
[-cp <copy_file_command>] [-mv <move_file_command>]
[-md <make_dir_command>] [-mdf <make_dir_forced>]
[-make <default_make_tool>]
Tim S.
I think I found the reason why the zip command works badly.
I create a very simple makefile:
# Define variables
ZIP = xyz\abc.zip
FILES = xyz\a1.txt
ZIP_CMD = zip -jq9 $(ZIP) $(FILES)
# Default target
all: zip
# Zip target
zip:
$(ZIP_CMD)
# Clean target
clean:
del $(ZIP)
# Phony targets to avoid conflicts with files
.PHONY: all zip clean
Please note that I can run the command "mingw32-make" under the mingw64 shell under msys2, and it works fine.
But if I change the "xyz\a1.txt" to "xyz\*.txt".
It will failed. my guess is that the mingw64 shell will "escape" the "\*" as a special character.
If I change to "FILES = xyz/*.txt", it works OK.
I have tried the zip command inside the mingw64 shell, or I just use the zip command (I mentioned the zip command's link before), all failed if I use the "xyz\*.txt".
Now, I see that "xyz\*.txt" works OK under Windows native command line shell.
So, the solution is: can we call the "mingw32-make.exe" inside the "Windows native CMD"?
I think I found the reason why the zip command works badly.
I create a very simple makefile:
# Define variables
ZIP = xyz\abc.zip
FILES = xyz\a1.txt
ZIP_CMD = zip -jq9 $(ZIP) $(FILES)
# Default target
all: zip
# Zip target
zip:
$(ZIP_CMD)
# Clean target
clean:
del $(ZIP)
# Phony targets to avoid conflicts with files
.PHONY: all zip clean
Please note that I can run the command "mingw32-make" under the mingw64 shell under msys2, and it works fine.
But if I change the "xyz\a1.txt" to "xyz\*.txt".
It will failed. my guess is that the mingw64 shell will "escape" the "\*" as a special character.
If I change to "FILES = xyz/*.txt", it works OK.
I have tried the zip command inside the mingw64 shell, or I just use the zip command (I mentioned the zip command's link before), all failed if I use the "xyz\*.txt".
Now, I see that "xyz\*.txt" works OK under Windows native command line shell.
So, the solution is: can we call the "mingw32-make.exe" inside the "Windows native CMD"?
You might try the normal make like this.
MSYS2_ARG_CONV_EXCL=* make
NOTE: The "*" star might need double or single quotes around it. This option is supposed to turn off file handling magic.
See https://www.msys2.org/docs/filesystem-paths/ (https://www.msys2.org/docs/filesystem-paths/)
Tim S.
It was not successful when I tried MSYS2_ARG_CONV_EXCL=* mingw32-make
. We can't use normal make, for certain reason(because those lines calling cmd /c will fail.) I always get failed using Windows' pure command line. Maybe we can only use the configure/make structure.
Edit: I'm seeing that cmd /c executed successfully when using normal make. It's hoped that the current action will be successful.
Still failed...
It was not successful when I tried MSYS2_ARG_CONV_EXCL=* mingw32-make
. We can't use normal make, for certain reason(because those lines calling cmd /c will fail.) I always get failed using Windows' pure command line. Maybe we can only use the configure/make structure.
Edit: I'm seeing that cmd /c executed successfully when using normal make. It's hoped that the current action will be successful.
Maybe, you should try something like:
MSYS2_ARG_CONV_EXCL='*' mingw32-make
I haven't tried it, because I know nothing about how to debug a github action script.
Some improvements about the github build bot.
1, I think we need to build a "CbLauncher.exe" in the "bin" folder(the codeblocks.exe is in the the same bin folder), currently the configure-make method in the build bot does not generate this file. I mean by running this exe file, C::B is running in portable mode, all the configure settings were created in "bin/AppData" folder, so it won't pollute other C::B settings. For my test, I just copy a "CbLauncher.exe" from other windows build packages, and it works.
2, when I download the "Artifacts" file from the github action (for example, in my own github action here: https://github.com/asmwarrior/x86-codeblocks-builds/actions/runs/10538520726), I need to set the PATH variable to adding my local msys2/mingw64/bin path
set PATH=<your_local_msys2_mingw64_bin_path>;%PATH%
by setting this, when code::blocks runs, it will find the gcc's dlls, wx's dlls, and exchnl's dlls. (suppose you install them by the pacman command)
Here is the list of dlls of the codeblocks.exe by using brechtsanders/pedeps: Cross-platform C library to read data from PE/PE+ files (the format of Windows .exe and .dll files) (https://github.com/brechtsanders/pedeps)'s listpedeps commands:
listpedeps.exe -s codeblocks.exe
[codeblocks.exe]
architecture: x86_64
machine name: AMD AMD64 (x64)
subsystem: Windows GUI
DLL: no
stripped: no
file version: 0.0
minimum Windows version: 5.2
IMPORTS
libcodeblocks-0.dll
COMCTL32.dll
exchndl.dll
libgcc_s_seh-1.dll
KERNEL32.dll
msvcrt.dll
SHELL32.dll
libstdc++-6.dll
USER32.dll
wxbase32u_gcc_custom.dll
wxmsw32u_aui_gcc_custom.dll
wxmsw32u_core_gcc_custom.dll
wxmsw32u_html_gcc_custom.dll
wxmsw32u_propgrid_gcc_custom.dll
wxmsw32u_xrc_gcc_custom.dll
So, you can see that you need to copy those dlls from the msys2 mingw64's bin folder, so that you can distribute a full package:
exchndl.dll
libgcc_s_seh-1.dll
libstdc++-6.dll
wxbase32u_gcc_custom.dll
wxmsw32u_aui_gcc_custom.dll
wxmsw32u_core_gcc_custom.dll
wxmsw32u_html_gcc_custom.dll
wxmsw32u_propgrid_gcc_custom.dll
wxmsw32u_xrc_gcc_custom.dl
To copy those dlls from the msys2's bin folder, you have to use another tool named "copypedeps.exe" from "brechtsanders/pedeps".
The commands are something like below:
copypedeps.exe -r -n -v ./codeblocks.exe ./
The options can be explained by the "-h" help command.
copypedeps.exe -h
Usage: copypedeps [-h|-?] [-r] srcfile [...] dstfolder
Parameters:
-h -? display command line help
-r recursively copy dependancies
-n don't overwrite existing files
-d dry run: don't actually copy, just display copy actions
-q quiet mode, only show errors
-v verbose mode (display copy actions)
Description:
Copies .exe and .dll files and all their dependancies to the destination folder.
Version: 0.1.14 (library version: 0.1.14)
So, can you add the extra steps like below:
1, build the CBLauncher.exe
2, use pacman to install the drmingw for the exchndl.dll and related dlls. See here: mingw-w64-x86_64-drmingw (https://packages.msys2.org/package/mingw-w64-x86_64-drmingw?repo=mingw64)
3, use the pedeps to copy all the necessary dlls to the bin folder.
Any ideas?
EDIT:
mingw-w64-x86_64-drmingw is already installed in the current github action code.
EDIT2:
The spell checker plugin is not loaded correctly, so maybe my local msys2 does not have hunspell package installed.
For you information:
I have create a github test project to use pedeps to copy the dlls of a hello.exe file, see here: asmwarrior/test-github-action0 (https://github.com/asmwarrior/test-github-action0)
I haven't used the github action script before, so it takes one hour to tweak the script.
Finally, a artifact zip file is created with several dependency dlls.
$ ls
hello.exe* libgcc_s_seh-1.dll* libstdc++-6.dll* libwinpthread-1.dll*
The exe file is built from the compiler gcc, and the dlls are copied from the msys2's PATH by using the latest pedeps tool.
Some good news:
It looks the built artifact (zip file) has many dlls which are the dependencies of codeblocks.exe.
When I run the C::B, I see some warnings(see image shot below), it looks like only the dlls for the codeblocks.exe get copied, but some dlls for plugins are missing.
So, I need to loop all the plugin dll files?
Where should I copy those dependency dlls for the plugins. Because for plugin dlls, they are located in the folder:
codeblocks64-zip-folder\lib\codeblocks\plugins\
While the codeblocks.exe is located in
codeblocks64-zip-folder\bin\codeblocks\
One issue still remains, how to build the "CBLauncher.exe"?
EDIT:
The plugin dll's dependency dll issue is solved, see this result:
main64 asmwarrior/x86-codeblocks-builds@691cc2b (https://github.com/asmwarrior/x86-codeblocks-builds/actions/runs/10869247080)
with my commit:
copy the plugin dll's dependency dll to the bin folder (https://github.com/asmwarrior/x86-codeblocks-builds/commit/691cc2b57a72de33d79179b75d6038da3217a258)
When I looked at the build log file of the github action:
https://github.com/asmwarrior/x86-codeblocks-builds/actions/runs/10955598063/job/30419828477
You can download that log file.
I see that
2024-09-20T09:18:04.7820971Z make[4]: Entering directory '/d/a/x86-codeblocks-builds/x86-codeblocks-builds/codeblocks_sfmirror/src/tools/cb_share_config'
2024-09-20T09:18:04.8036409Z /usr/bin/mkdir -p '/opt/codeblocks/bin'
2024-09-20T09:18:04.8174063Z /usr/bin/mkdir -p '/opt/codeblocks/share/man/man1'
2024-09-20T09:18:04.8805600Z /bin/sh ../../../libtool --mode=install /usr/bin/install -c cb_share_config.exe '/opt/codeblocks/bin'
2024-09-20T09:18:04.9105299Z /usr/bin/install -c -m 644 cb_share_config.1 '/opt/codeblocks/share/man/man1'
2024-09-20T09:18:05.2304536Z libtool: install: /usr/bin/install -c .libs/cb_share_config.exe /opt/codeblocks/bin/cb_share_config.exe
2024-09-20T09:18:05.2454246Z make[4]: Leaving directory '/d/a/x86-codeblocks-builds/x86-codeblocks-builds/codeblocks_sfmirror/src/tools/cb_share_config'
2024-09-20T09:18:05.2461699Z make[3]: Leaving directory '/d/a/x86-codeblocks-builds/x86-codeblocks-builds/codeblocks_sfmirror/src/tools/cb_share_config'
2024-09-20T09:18:05.2469742Z Making install in ConsoleRunner
2024-09-20T09:18:05.2646492Z make[3]: Entering directory '/d/a/x86-codeblocks-builds/x86-codeblocks-builds/codeblocks_sfmirror/src/tools/ConsoleRunner'
2024-09-20T09:18:05.2647480Z depbase=`echo main.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
2024-09-20T09:18:05.2648537Z g++ -DHAVE_CONFIG_H -I. -I../../../src/include -D__WXMSW__ -DCB_AUTOCONF -DPIC -O2 -ffast-math -fPIC -fexceptions -MT main.o -MD -MP -MF $depbase.Tpo -c -o main.o main.cpp &&\
2024-09-20T09:18:05.2649417Z mv -f $depbase.Tpo $depbase.Po
2024-09-20T09:18:06.4095587Z /bin/sh ../../../libtool --tag=CXX --mode=link g++ -O2 -ffast-math -fPIC -fexceptions -Wl,--no-undefined -o cb_console_runner.exe main.o -lpthread
2024-09-20T09:18:06.9737518Z libtool: link: g++ -O2 -ffast-math -fPIC -fexceptions -Wl,--no-undefined -o .libs/cb_console_runner.exe main.o -lpthread
2024-09-20T09:18:07.7308153Z make[4]: Entering directory '/d/a/x86-codeblocks-builds/x86-codeblocks-builds/codeblocks_sfmirror/src/tools/ConsoleRunner'
2024-09-20T09:18:07.7514147Z /usr/bin/mkdir -p '/opt/codeblocks/bin'
2024-09-20T09:18:07.7644088Z /usr/bin/mkdir -p '/opt/codeblocks/share/man/man1'
2024-09-20T09:18:07.8263028Z /bin/sh ../../../libtool --mode=install /usr/bin/install -c cb_console_runner.exe '/opt/codeblocks/bin'
2024-09-20T09:18:07.8584054Z /usr/bin/install -c -m 644 cb_console_runner.1 '/opt/codeblocks/share/man/man1'
2024-09-20T09:18:08.1826953Z libtool: install: /usr/bin/install -c .libs/cb_console_runner.exe /opt/codeblocks/bin/cb_console_runner.exe
2024-09-20T09:18:08.1973674Z make[4]: Leaving directory '/d/a/x86-codeblocks-builds/x86-codeblocks-builds/codeblocks_sfmirror/src/tools/ConsoleRunner'
2024-09-20T09:18:08.1982839Z make[3]: Leaving directory '/d/a/x86-codeblocks-builds/x86-codeblocks-builds/codeblocks_sfmirror/src/tools/ConsoleRunner'
2024-09-20T09:18:08.1990374Z Making install in CBLauncher
2024-09-20T09:18:08.2155613Z make[3]: Entering directory '/d/a/x86-codeblocks-builds/x86-codeblocks-builds/codeblocks_sfmirror/src/tools/CBLauncher'
2024-09-20T09:18:08.2299718Z make[4]: Entering directory '/d/a/x86-codeblocks-builds/x86-codeblocks-builds/codeblocks_sfmirror/src/tools/CBLauncher'
2024-09-20T09:18:08.2301338Z make[4]: Nothing to be done for 'install-exec-am'.
2024-09-20T09:18:08.2302245Z make[4]: Nothing to be done for 'install-data-am'.
2024-09-20T09:18:08.2303972Z make[4]: Leaving directory '/d/a/x86-codeblocks-builds/x86-codeblocks-builds/codeblocks_sfmirror/src/tools/CBLauncher'
2024-09-20T09:18:08.2306123Z make[3]: Leaving directory '/d/a/x86-codeblocks-builds/x86-codeblocks-builds/codeblocks_sfmirror/src/tools/CBLauncher'
2024-09-20T09:18:08.2470671Z make[3]: Entering directory '/d/a/x86-codeblocks-builds/x86-codeblocks-builds/codeblocks_sfmirror/src/tools'
2024-09-20T09:18:08.2612747Z make[4]: Entering directory '/d/a/x86-codeblocks-builds/x86-codeblocks-builds/codeblocks_sfmirror/src/tools'
2024-09-20T09:18:08.2614203Z make[4]: Nothing to be done for 'install-exec-am'.
2024-09-20T09:18:08.2615091Z make[4]: Nothing to be done for 'install-data-am'.
2024-09-20T09:18:08.2616395Z make[4]: Leaving directory '/d/a/x86-codeblocks-builds/x86-codeblocks-builds/codeblocks_sfmirror/src/tools'
2024-09-20T09:18:08.2618080Z make[3]: Leaving directory '/d/a/x86-codeblocks-builds/x86-codeblocks-builds/codeblocks_sfmirror/src/tools'
2024-09-20T09:18:08.2632490Z make[2]: Leaving directory '/d/a/x86-codeblocks-builds/x86-codeblocks-builds/codeblocks_sfmirror/src/tools'
2024-09-20T09:18:08.2639951Z Making install in templates
2024-09-20T09:18:08.2799861Z make[2]: Entering directory '/d/a/x86-codeblocks-builds/x86-codeblocks-builds/codeblocks_sfmirror/src/templates'
It looks like the tools/CBLauncher is not built. But I'm not sure why, since the cb_console_runner.exe and cb_share_config.exe are built correctly.
OK, I think I found some reason:
src/tools/cb_share_config/Makefile.am
bin_PROGRAMS = cb_share_config
AM_CPPFLAGS = $(WX_CXXFLAGS) \
$(CB_GLIB2_CFLAGS) \
-I$(top_srcdir)/src/include
cb_share_config_LDFLAGS =
cb_share_config_LDADD = $(WX_LIBS) \
$(CB_GLIB2_LIBS) \
$(CB_TINYXML_LIBS)
cb_share_config_SOURCES = app.cpp \
mainframe.cpp
noinst_HEADERS = app.h \
mainframe.h
man_MANS = cb_share_config.1
EXTRA_DIST = $(srcdir)/*.cbp \
$(srcdir)/wxsmith/*.wxs \
$(man_MANS)
When I looked at this file: src/tools/CBLauncher/Makefile.am
EXTRA_DIST = $(srcdir)/doc/* \
$(srcdir)/icons/* \
$(srcdir)/*.cbp \
icon.rc \
mainpage.h \
launcher.cpp
So, need to modify the later file?
And in my repository, the svn revision and the wxWidgets version now can be Automatically detected.
Thanks for the info. My github action code for created the release package is mainly created by chatGPT, and has some flaws. I got some warning message like below:
The following actions uses node12 which is deprecated and will be forced to run on node16: actions/create-release@v1, actions/upload-release-asset@v1. For more info: https://github.blog/changelog/2023-06-13-github-actions-all-actions-will-run-on-node16-instead-of-node12-by-default/
I think I will use your method, and by adding some time stamp for the release.
Question: why do you add a cron section?
schedule:
- cron: '0 0 7,14,21,28 * *'
You want to run the github action every week? (chatGPT gives me the answer: the cron expression '0 0 7,14,21,28 * *' means that the job will run at midnight on the 7th, 14th, 21st, and 28th day of every month.)
And in my repository, the svn revision and the wxWidgets version now can be Automatically detected.
You need to check this code for get the svn value string.
https://github.com/arnholm/codeblocks_sfmirror/blob/master/update_revision.sh
because if the git has some customized commits which does not contain the git-svn-id string, it will got empty result in your github action.
EDIT:
I think you could use:
git log --graph | grep 'git-svn-id' | head -n 1 | grep -o -e "@\([0-9]*\)" | tr -d '@ '
I want to remove the hack of the dll export hack in building wxsmith plugin.
# Workaround from msys2: error: definition of static data member 'wxsArrayStringEditorDlg::sm_eventTable' of dllimport'd class
# grep -rl "PLUGIN_EXPORT " src/plugins/contrib/wxSmith | xargs -i sed -i "s/PLUGIN_EXPORT //g" {}
So, I remove the hack above.
Now, I see the build error.
It looks like the dll export declaration is not defined.
But when I checked the build log, I see that:
2024-09-24T11:34:32.2601440Z checking for gcc option to produce PIC... -DDLL_EXPORT -DPIC
2024-09-24T11:34:32.4010899Z checking if gcc PIC flag -DDLL_EXPORT -DPIC works... yes
...
...
...
2024-09-24T12:32:02.1013349Z libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../../../../src/include -ID:/msys64/mingw64/lib/wx/include/msw-unicode-3.2 -ID:/msys64/mingw64/include/wx-3.2 -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL -D__WXMSW__ -I../../../../../src/include -I../../../../../src/sdk/wxscintilla/include -DCB_AUTOCONF -DPIC -O2 -ffast-math -fPIC -fexceptions -MT wxsfloatproperty.lo -MD -MP -MF .deps/wxsfloatproperty.Tpo -c wxsfloatproperty.cpp -DDLL_EXPORT -DPIC -o .libs/wxsfloatproperty.o
...
...
build failed!!!
You see, when building every plugin, the "-DDLL_EXPORT -DPIC" is defined.
But my question is: Where is the "DLL_EXPORT" get defined? I search all the C::B code git repo, and I can't find one.
When I check the cbp files, I see there is no "DLL_EXPORT" defined, instead, in the cbp file, another macro named "BUILDING_PLUGIN", this is core point, because in the
include\cbplugin.h, note this file is included in every cpp file when you need to build a plugin.
#ifdef __WXMSW__
#ifndef PLUGIN_EXPORT
#ifdef EXPORT_LIB
#define PLUGIN_EXPORT __declspec (dllexport)
#else // !EXPORT_LIB
#ifdef BUILDING_PLUGIN
#define PLUGIN_EXPORT __declspec (dllexport)
#else // !BUILDING_PLUGIN
#define PLUGIN_EXPORT __declspec (dllimport)
#endif // BUILDING_PLUGIN
#endif // EXPORT_LIB
#endif // PLUGIN_EXPORT
#else
#define PLUGIN_EXPORT
#endif
So, I think we need to solve this issue.
I even checked the configure.ac file or Makefile.am file, I don't find the DLL_EXPORT definition.
Is this value a predefined string?
When I looked at the link
[MinGW] make check problem Issue #9115 protocolbuffers/protobuf (https://github.com/protocolbuffers/protobuf/issues/9115)
or
Make commands not working on Windows 10 at setting check up Issue #297 libcheck/check (https://github.com/libcheck/check/issues/297)
It looks like the "DLL_EXPORT" is predefined in the auto configure tool?
EDIT:
I will try this patch below in the github action.
diff --git a/src/include/cbplugin.h b/src/include/cbplugin.h
index 10258e5..a3ce67b 100644
--- a/src/include/cbplugin.h
+++ b/src/include/cbplugin.h
@@ -23,11 +23,11 @@
#ifdef EXPORT_LIB
#define PLUGIN_EXPORT __declspec (dllexport)
#else // !EXPORT_LIB
- #ifdef BUILDING_PLUGIN
+ #if defined(BUILDING_PLUGIN) || defined(DLL_EXPORT)
#define PLUGIN_EXPORT __declspec (dllexport)
- #else // !BUILDING_PLUGIN
+ #else // !BUILDING_PLUGIN && !DLL_EXPORT
#define PLUGIN_EXPORT __declspec (dllimport)
- #endif // BUILDING_PLUGIN
+ #endif // BUILDING_PLUGIN || DLL_EXPORT
#endif // EXPORT_LIB
#endif // PLUGIN_EXPORT
#else
Well, I see your patch's content is too large, and I apply it locally, and I see only two line changes:
see below:
diff --git a/src/plugins/contrib/wxSmith/Makefile.am b/src/plugins/contrib/wxSmith/Makefile.am
index 38262bf..dfe9df2 100644
--- a/src/plugins/contrib/wxSmith/Makefile.am
+++ b/src/plugins/contrib/wxSmith/Makefile.am
@@ -7,7 +7,7 @@ AM_CPPFLAGS = $(WX_CXXFLAGS) \
lib_LTLIBRARIES = libwxsmithlib.la
-libwxsmithlib_la_LDFLAGS = -version-info 0:1:0 -shared
+libwxsmithlib_la_LDFLAGS = @MODULE_SHARED_LDFLAGS@ -version-info 0:1:0 -no-undefined -avoid-version
libwxsmithlib_la_LIBADD = ../../../sdk/libcodeblocks.la \
properties/libwxsmith_properties.la \
I think this is exactly the patch file in msys2 here:
https://github.com/msys2/MINGW-packages/blob/f47229e160e1f31f24fdc6142be7b4df99b1a4c3/mingw-w64-codeblocks/001-makefile-wxsmith-add-no-undefined.patch
Another change line is here:
diff --git a/src/src/Makefile.am b/src/src/Makefile.am
index 49d5dd9..d59889b 100644
--- a/src/src/Makefile.am
+++ b/src/src/Makefile.am
@@ -75,7 +75,7 @@ codeblocks_LDADD += resources.$(OBJEXT) -lexchndl -lcomctl32
codeblocks_DEPENDENCIES = resources.$(OBJEXT)
codeblocks_SOURCES += associations.cpp
resources.$(OBJEXT): resources/resources.rc resources/amd64_dpi_aware_on.manifest
- $(WINDRES) $(WX_CXXFLAGS) -DcbDPI_AWARE_ON --include-dir $(top_srcdir)/src $< $@
+ $(WINDRES) $(WX_CPPFLAGS) -DcbDPI_AWARE_ON --include-dir $(top_srcdir)/src $< $@
endif
noinst_HEADERS = app.h \
This is the command line option you changed for compiling the resource rc file. I don't see a similar patch in msys2's codeblocks folder:
https://github.com/msys2/MINGW-packages/blob/master/mingw-w64-codeblocks
Another patch I see is here:
https://github.com/msys2/MINGW-packages/blob/f47229e160e1f31f24fdc6142be7b4df99b1a4c3/mingw-w64-codeblocks/005-codeblocks-plugin-fix.patch
--- a/src/sdk/configmanager.cpp (revision 13538)
+++ b/src/sdk/configmanager.cpp (working copy)
@@ -1497,7 +1497,7 @@
if (plugin_path_global.IsEmpty())
{
if (platform::windows)
- ConfigManager::plugin_path_global = app_path + _T("/../lib/codeblocks/plugins");
+ ConfigManager::plugin_path_global = app_path + _T("\\..\\lib\\codeblocks\\plugins");
else if (platform::macosx)
ConfigManager::plugin_path_global = data_path_global + _T("/plugins");
else
@Tim, can you say something about this code change? If we don't change this, what will happen? I don't see this code change in my github action's code.
Thanks.
Found what I consider the proper fix for building wxSmith under Msys2 MinGW using configure/make.
You need to update the file "ax_cxx_compile_stdcxx.m4" using https://github.com/autoconf-archive/autoconf-archive/blob/master/m4/ax_cxx_compile_stdcxx.m4 (https://github.com/autoconf-archive/autoconf-archive/blob/master/m4/ax_cxx_compile_stdcxx.m4)
Edit2: With the old ax_cxx_compile_stdcxx.m4 the wxsmith plugin was compiled using c++17 instead of c++11 which is what it should have used.
Edit5: Testing implies c++14 works; but, c++17 fails and GCC 14.x defaults to c++17.
Edit: I have not yet finished testing the building and yet to run the plugin.
Edit3: It built and the wxsmith plugin loaded without any message seen by me.
Edit4: I created an git package when I thought svn might have been the cause of the file not found bug. See https://github.com/stahta01/MINGW-packages/tree/codeblocks-git/mingw-w64-codeblocks-git (https://github.com/stahta01/MINGW-packages/tree/codeblocks-git/mingw-w64-codeblocks-git)
And, apply this patch.
--- a/src/plugins/contrib/wxSmith/Makefile.am
+++ b/src/plugins/contrib/wxSmith/Makefile.am
@@ -7,7 +7,11 @@
+if CODEBLOCKS_NT
+AM_CPPFLAGS += -DEXPORT_LIB
+endif
+
lib_LTLIBRARIES = libwxsmithlib.la
-libwxsmithlib_la_LDFLAGS = -version-info 0:1:0 -shared
+libwxsmithlib_la_LDFLAGS = -version-info 0:1:0 -shared -no-undefined
libwxsmithlib_la_LIBADD = ../../../sdk/libcodeblocks.la \
properties/libwxsmith_properties.la \
--- a/src/plugins/contrib/wxSmith/properties/Makefile.am
+++ b/src/plugins/contrib/wxSmith/properties/Makefile.am
@@ -2,6 +2,10 @@ AM_CPPFLAGS = $(WX_CXXFLAGS) \
-I$(top_srcdir)/src/include \
-I$(top_srcdir)/src/sdk/wxscintilla/include
+if CODEBLOCKS_NT
+AM_CPPFLAGS += -DEXPORT_LIB
+endif
+
noinst_LTLIBRARIES = libwxsmith_properties.la
libwxsmith_properties_la_LDFLAGS = @MODULE_SHARED_LDFLAGS@ -version-info 0:1:0 -no-undefined -avoid-version
--- a/src/plugins/contrib/wxSmith/wxwidgets/defitems/Makefile.am
+++ b/src/plugins/contrib/wxSmith/wxwidgets/defitems/Makefile.am
@@ -2,6 +2,10 @@ AM_CPPFLAGS = $(WX_CXXFLAGS) \
-I$(top_srcdir)/src/include \
-I$(top_srcdir)/src/sdk/wxscintilla/include
+if CODEBLOCKS_NT
+AM_CPPFLAGS += -DEXPORT_LIB
+endif
+
noinst_LTLIBRARIES = libwxsmith_wxwidgets_defitems.la
libwxsmith_wxwidgets_defitems_la_LDFLAGS = @MODULE_SHARED_LDFLAGS@ -version-info 0:1:0 -no-undefined -avoid-version
--- a/src/plugins/contrib/wxSmith/wxwidgets/Makefile.am
+++ b/src/plugins/contrib/wxSmith/wxwidgets/Makefile.am
@@ -5,6 +5,10 @@ AM_CPPFLAGS = $(WX_CXXFLAGS) \
-I$(top_srcdir)/src/include \
-I$(top_srcdir)/src/sdk/wxscintilla/include
+if CODEBLOCKS_NT
+AM_CPPFLAGS += -DEXPORT_LIB
+endif
+
noinst_LTLIBRARIES = libwxsmith_wxwidgets.la
libwxsmith_wxwidgets_la_LDFLAGS = @MODULE_SHARED_LDFLAGS@ -version-info 0:1:0 -no-undefined -avoid-version
--- a/src/plugins/contrib/wxSmith/wxwidgets/properties/Makefile.am
+++ b/src/plugins/contrib/wxSmith/wxwidgets/properties/Makefile.am
@@ -2,6 +2,10 @@ AM_CPPFLAGS = $(WX_CXXFLAGS) \
-I$(top_srcdir)/src/include \
-I$(top_srcdir)/src/sdk/wxscintilla/include
+if CODEBLOCKS_NT
+AM_CPPFLAGS += -DEXPORT_LIB
+endif
+
noinst_LTLIBRARIES = libwxsmith_wxwidgets_properties.la
libwxsmith_wxwidgets_properties_la_LDFLAGS = @MODULE_SHARED_LDFLAGS@ -version-info 0:1:0 -no-undefined -avoid-version
--
Hi, Tim, thanks.
I looked at your patches here: https://github.com/stahta01/MINGW-packages/tree/codeblocks-git/mingw-w64-codeblocks-git
Especially this one: https://github.com/stahta01/MINGW-packages/blob/codeblocks-git/mingw-w64-codeblocks-git/007-makefile-wxsmith-plugin-export-fix.patch
I see that you have added the "EXPORT_LIB" macro definition in the Makefile.am file in the compiler option.
I think defining this has the same effect as my change of the:
diff --git a/src/include/cbplugin.h b/src/include/cbplugin.h
index 10258e5..a3ce67b 100644
--- a/src/include/cbplugin.h
+++ b/src/include/cbplugin.h
@@ -23,11 +23,11 @@
#ifdef EXPORT_LIB
#define PLUGIN_EXPORT __declspec (dllexport)
#else // !EXPORT_LIB
- #ifdef BUILDING_PLUGIN
+ #if defined(BUILDING_PLUGIN) || defined(DLL_EXPORT)
#define PLUGIN_EXPORT __declspec (dllexport)
- #else // !BUILDING_PLUGIN
+ #else // !BUILDING_PLUGIN && !DLL_EXPORT
#define PLUGIN_EXPORT __declspec (dllimport)
- #endif // BUILDING_PLUGIN
+ #endif // BUILDING_PLUGIN || DLL_EXPORT
#endif // EXPORT_LIB
#endif // PLUGIN_EXPORT
#else
Because defining such macro will make the "#define PLUGIN_EXPORT __declspec (dllexport)" take effect.
But, when I search the build log(the build log I have days ago) of the configure/make result. I see that when we build plugins, we don't have such "EXPORT_LIB" defined in many plugins, for example, when build the codecompletion plugin or compiler plugin, I see the log code looks like below:
2024-09-24T11:47:33.4430652Z libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../../src/include -ID:/msys64/mingw64/lib/wx/include/msw-unicode-3.2 -ID:/msys64/mingw64/include/wx-3.2 -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL -D__WXMSW__ -I../../../src/include/scripting/include -I../../../src/include -I../../../src/sdk/wxscintilla/include -I../../../src/plugins/compilergcc/depslib/src -DDEPSLIB_WINDOWS -DCB_AUTOCONF -DPIC -O2 -ffast-math -fPIC -fexceptions -MT compilermessages.lo -MD -MP -MF .deps/compilermessages.Tpo -c compilermessages.cpp -DDLL_EXPORT -DPIC -o .libs/compilermessages.o
or
2024-09-24T12:28:29.7971808Z libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../../../src/include -ID:/msys64/mingw64/lib/wx/include/msw-unicode-3.2 -ID:/msys64/mingw64/include/wx-3.2 -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL -D__WXMSW__ -I../../../../src/include -I../../../../src/sdk/wxscintilla/include -I../../../../src/include/tinyxml -I./src -I./src/LSPclient -I./src/codecompletion -I./src/winprocess -I./src/winprocess/asyncprocess -I./src/winprocess/misc -DCB_AUTOCONF -DPIC -O2 -ffast-math -fPIC -fexceptions -MT src/codecompletion/parser/parser.lo -MD -MP -MF src/codecompletion/parser/.deps/parser.Tpo -c src/codecompletion/parser/parser.cpp -DDLL_EXPORT -DPIC -o src/codecompletion/parser/.libs/parser.o
You see, the "-DDLL_EXPORT -DPIC" is always defined. When I looked at the Makefile.am for those plugins, I don't see they defined the EXPORT_LIB.
So, I'm not sure why those plugins can be built with out issue.
But when I looked at the cbp files for those plugins, I see "BUILDING_PLUGIN" is always defined in the cbp, from the cbplugin.h, I see that "BUILDING_PLUGIN" means "#define PLUGIN_EXPORT __declspec (dllexport)".
So, my question is: shall we enable all "__declspec (dllexport)" if I see the "-DDLL_EXPORT"? It looks like "DLL_EXPORT" comes from the configure/auto-make world, but I can't find its source.
Thanks.
I have applied Tim's all patches in my git repo: https://github.com/asmwarrior/codeblocks_sfmirror
and when building the C::B, it looks OK.
But when I run the "mv" command, it failed in this line:
./bootstrap
./configure --disable-pch --with-contrib-plugins=all,-Valgrind --prefix=/opt/codeblocks
make -j$(nproc) install
mv /opt/codeblocks/lib/codeblocks/bin/*.dll /opt/codeblocks/bin/
mv /opt/codeblocks/lib/*.dll /opt/codeblocks/bin/
2024-09-26T12:43:53.9461424Z + mv /opt/codeblocks/lib/codeblocks/bin/libwxchartctrl-0.dll /opt/codeblocks/lib/codeblocks/bin/libwxcustombutton-0.dll /opt/codeblocks/lib/codeblocks/bin/libwxflatnotebook-0.dll /opt/codeblocks/lib/codeblocks/bin/libwximagepanel-0.dll /opt/codeblocks/lib/codeblocks/bin/libwxkwic-0.dll /opt/codeblocks/lib/codeblocks/bin/libwxled-0.dll /opt/codeblocks/lib/codeblocks/bin/libwxmathplot-0.dll /opt/codeblocks/lib/codeblocks/bin/libwxspeedbutton-0.dll /opt/codeblocks/bin/
2024-09-26T12:43:53.9636034Z + mv '/opt/codeblocks/lib/*.dll' /opt/codeblocks/bin/
2024-09-26T12:43:53.9781662Z mv: cannot stat '/opt/codeblocks/lib/*.dll': No such file or directory
2024-09-26T12:43:53.9845301Z ##[error]Process completed with exit code 1.
It looks like there is no file: /opt/codeblocks/lib/*.dll
@Grit Clef
Maybe, this mv line should be removed?
I have applied Tim's all patches in my git repo: https://github.com/asmwarrior/codeblocks_sfmirror
and when building the C::B, it looks OK.
But when I run the "mv" command, it failed in this line:
./bootstrap
./configure --disable-pch --with-contrib-plugins=all,-Valgrind --prefix=/opt/codeblocks
make -j$(nproc) install
mv /opt/codeblocks/lib/codeblocks/bin/*.dll /opt/codeblocks/bin/
mv /opt/codeblocks/lib/*.dll /opt/codeblocks/bin/
2024-09-26T12:43:53.9461424Z + mv /opt/codeblocks/lib/codeblocks/bin/libwxchartctrl-0.dll /opt/codeblocks/lib/codeblocks/bin/libwxcustombutton-0.dll /opt/codeblocks/lib/codeblocks/bin/libwxflatnotebook-0.dll /opt/codeblocks/lib/codeblocks/bin/libwximagepanel-0.dll /opt/codeblocks/lib/codeblocks/bin/libwxkwic-0.dll /opt/codeblocks/lib/codeblocks/bin/libwxled-0.dll /opt/codeblocks/lib/codeblocks/bin/libwxmathplot-0.dll /opt/codeblocks/lib/codeblocks/bin/libwxspeedbutton-0.dll /opt/codeblocks/bin/
2024-09-26T12:43:53.9636034Z + mv '/opt/codeblocks/lib/*.dll' /opt/codeblocks/bin/
2024-09-26T12:43:53.9781662Z mv: cannot stat '/opt/codeblocks/lib/*.dll': No such file or directory
2024-09-26T12:43:53.9845301Z ##[error]Process completed with exit code 1.
It looks like there is no file: /opt/codeblocks/lib/*.dll
@Grit Clef
Maybe, this mv line should be removed?
I think you likely had an wxContribItems build error because memory says that is what plugin has dlls in that place.
Edit: Looks like your dlls went to a different place; so, removing it should be okay. Unless that is the location for the wxsmith dll.
Edit2: Find where the "libwxsmithlib.dll" is located because I think it should be in that location.
Tim S.
Thanks.
I see the "libwxsmithlib.dll" (actually the name is libwxsmithlib-0.dll) is not in the lib folder, but in the bin folder, see the log below:
Line 8135: 2024-09-26T12:40:09.5700956Z libtool: install: /usr/bin/install -c .libs/libwxsmithlib-0.dll /opt/codeblocks/lib/../bin/libwxsmithlib-0.dll
So, I just comment out the second "mv" command, and run the github action again.
BTW:
I think you likely had an wxContribItems build error because memory says that is what plugin has dlls in that place.
I don't think there is a build error. :)
EDIT:
It looks like removing the second "mv" command solved the github action failure.
Oh, when I tried your command:
The result is, first 13571 came out and then an error:
Error: Process completed with exit code 141.
The method already works in my fork, see here:
my fork's main branch (https://github.com/asmwarrior/x86-codeblocks-builds/tree/main)
Oh, the command worked, thanks.
I see your github action failed:
https://github.com/zxunge/x86-codeblocks-builds/actions/runs/11081484299/job/30793287105
+ mv '/opt/codeblocks/lib/*.dll' /opt/codeblocks/bin/
mv: cannot stat '/opt/codeblocks/lib/*.dll': No such file or directory
You should comment out this line. I have comment out already, and should solved this issue.
Good news: I had just forgotten to use some shell commands to change the Makefile so that it can work under MSYS2 zip. The following commands can change all back-slashes to forward-slashes and do other necessary modification:
sed '/zip -jq9*/ s/\\/\//g' Makefile_core -i
sed -i '85 s/LIB_SDK = $(LIB) -lshfolder -ltxml -lwxscintilla_cb -lsquirrel -lgdi32/LIB_SDK = -lshfolder -ltxml -lwxscintilla_cb $(LIB) -lsquirrel -lgdi32/' Makefile_core
sed 's/$(DEP_.*//g' Makefile_core -i
A successful action can be found at https://github.com/zxunge/winstyle-codeblocks-bins/actions/runs/11192814700
So now maybe we can use a automatical winstyle build.
I'm now wondering if cbp2make can convert .workspace files.
FortranProject build failed:
g++.exe -Wall -std=gnu++11 -pipe -mthreads -fmessage-length=0 -fexceptions -DBUILDING_PLUGIN -DHAVE_W32API_H -D__WXMSW__ -DWXUSINGDLL -DcbDEBUG -DNOPCH -DwxUSE_UNICODE -I..\..\..\include -I..\..\..\include\tinyxml -I..\..\..\sdk\wxscintilla\include -ID:/msys64/opt/wxwidgets3.2/include -ID:/msys64/opt/wxwidgets3.2/lib\gcc_dll\msw -c projectdependencies.cpp -o ..\\..\\..\\.objs32\\plugins\\contrib\\FortranProject\\projectdependencies.o
In file included from D:/msys64/opt/wxwidgets3.2/include/wx/defs.h:45,
from D:/msys64/opt/wxwidgets3.2/include/wx/wxprec.h:12,
from ..\..\..\include/sdk_common.h:24,
from ..\..\..\include/sdk.h:14,
from projectdependencies.h:13,
from projectdependencies.cpp:10:
D:/msys64/opt/wxwidgets3.2/include/wx/platform.h:159:10: fatal error: wx/setup.h: No such file or directory
159 | #include "wx/setup.h"
| ^~~~~~~~~~~~
compilation terminated.
mingw32-make[1]: ***
I think it's because
-ID:/msys64/opt/wxwidgets3.2/lib\gcc_dll\msw
Why there's no 'u' after 'gcc_dll\msw'??
cmd /c if not exist ..\..\..\devel32\share\codeblocks\plugins mkdir ..\..\..\devel32\share\codeblocks\plugins
cmd /c if exist ./clangd_client.zip del ./clangd_client.zip
zip -jq9 ./clangd_client.zip src/resources/manifest.xml src/resources/*.xrc src/resources/*.cbp
cmd /c "cd src/resources && zip -rq9 ../../clangd_client.zip images && cd ../.."
'esources' is not recognized as an internal or external command,
operable program or batch file.
mingw32-make[1]: *** [clangd_client_wx32.cbp.mak:62: after_default] Error 1
mingw32-make[1]: Leaving directory 'D:/a/winstyle-codeblocks-bins/winstyle-codeblocks-bins/codeblocks_sfmirror/src/plugins/contrib/clangd_client'
mingw32-make: *** [Makefile_plugins:56: plugins_contrib_clangd_client_clangd_client_wx32] Error 2
Error: Process completed with exit code 2.
I see this: main32 zxunge/winstyle-codeblocks-bins@e9dcd79 (https://github.com/zxunge/winstyle-codeblocks-bins/actions/runs/11318289074/job/31472698422#step:4:2488)
It looks like the batch command line error when building clangd_client plugin.
Now it might work; my hope.
In the latest error message from github action, I see this:
g++.exe -std=gnu++11 -pipe -mthreads -fmessage-length=0 -fexceptions -DBUILDING_PLUGIN -DHAVE_W32API_H -D__WXMSW__ -DWXUSINGDLL -DcbDEBUG -DNOPCH -DwxUSE_UNICODE -DBOOST_SYSTEM_NO_DEPRECATED -I..\..\..\include -I..\..\..\include\tinyxml -I..\..\..\sdk\wxscintilla\include -ID:/msys64/opt/wxwidgets3.2/include -ID:/msys64/opt/wxwidgets3.2/lib\gcc_dll\mswu -ID:/msys64/opt/boost_1_86_0/boost -c CParser.cpp -o ..\\..\\..\\.objs32\\plugins\\contrib\\NassiShneiderman\\CParser.o
CParser.cpp:5:10: fatal error: boost/spirit/include/classic.hpp: No such file or directory
5 | #include <boost/spirit/include/classic.hpp>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
mingw32-make[1]: *** [NassiShneiderman_wx32.cbp.mak:108: ..\\..\\..\\.objs32\\plugins\\contrib\\NassiShneiderman\\CParser.o] Error 1
mingw32-make[1]: Leaving directory 'D:/a/winstyle-codeblocks-bins/winstyle-codeblocks-bins/codeblocks_sfmirror/src/plugins/contrib/NassiShneiderman'
mingw32-make: *** [Makefile_plugins:40: plugins_contrib_nassishneiderman_nassishneiderman_wx32] Error 2
Error: Process completed with exit code 2.
You have already installed the header files from the boost library?
Maybe you need to tweak the compiler search paths of the boost, as I can see that this search path is already included.
D:/msys64/opt/boost_1_86_0/
So, do you have a folder named below?
D:/msys64/opt/boost_1_86_0/boost/spirit/include/classic.hpp
Maybe, as a workaround, you can exclude this plugin from the workspace to makefile generation.
Now it might work; my hope.
In the latest error message from github action, I see this:
g++.exe -std=gnu++11 -pipe -mthreads -fmessage-length=0 -fexceptions -DBUILDING_PLUGIN -DHAVE_W32API_H -D__WXMSW__ -DWXUSINGDLL -DcbDEBUG -DNOPCH -DwxUSE_UNICODE -DBOOST_SYSTEM_NO_DEPRECATED -I..\..\..\include -I..\..\..\include\tinyxml -I..\..\..\sdk\wxscintilla\include -ID:/msys64/opt/wxwidgets3.2/include -ID:/msys64/opt/wxwidgets3.2/lib\gcc_dll\mswu -ID:/msys64/opt/boost_1_86_0/boost -c CParser.cpp -o ..\\..\\..\\.objs32\\plugins\\contrib\\NassiShneiderman\\CParser.o
CParser.cpp:5:10: fatal error: boost/spirit/include/classic.hpp: No such file or directory
5 | #include <boost/spirit/include/classic.hpp>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
mingw32-make[1]: *** [NassiShneiderman_wx32.cbp.mak:108: ..\\..\\..\\.objs32\\plugins\\contrib\\NassiShneiderman\\CParser.o] Error 1
mingw32-make[1]: Leaving directory 'D:/a/winstyle-codeblocks-bins/winstyle-codeblocks-bins/codeblocks_sfmirror/src/plugins/contrib/NassiShneiderman'
mingw32-make: *** [Makefile_plugins:40: plugins_contrib_nassishneiderman_nassishneiderman_wx32] Error 2
Error: Process completed with exit code 2.
You have already installed the header files from the boost library?
Maybe you need to tweak the compiler search paths of the boost, as I can see that this search path is already included.
D:/msys64/opt/boost_1_86_0/
So, do you have a folder named below?
D:/msys64/opt/boost_1_86_0/boost/spirit/include/classic.hpp
Maybe, as a workaround, you can exclude this plugin from the workspace to makefile generation.
That might be a further problem; now the cland_client still can't be built.
cmd /c "cd src\resources && zip -rq9 ..\..\clangd_client.zip images && cd ..\.."
Microsoft Windows [Version 10.0.20348.2700]
(c) Microsoft Corporation. All rights reserved.
D:\a\winstyle-codeblocks-bins\winstyle-codeblocks-bins\codeblocks_sfmirror\src\plugins\contrib\clangd_client>cmd /c copy ./clangd_client.zip ../../../devel32/share/CodeBlocks/clangd_client.zip
The syntax of the command is incorrect.
mingw32-make[1]: *** [clangd_client_wx32.cbp.mak:63: after_default] Error 1
I found that if you call cmd.exe inside MSYS2, there will be a strange problem; in some cases there're no errors, though. I'm not clear what made that.
The fact is, those Makefiles generated by cbp2make are not so perfect that there are lots of bugs in build process. Many plugins can't be built owing to this or that reasons.
One problem I see often is like
...........
xcopy /Y index.ini ..\..\..\output32\share\CodeBlocks\docs
D:index.ini
1 File(s) copied
g++.exe -Wl,--enable-auto-image-base -Wl,--add-stdcall-alias -Wl,--enable-auto-import help_plugin.cpp before_help_plugin out_help_plugin after_help_plugin -o help_plugin
help_plugin.cpp:10:10: fatal error: sdk.h: No such file or directory
10 | #include "sdk.h"
| ^~~~~~~
compilation terminated.
mingw32-make[1]: *** [<builtin>: help_plugin] Error 1
mingw32-make[1]: Leaving directory 'D:/a/winstyle-codeblocks-bins/winstyle-codeblocks-bins/codeblocks_sfmirror/src/plugins/contrib/help_plugin'
mingw32-make: *** [Makefile_plugins:25: plugins_contrib_help_plugin_help_plugin_wx32] Error 2
............
The build commands were polluted, due to unknown reasons. The plugin had been already built, but the linking command was executed again, which was wrong.
Hey, does anyone know what packages to install to obtain TeX?
'epstopdf' is not recognized as an internal or external command,
operable program or batch file.
error: Problems running epstopdf. Check your TeX installation!
'epstopdf' is not recognized as an internal or external command,
operable program or batch file.
error: Problems running epstopdf. Check your TeX installation!
'epstopdf' is not recognized as an internal or external command,
operable program or batch file.
error: Problems running epstopdf. Check your TeX installation!
'epstopdf' is not recognized as an internal or external command,
operable program or batch file.
Another common problem is:
g++.exe -shared -L..\..\..\devel32 -LD:/msys64/opt/wxwidgets3.2/lib -LD:/msys64/opt/wxwidgets3.2/lib\gcc_dll ..\\..\\..\\.objs32\\plugins\\contrib\\DoxyBlocks\\DoxyBlocksLogger.o ..\\..\\..\\.objs32\\plugins\\contrib\\DoxyBlocks\\ExtractDocs.o ..\\..\\..\\.objs32\\plugins\\contrib\\DoxyBlocks\\AutoDoc.o ..\\..\\..\\.objs32\\plugins\\contrib\\DoxyBlocks\\DoxyBlocks.o
∧∧∧∧∧∧
..\\..\\..\\.objs32\\plugins\\contrib\\DoxyBlocks\\DoxyBlocks.o ..\\..\\..\\.objs32\\plugins\\contrib\\DoxyBlocks\\ConfigPanel.o ..\\..\\..\\.objs32\\plugins\\contrib\\DoxyBlocks\\Config.o -o ..\\..\\..\\devel32\\share\\CodeBlocks\\plugins\\DoxyBlocks.dll -Wl,--enable-auto-import -mthreads -lcodeblocks -lwxmsw32u
D:/msys64/opt/mingw32/bin/../lib/gcc/i686-w64-mingw32/14.2.0/../../../../i686-w64-mingw32/bin/ld.exe: ..\..\..\.objs32\plugins\contrib\DoxyBlocks\DoxyBlocks.o:DoxyBlocks.cpp:(.text+0x0): multiple definition of `DoxyBlocks::GetEventTable() const'; ..\..\..\.objs32\plugins\contrib\DoxyBlocks\DoxyBlocks.o:DoxyBlocks.cpp:(.text+0x0): first defined here
D:/msys64/opt/mingw32/bin/../lib/gcc/i686-w64-mingw32/14.2.0/../../../../i686-w64-mingw32/bin/ld.exe: ..\..\..\.objs32\plugins\contrib\DoxyBlocks\DoxyBlocks.o:DoxyBlocks.cpp:(.text+0x10): multiple definition of `DoxyBlocks::GetEventHashTable() const'; ..\..\..\.objs32\plugins\contrib\DoxyBlocks\DoxyBlocks.o:DoxyBlocks.cpp:(.text+0x10): first defined here
...........
There are multiple same object files provided.
$ pacman -Qo /mingw64/bin/repstopdf.exe
/mingw64/bin/repstopdf.exe is owned by mingw-w64-x86_64-texlive-core 2023.20230404-1
Some places use "repstopdf" instead of "epstopdf"
Edit: But, it did not work for me.
C:\msys64\mingw64\bin\runscript.tlu:922: C:\msys64\mingw64\bin\runscript.tlu:853: no appropriate script or program found
: epstopdf
${MINGW_PACKAGE_PREFIX}-ghostscript should have missing scripts.
But, I still could not find script
Tim S.
$ pacman -Qo /mingw64/bin/repstopdf.exe
/mingw64/bin/repstopdf.exe is owned by mingw-w64-x86_64-texlive-core 2023.20230404-1
Some places use "repstopdf" instead of "epstopdf"
Edit: But, it did not work for me.
C:\msys64\mingw64\bin\runscript.tlu:922: C:\msys64\mingw64\bin\runscript.tlu:853: no appropriate script or program found
: epstopdf
${MINGW_PACKAGE_PREFIX}-ghostscript should have missing scripts.
But, I still could not find script
Tim S.
Got it.
$ pacman -Qo /mingw64/bin/epstopdf.exe
/mingw64/bin/epstopdf.exe is owned by mingw-w64-x86_64-texlive-font-utils 2023.20230404-1
Now this works
$ epstopdf --version
epstopdf ($Id: epstopdf.pl 66407 2023-03-06 23:44:49Z karl $) 2.31
Copyright 2009-2023 Karl Berry et al.
Copyright 2002-2009 Gerben Wierda et al.
Copyright 1998-2001 Sebastian Rahtz et al.
License RBSD: Revised BSD <http://www.xfree86.org/3.3.6/COPYRIGHT2.html#5>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Tim S.