About
=====

Crystal Palace is a linker and linker script language specialized to the needs of writing position-independent code.

https://tradecraftgarden.org

Build
=====

Crystal Palace is written in Java and requires Apache Ant to build. The build output is in the build/ folder.

	ant clean ; ant

Software to demonstrate Crystal Palace outputs is included in the demo/ folder. Build these files with:

	cd demo
	make clean ; make

Environment
===========

Crystal Palace thrives in a Windows Subsystem for Linux environment.

https://tradecraftgarden.org/wslsetup.html

Usage
=====

Use the link script to link a Windows DLL or COFF to a position-independent loader (and other resources) using steps
provided in a specification file. Specification files are specific to each loader.

	./link [loader.spec] [/path/to/dll] [out.bin]

For example:

	./link /path/to/loader.spec demo/test.x64.dll out.x64.bin

To try out the same output (on Windows):

	./demo/run.x64.exe out.x64.bin

To debug how Crystal Palace parses an object file, use ./coffparse

	./coffparse [file.o]

License
=======

(c) 2025 Raphael Mudge, Adversary Fan Fiction Writers Guild
All rights reserved.

Crystal Palace is released under the 3-clause BSD license

See LICENSE for more information.

Credits
=======

iced (C) 2018-present iced project and contributors (MIT License)
https://github.com/icedland/iced
