Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions prism/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -718,4 +718,12 @@ clean_param: checks
clean_strat: checks
@(cd $(PRISM_SRC_DIR)/strat && $(MAKE) -s EXE="$(EXE)" clean)

###############
# IDE support #
###############

# Set up for IntelliJ IDEA
intellij:
etc/intellij/install.sh

#################################################
11 changes: 11 additions & 0 deletions prism/etc/intellij/PrismCL.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="PrismCL" type="Application" factoryName="Application">
<option name="MAIN_CLASS_NAME" value="prism.PrismCL" />
<module name="prism" />
<option name="VM_PARAMETERS" value="-Djava.library.path=$PROJECT_DIR$/prism/lib" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/prism" />
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
</component>
51 changes: 51 additions & 0 deletions prism/etc/intellij/install.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
#!/bin/bash

# Path logic
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"

# Check for force flag
FORCE=false
for arg in "$@"; do
if [ "$arg" == "--force" ] || [ "$arg" == "-f" ]; then
FORCE=true
fi
done

# Check for symlink flag
SYMLINK=false
for arg in "$@"; do
if [ "$arg" == "--symlink" ] || [ "$arg" == "-s" ]; then
SYMLINK=true
fi
done

copy_file() {
local src="$1"
local dest="$2"
local display_path=${dest#"$PROJECT_ROOT/"}
if [ -f "$dest" ] && [ "$FORCE" = false ]; then
echo "⚠️ Skipping $display_path (already exists). Use -f to overwrite."
else
if [ "$SYMLINK" = false ]; then
cp "$src" "$dest" && echo "✅ Installed $display_path"
else
rm "$dest" && ln -s "$src" "$dest" && echo "✅ Installed $display_path (symlink)"
fi
fi
}

echo "🚀 Setting up IntelliJ configuration for PRISM..."

# Ensure directories exist
mkdir -p "$PROJECT_ROOT/.idea/libraries"
mkdir -p "$PROJECT_ROOT/.idea/runConfigurations"

# Execute copies
echo "Project root: $PROJECT_ROOT"
copy_file "$SCRIPT_DIR/prism.iml" "$PROJECT_ROOT/prism.iml"
copy_file "$SCRIPT_DIR/modules.xml" "$PROJECT_ROOT/.idea/modules.xml"
copy_file "$SCRIPT_DIR/lib.xml" "$PROJECT_ROOT/.idea/libraries/lib.xml"
copy_file "$SCRIPT_DIR/PrismCL.xml" "$PROJECT_ROOT/.idea/runConfigurations/PrismCL.xml"

echo -e "Done. Now open the project in IntelliJ IDEA."
16 changes: 16 additions & 0 deletions prism/etc/intellij/lib.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<component name="libraryTable">
<library name="lib">
<CLASSES>
<root url="file://$PROJECT_DIR$/prism/lib" />
</CLASSES>
<JAVADOC />
<NATIVE>
<root url="file://$PROJECT_DIR$/prism/lib" />
</NATIVE>
<SOURCES>
<root url="file://$PROJECT_DIR$/prism/lib" />
</SOURCES>
<jarDirectory url="file://$PROJECT_DIR$/prism/lib" recursive="false" />
<jarDirectory url="file://$PROJECT_DIR$/prism/lib" recursive="false" type="SOURCES" />
</library>
</component>
8 changes: 8 additions & 0 deletions prism/etc/intellij/modules.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/prism.iml" filepath="$PROJECT_DIR$/prism.iml" />
</modules>
</component>
</project>
17 changes: 17 additions & 0 deletions prism/etc/intellij/prism.iml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager">
<output url="file://$MODULE_DIR$/prism/classes" />
<output-test url="file://$MODULE_DIR$/prism/classes" />
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/prism/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/prism/unit-tests" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/prism/images" type="java-resource" relativeOutputPath="images" />
<excludeFolder url="file://$MODULE_DIR$/prism/classes" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="lib" level="project" />
</component>
</module>