Issue Running Multiple Pascal Files in Repl.it

Issue Running Multiple Pascal Files in Repl.it

Hi everyone,

I’m encountering an issue with running multiple Pascal files in Repl.it, and I could use some assistance in resolving it. Here’s the problem I’m facing:

I have several Pascal files in my Repl.it workspace, namely main.p, test.p, and test2.p, each containing different programs. When I try to run any of these files individually, only main.p seems to execute, and the others are ignored. Additionally, I’ve noticed that I cannot delete main.p, as it returns an error when I attempt to do so.

I’ve tried renaming main.p to see if that would allow me to run the other files independently, but it resulted in an error message.

Could someone please advise me on how I can execute each Pascal file separately in Repl.it? I’d also appreciate any insights on why I’m unable to delete main.p.

Thank you in advance for your help!

Additional Details:

  • Repl.it environment: Pascal
  • Files in workspace: main.p, test.p, test2.p
  • Issue: Unable to execute test.p and test2.p individually, encountering error when attempting to delete main.p
1 Like

You need to edit the .replit file and the Makefile file when you want to run a file other than main.p

in the .replit file change main to test

compile = "make -s"
run = "./test"
entrypoint = "test.p"

hidden = ["*.o"]

[nix]
channel = "stable-21_11"

And then in the Makefile file do the same, Change main to test, except leave the very first word as main:

main: test.p
	fpc test.p

clean:
	rm test *.o

Then when you click run it should run test.p

To remove the Compile message change the Makefile file back to how it originally was, (change test back to main.) (See the screenshots below)

Then you can just change run and entrypoint in .replit to switch back and forth between running main.p and test.p

You can just repeat the process for test2.p


Edit the .replit file

Edit the Makefile file

Then click run,

it runs “test.p” but it says

Free Pascal Compiler version 3.2.0 [2022/02/07] for x86_64
Copyright (c) 1993-2020 by Florian Klaempfl and others
Target OS: Linux for x86-64
Compiling test.p
Linking test
6 lines compiled, 0.4 sec

everytime.

So to stop this, you can just change the Makefile file back to how it originally was again,

(change test back to main)


And then it’ll run without the Compiling message.

Now you can just change run and entrypoint in the .replit file and you can switch between main.p and test.p

I’m not positive that all of these steps are necessary but it’s how I got it to work.


See this docs page for more about the .replit file

ChatGPT explanation of the Makefile file.

In Pascal programming, a Makefile is not a common component because Pascal programs are usually compiled using a Pascal compiler directly, without the need for a Makefile. However, if you’re using Pascal code within a larger project that is managed with a Makefile (perhaps because the project contains multiple languages), the Makefile would typically be responsible for compiling all the source files, including Pascal files, into an executable program.

A Makefile is a script that automates the build process by specifying how to compile and link the various source files in your project. It typically includes rules for compiling each source file into an object file and then linking those object files together into the final executable.

For a Pascal program, the Makefile might include rules to compile Pascal source files (.pas) into object files (.o) using a Pascal compiler (like Free Pascal), and then linking those object files together into the final executable.

Here’s a basic example of what a Makefile for a Pascal program might look like:

# Define the Pascal compiler
PASCAL_COMPILER = fpc

# Define the flags for the compiler
PASCAL_FLAGS = -Mtp

# List of Pascal source files
PASCAL_SOURCES = main.pas utils.pas

# Define the output executable
OUTPUT_EXECUTABLE = myprogram

# Default target: build the executable
all: $(OUTPUT_EXECUTABLE)

# Rule to build the executable
$(OUTPUT_EXECUTABLE): $(PASCAL_SOURCES)
    $(PASCAL_COMPILER) $(PASCAL_FLAGS) -o$@ $^

# Clean up intermediate files
clean:
    rm -f $(OUTPUT_EXECUTABLE) *.o

In this Makefile:

  • PASCAL_COMPILER specifies the Pascal compiler to use (here, fpc for Free Pascal).
  • PASCAL_FLAGS specifies any compiler flags you want to use.
  • PASCAL_SOURCES lists all the Pascal source files in your project.
  • OUTPUT_EXECUTABLE specifies the name of the final executable.
  • The all target is the default target, which builds the executable.
  • The rule to build the executable specifies that it depends on all the Pascal source files listed in PASCAL_SOURCES, and it compiles each of them into object files, then links them together into the final executable.
  • The clean target is used to remove any intermediate files (like object files) and the final executable.
3 Likes