News:

Download Pelles C here: http://www.pellesc.se

Main Menu

Recent posts

#11
User contributions / Re: Has anyone built a crude ...
Last post by rweidner - March 13, 2026, 04:00:48 AM
I ran out of steam today.  But tomorrow I think I'll have a "Crude" revision control system complete with visual diff via winMerge "integrated" into the PellesC IDE using the tools editor.

The tool fills a need for me and was a fun little project.  Thanks for the idea.
#12
User contributions / Re: Has anyone built a crude ...
Last post by ddainelis1 - March 13, 2026, 02:18:05 AM
Good Evening RWEIDNER,

Thank you for the link to your "CRUDE" application github site. It is a good App that meets your design requirements. Also, it does use a design approach that i had not considered.  Using a DB and i will look into the method for another app soon.

Best regards
#13
General discussion / Re: Compiling using pomake
Last post by John Z - March 13, 2026, 01:07:55 AM
Hi rweidner,

Nice - many levels of complexity added.  BBBBuilder.dll builds only for the selected mode, and execution method, you've got it all covered in one. Plus you have added much more error detection/escapes. 

Next 'soon' version of BBBBuilder has the option to output a PowerShell  script or the bat file.  PowerShell works well now so I'm integrating it into the code.  I stuck with the base PowerShell 5 since it comes with windows, even though no longer updated.  I believe it will also work with 7 but not everyone will download and install pwsh.exe.

John Z

Question:
Is main.c in a different directory? 
echo Building %PROJECT_NAME%...

call :compile_one "main.c" || goto build_fail

for %%F in (src\*.c) do (
    call :compile_one "%%F" || goto build_fail
)

Otherwise it looks like it will be compiled twice   It is included in the set of all *.c files is it not?  It must be unless a different is directory is used for main.c.

Just wondering - is there a reason for a different directory if that is the case?
#14
General discussion / Re: Compiling using pomake
Last post by rweidner - March 12, 2026, 10:54:27 PM
John Z,
Inspired by BBB Builder, I worked with ChatGPT for a couple hours and we built this .bat file. Thanks for the inspiration. I believe this script will help improve my workflow.

@echo off
REM File: project.bat
REM Purpose: FBI Pursuit build/workflow entry point

setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION

set "PROJECT_DIR=%~dp0"
if "%PROJECT_DIR:~-1%"=="\" set "PROJECT_DIR=%PROJECT_DIR:~0,-1%"
set "PROJECT_NAME=FBIPursuit"
set "EXE_NAME=FBIPursuit.exe"
set "OUTPUT_DIR=output"
set "CRUDE_EXE=C:\CRUDE\crude.exe"
set "CRUDE_REPO=C:\CRUDE"
set "WINMERGE_EXE=C:\Program Files\WinMerge\WinMergeU.exe"

set "CCFLAGS_DEBUG=-Tx86-coff -std:C17 -Zi -Ob0 -fp:precise -W1 -Gd -Ze -Zc-"
set "CCFLAGS_RELEASE=-Tx86-coff -std:C17 -Ot -Ob1 -fp:precise -W1 -Gd -Zc- -Ze"
set "LINKFLAGS_DEBUG=-machine:x86 -subsystem:console -safeseh -debug -debugtype:po kernel32.lib advapi32.lib delayimp.lib raylibdll.lib opengl32.lib gdi32.lib winmm.lib user32.lib shell32.lib"
set "LINKFLAGS_RELEASE=-machine:x86 -subsystem:console -safeseh kernel32.lib advapi32.lib delayimp.lib raylibdll.lib opengl32.lib gdi32.lib winmm.lib user32.lib shell32.lib"

if "%~1"=="" goto build_debug
if /I "%~1"=="build_debug" goto build_debug
if /I "%~1"=="build_release" goto build_release
if /I "%~1"=="rebuild_debug" goto rebuild_debug
if /I "%~1"=="rebuild_release" goto rebuild_release
if /I "%~1"=="run" goto run
if /I "%~1"=="clean" goto clean
if /I "%~1"=="crude" goto crude
if /I "%~1"=="diff" goto diff
if /I "%~1"=="help" goto help

echo Unknown target: %~1
goto help

:prepare_env
call "%PROJECT_DIR%\env_pelles32.bat"
if errorlevel 1 exit /b 1

pushd "%PROJECT_DIR%"
if errorlevel 1 exit /b 1

set "INCLUDE=%INCLUDE%;%PROJECT_DIR%\deps\include;%PROJECT_DIR%\src\include"
set "LIB=%LIB%;%PROJECT_DIR%\deps\lib"

if not exist "%OUTPUT_DIR%" mkdir "%OUTPUT_DIR%"
if errorlevel 1 (
    echo ERROR: Failed to create output directory.
    popd
    exit /b 1
)

exit /b 0

:build_debug
call :clean_internal || exit /b 1
set "ACTIVE_CCFLAGS=%CCFLAGS_DEBUG%"
set "ACTIVE_LINKFLAGS=%LINKFLAGS_DEBUG%"
call :do_build || exit /b 1
exit /b 0

:build_release
call :clean_internal || exit /b 1
set "ACTIVE_CCFLAGS=%CCFLAGS_RELEASE%"
set "ACTIVE_LINKFLAGS=%LINKFLAGS_RELEASE%"
call :do_build || exit /b 1
exit /b 0

:rebuild_debug
call :build_debug
exit /b %errorlevel%

:rebuild_release
call :build_release
exit /b %errorlevel%

:do_build
call :prepare_env || exit /b 1

echo Building %PROJECT_NAME%...

call :compile_one "main.c" || goto build_fail

for %%F in (src\*.c) do (
    call :compile_one "%%F" || goto build_fail
)

set "OBJLIST="
for /f "delims=" %%F in ('dir /b "%OUTPUT_DIR%\*.obj" 2^>nul') do (
    set "OBJLIST=!OBJLIST! "%OUTPUT_DIR%\%%F""
)

if not defined OBJLIST (
    echo ERROR: No object files were produced.
    goto build_fail
)

echo Linking %EXE_NAME%...
polink %ACTIVE_LINKFLAGS% -out:"%EXE_NAME%" !OBJLIST!
if errorlevel 1 goto build_fail

echo Build complete: %EXE_NAME%
popd
exit /b 0

:build_fail
echo Build failed.
popd
exit /b 1

:compile_one
echo Compiling %~1 ...
pocc %ACTIVE_CCFLAGS% "%~1" /Fo"%OUTPUT_DIR%\%~n1.obj"
if errorlevel 1 exit /b 1
exit /b 0

:run
pushd "%PROJECT_DIR%"
if not exist "%EXE_NAME%" (
    echo ERROR: %EXE_NAME% not found. Run build_debug or build_release first.
    popd
    exit /b 1
)
start "" "%PROJECT_DIR%\%EXE_NAME%"
popd
exit /b 0

:clean
call :clean_internal
exit /b %errorlevel%

:clean_internal
pushd "%PROJECT_DIR%"
if errorlevel 1 exit /b 1

echo Cleaning...
del /q "%OUTPUT_DIR%\*.obj" 2>nul
del /q "%EXE_NAME%" 2>nul

popd
exit /b 0

:crude
call :clean_internal || exit /b 1
if not exist "%CRUDE_EXE%" (
    echo ERROR: CRUDE not found:
    echo %CRUDE_EXE%
    exit /b 1
)
"%CRUDE_EXE%" "%PROJECT_DIR%" "%CRUDE_REPO%"
exit /b %errorlevel%

:diff
call :clean_internal || exit /b 1

if not exist "%WINMERGE_EXE%" (
    echo ERROR: WinMerge not found:
    echo %WINMERGE_EXE%
    exit /b 1
)

set "REVISIONS_DIR=%CRUDE_REPO%\%PROJECT_NAME%\revisions"
if not exist "%REVISIONS_DIR%" (
    echo ERROR: Revisions folder not found:
    echo %REVISIONS_DIR%
    exit /b 1
)

set "LATEST_REV="
for /f "delims=" %%D in ('dir "%REVISIONS_DIR%" /b /ad /o:-n 2^>nul') do (
    set "LATEST_REV=%%D"
    goto found_latest
)

:found_latest
if not defined LATEST_REV (
    echo ERROR: No revisions found in:
    echo %REVISIONS_DIR%
    exit /b 1
)

set "LATEST_DIR=%REVISIONS_DIR%\%LATEST_REV%"

echo Comparing:
echo  CURRENT: %PROJECT_DIR%
echo  REVISION: %LATEST_DIR%
start "" "%WINMERGE_EXE%" "%PROJECT_DIR%" "%LATEST_DIR%"
exit /b 0

:help
echo.
echo Usage:
echo    %~n0 build_debug
echo    %~n0 build_release
echo    %~n0 rebuild_debug
echo    %~n0 rebuild_release
echo    %~n0 run
echo    %~n0 clean
echo    %~n0 crude
echo    %~n0 diff
echo    %~n0 help
echo.
exit /b 1
#15
Graphics programming / Re: raylib 5.5 + PellesC v13.0...
Last post by rweidner - March 12, 2026, 03:44:18 PM
Cool addition to the thread, Vortex. I learned of raygui AFTER I already implemented a menu system for a project I'm working on.
#16
User contributions / Re: Has anyone built a crude ...
Last post by rweidner - March 12, 2026, 03:35:03 AM
This is what I came up with. I run it from a .bat file.

crude.bat
C:\dev\crude\crude.exe "C:\dev\XecronixEngine\FBIPursuit" "C:\CRUDE"
C:\dev\crude\crude.exe: this is where I built crude
C:\dev\XecronixEngine\FBIPursuit: this is the source for a project I wanted to put in a repo.
C:\CRUDE: This is where my repos go. I could have many.

Here is the code and project file if you'd like to see it:
https://github.com/xecronix/crude
#17
User contributions / Re: Has anyone built a crude ...
Last post by ddainelis1 - March 12, 2026, 02:46:20 AM
V10 will be the new command:
Add "element" "get" to BASELINE

any suggestions here....
#18
User contributions / Re: Has anyone built a crude ...
Last post by ddainelis1 - March 12, 2026, 02:19:04 AM
I'm working on one right now.  Here is the screen shot of help menu. 
Right now I'm cleaning up the help file in this version before I go to the next version V0.9 which will have create and fetch baseline.    Also,  I'm working on a script to test each version so I don't have to manually test it and figure what broke where.

CMS Development App
Type HELP for commands. Press Ctrl+Z to exit.

Root set to: E:\CMS_LIB
Library opened: E:\CMS_LIB\test2
CMS> ver
CMS Version V8.4PREA  (build Mar 11 2026 11:48:36)
CMS> help
Commands working in V8:
  HELP
  SHOW ROOT
  SHOW DRIVE
  SHOW VERSION
  SET DRIVE
  SET USERID
  CREATE LIBRARY
  OPEN LIBRARY
  SHOW LIBRARY
  SHOW CONFIG
  CREATE ELEMENT
  SHOW ELEMENT
  FETCH ELEMENT
  EXIT
  QUIT
  DEV

Commands present in notes but NOT working in this build:
  SET ROOT
  HISTORY
  CREATE BASELINE
  FETCH BASELINE
 

Use HELP <command> for details on one command.
CMS>

#19
User contributions / Re: Has anyone built a crude ...
Last post by rweidner - March 12, 2026, 01:42:05 AM
I've decided to write one. I have dozens of projects that I don't really want on GitHub because... well... because I don't. So, I'll make this. I've decided not to use SQLite. Instead it will be purely file-based. The motivation for making it file-based is to minimize the amount of UI I need to create. Instead, I'll assume the user has WinMerge or similar. This process should be pretty quick and will be a nice distraction for me.

It's not intended to be like or ever replace GitHub. For me, it's just a place to put projects that linger around longer than expected.

The code will be written in C using PellesC.
#20
User contributions / Re: Has anyone built a crude ...
Last post by Vortex - March 11, 2026, 10:33:36 PM
By the way, the abbreviation must be CRUD if I am not wrong :

Quotecreate, read, update, and delete (CRUD)

https://en.wikipedia.org/wiki/Create,_read,_update_and_delete