mirror of
https://gitlab.com/sortix/sortix.git
synced 2023-02-13 20:55:38 -05:00
Refactor Sortix build system and de-autoconf mxmpp.
This commit is contained in:
parent
0c7d1486b5
commit
7eb9e3c33f
28 changed files with 689 additions and 4455 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -7,4 +7,6 @@
|
|||
libmaxsi
|
||||
builds
|
||||
sysroot
|
||||
sysroot-overlay
|
||||
initrd
|
||||
release
|
||||
|
|
376
Makefile
376
Makefile
|
@ -1,196 +1,318 @@
|
|||
SOFTWARE_MEANT_FOR_SORTIX=1
|
||||
MAKEFILE_NOT_MEANT_FOR_SORTIX=1
|
||||
include compiler.mak
|
||||
include version.mak
|
||||
|
||||
ifneq ($(BUILD_LIBC),0)
|
||||
MODULES:=$(MODULES) libc
|
||||
endif
|
||||
ALLMODULES:=$(ALLMODULES) libc
|
||||
|
||||
ifneq ($(BUILD_DISPD),0)
|
||||
MODULES:=$(MODULES) dispd
|
||||
endif
|
||||
ALLMODULES:=$(ALLMODULES) dispd
|
||||
|
||||
ifneq ($(BUILD_GAMES),0)
|
||||
MODULES:=$(MODULES) games
|
||||
endif
|
||||
ALLMODULES:=$(ALLMODULES) games
|
||||
|
||||
ifneq ($(BUILD_MKINITRD),0)
|
||||
MODULES:=$(MODULES) mkinitrd
|
||||
endif
|
||||
ALLMODULES:=$(ALLMODULES) mkinitrd
|
||||
|
||||
ifneq ($(BUILD_UTILS),0)
|
||||
MODULES:=$(MODULES) utils
|
||||
endif
|
||||
ALLMODULES:=$(ALLMODULES) utils
|
||||
|
||||
ifneq ($(BUILD_BENCH),0)
|
||||
MODULES:=$(MODULES) bench
|
||||
endif
|
||||
ALLMODULES:=$(ALLMODULES) bench
|
||||
|
||||
ifneq ($(BUILD_KERNEL),0)
|
||||
MODULES:=$(MODULES) sortix
|
||||
endif
|
||||
ALLMODULES:=$(ALLMODULES) sortix
|
||||
MODULES=libc dispd games utils bench sortix
|
||||
|
||||
ifndef SYSROOT
|
||||
SYSROOT:=$(shell pwd)/sysroot
|
||||
MFLAGS:=$(MFLAGS) SYSROOT=$(SYSROOT)
|
||||
SUBMAKE_OPTIONS:=$(SUBMAKE_OPTIONS) "SYSROOT=$(SYSROOT)"
|
||||
endif
|
||||
|
||||
ifndef PREFIXNAME
|
||||
PREFIXNAME:=/
|
||||
MFLAGS:=$(MFLAGS) PREFIXNAME=$(PREFIXNAME)
|
||||
ifndef SYSROOT_OVERLAY
|
||||
SYSROOT_OVERLAY:=$(shell pwd)/sysroot-overlay
|
||||
SUBMAKE_OPTIONS:=$(SUBMAKE_OPTIONS) "SYSROOT_OVERLAY=$(SYSROOT_OVERLAY)"
|
||||
endif
|
||||
|
||||
SORTIX_BUILDS_DIR?=builds
|
||||
SORTIX_RELEASE_DIR?=release
|
||||
|
||||
include dirs.mak
|
||||
|
||||
DEBNAME:=sortix_$(VERSION)_$(CPU)
|
||||
DEBSRCNAME:=sortix_$(VERSION)
|
||||
DEBDIR:=builds/$(DEBNAME)
|
||||
DEBSRCDIR:=builds/$(DEBSRCNAME)-src
|
||||
DEBFILE:=builds/$(DEBNAME).deb
|
||||
PACKAGENAME:=sortix
|
||||
ISODIR:=builds/$(DEBNAME)-iso
|
||||
ISOFILE:=builds/$(DEBNAME).iso
|
||||
INITRD=$(INSTALLBOOTDIR)/$(HOST)/sortix.initrd
|
||||
BUILD_NAME:=sortix_$(VERSION)_$(MACHINE)
|
||||
DEBNAME:=sortix_$(VERSION)_$(MACHINE)
|
||||
|
||||
MFLAGS:=$(MFLAGS) VERSION=$(VERSION)
|
||||
INITRD:=$(SORTIX_BUILDS_DIR)/$(BUILD_NAME).initrd
|
||||
|
||||
all: $(INITRD)
|
||||
SUBMAKE_OPTIONS:=$(SUBMAKE_OPTIONS) VERSION=$(VERSION) PREFIX= EXEC_PREFIX=/$(HOST)
|
||||
|
||||
.PHONY: all suball sysroot-base-headers sysroot-fsh clean distclean \
|
||||
everything everything-all-archs all-archs linecount install uninstall \
|
||||
deb debfile debsource iso run-virtualbox run-virtualbox-debug \
|
||||
clean-builds clean-sysroot
|
||||
.PHONY: all
|
||||
all: sysroot
|
||||
|
||||
suball: sysroot-base-headers
|
||||
(for D in $(MODULES); do ($(MAKE) all $(MFLAGS) --directory $$D && $(MAKE) install $(MFLAGS) --directory $$D) || exit $$?; done)
|
||||
.PHONY: build-tools
|
||||
build-tools:
|
||||
$(MAKE) -C mkinitrd
|
||||
$(MAKE) -C mxmpp
|
||||
|
||||
sysroot-base-headers: sysroot-fsh
|
||||
(for D in libc sortix; do ($(MAKE) install-headers $(MFLAGS) --directory $$D) || exit $$?; done)
|
||||
.PHONY: install-build-tools
|
||||
install-build-tools:
|
||||
$(MAKE) -C mkinitrd install
|
||||
$(MAKE) -C mxmpp install
|
||||
|
||||
.PHONY: sysroot-fsh
|
||||
sysroot-fsh:
|
||||
mkdir -p "$(SYSROOT)"
|
||||
for DIRNAME in bin boot lib include; do (\
|
||||
for DIRNAME in boot etc include; do (\
|
||||
mkdir -p "$(SYSROOT)/$$DIRNAME" &&\
|
||||
mkdir -p "$(SYSROOT)/$$DIRNAME/$(HOST)" \
|
||||
) || exit $$?; done;
|
||||
if [ ! -e "$(SYSROOT)/usr" ]; then ln -s . "$(SYSROOT)/usr"; fi
|
||||
mkdir -p "$(SYSROOT)/$(HOST)"
|
||||
for DIRNAME in bin lib; do (\
|
||||
mkdir -p "$(SYSROOT)/$(HOST)/$$DIRNAME" \
|
||||
) || exit $$?; done;
|
||||
mkdir -p "$(SYSROOT)/etc/skel"
|
||||
mkdir -p "$(SYSROOT)/home"
|
||||
mkdir -p "$(SYSROOT)/mnt"
|
||||
mkdir -p "$(SYSROOT)/share"
|
||||
mkdir -p "$(SYSROOT)/src"
|
||||
mkdir -p "$(SYSROOT)/tmp"
|
||||
|
||||
clean:
|
||||
rm -f "$(INITRD)"
|
||||
rm -f sortix/sortix.initrd # Backwards compatibility, not needed for newer builds.
|
||||
rm -f initrd/* # Backwards compatibility, not needed for newer builds.
|
||||
(for D in $(ALLMODULES); do $(MAKE) clean $(MFLAGS) --directory $$D || exit $$?; done)
|
||||
.PHONY: sysroot-base-headers
|
||||
sysroot-base-headers: sysroot-fsh
|
||||
(for D in libc sortix; do ($(MAKE) -C $$D install-headers $(SUBMAKE_OPTIONS) DESTDIR="$(SYSROOT)") || exit $$?; done)
|
||||
|
||||
.PHONY: sysroot-system
|
||||
sysroot-system: sysroot-fsh sysroot-base-headers
|
||||
(for D in $(MODULES); do ($(MAKE) -C $$D $(SUBMAKE_OPTIONS) && $(MAKE) -C $$D install $(SUBMAKE_OPTIONS) DESTDIR="$(SYSROOT)") || exit $$?; done)
|
||||
|
||||
.PHONY: sysroot-source
|
||||
sysroot-source: sysroot-fsh
|
||||
cp compiler.mak -t "$(SYSROOT)/src"
|
||||
cp dirs.mak -t "$(SYSROOT)/src"
|
||||
cp platform.mak -t "$(SYSROOT)/src"
|
||||
cp version.mak -t "$(SYSROOT)/src"
|
||||
cp README -t "$(SYSROOT)/src"
|
||||
(for D in $(MODULES); do (cp -LR $$D -t "$(SYSROOT)/src" && $(MAKE) -C "$(SYSROOT)/src/$$D" clean) || exit $$?; done)
|
||||
|
||||
.PHONY: sysroot-overlay
|
||||
sysroot-overlay: sysroot-fsh sysroot-system
|
||||
! [ -d "$(SYSROOT_OVERLAY)" ] || \
|
||||
cp -R --preserve=mode,timestamp,links "$(SYSROOT_OVERLAY)" -T "$(SYSROOT)"
|
||||
|
||||
.PHONY: sysroot-user-skel
|
||||
sysroot-user-skel: sysroot-fsh sysroot-system sysroot-overlay
|
||||
|
||||
.PHONY: sysroot-home-directory
|
||||
sysroot-home-directory: sysroot-fsh sysroot-system sysroot-overlay sysroot-user-skel
|
||||
mkdir -p "$(SYSROOT)/root"
|
||||
cp -R "$(SYSROOT)/etc/skel" -T "$(SYSROOT)/root"
|
||||
|
||||
.PHONY: sysroot
|
||||
sysroot: sysroot-system sysroot-source sysroot-overlay sysroot-home-directory
|
||||
|
||||
.PHONY: clean-core
|
||||
clean-core:
|
||||
(for D in $(MODULES); do $(MAKE) clean $(SUBMAKE_OPTIONS) --directory $$D || exit $$?; done)
|
||||
|
||||
.PHONY: clean-builds
|
||||
clean-builds:
|
||||
rm -rf builds/
|
||||
rm -rf "$(SORTIX_BUILDS_DIR)"
|
||||
rm -f sortix.initrd
|
||||
rm -f sortix.iso
|
||||
rm -f sortix.iso.xz
|
||||
|
||||
.PHONY: clean-release
|
||||
clean-release:
|
||||
rm -rf "$(SORTIX_RELEASE_DIR)"
|
||||
|
||||
.PHONY: clean-sysroot
|
||||
clean-sysroot:
|
||||
rm -rf "$(SYSROOT)"
|
||||
|
||||
distclean: clean clean-builds clean-sysroot
|
||||
.PHONY: clean
|
||||
clean: clean-core
|
||||
|
||||
everything: all deb iso
|
||||
.PHONY: mostlyclean
|
||||
mostlyclean: clean-core clean-builds clean-release clean-sysroot
|
||||
|
||||
everything-all-archs:
|
||||
$(MAKE) clean $(MFLAGS)
|
||||
$(MAKE) everything $(MFLAGS) HOST=i486-sortix
|
||||
$(MAKE) clean $(MFLAGS)
|
||||
$(MAKE) everything $(MFLAGS) HOST=x86_64-sortix
|
||||
.PHONY: distclean
|
||||
distclean: clean-core clean-builds clean-release clean-sysroot
|
||||
|
||||
.PHONY: most-things
|
||||
most-things: sysroot initrd deb tar iso
|
||||
|
||||
.PHONY: everything
|
||||
everything: most-things iso.xz
|
||||
|
||||
# Targets that build multiple architectures.
|
||||
|
||||
.PHONY: all-archs
|
||||
all-archs:
|
||||
$(MAKE) clean $(MFLAGS)
|
||||
$(MAKE) all $(MFLAGS) HOST=i486-sortix
|
||||
$(MAKE) clean $(MFLAGS)
|
||||
$(MAKE) all $(MFLAGS) HOST=x86_64-sortix
|
||||
$(MAKE) clean
|
||||
$(MAKE) all HOST=i486-sortix
|
||||
$(MAKE) clean
|
||||
$(MAKE) all HOST=x86_64-sortix
|
||||
|
||||
# Initializing RamDisk
|
||||
$(INITRD): suball
|
||||
echo > "$(INITRD).filter"
|
||||
mkinitrd/mkinitrd --filter "$(INITRD).filter" "$(SYSROOT)/bin/$(HOST)" -o "$(INITRD)"
|
||||
.PHONY: most-things-all-archs
|
||||
most-things-all-archs:
|
||||
$(MAKE) clean
|
||||
$(MAKE) most-things HOST=i486-sortix
|
||||
$(MAKE) clean
|
||||
$(MAKE) most-things HOST=x86_64-sortix
|
||||
|
||||
# Statistics
|
||||
linecount:
|
||||
wc -l `find | grep -E '\.h$$|\.c$$|\.cpp$$|\.s$$|\.asm$$|Makefile$$' | grep -v sysroot` | sort -n
|
||||
.PHONY: everything-all-archs
|
||||
everything-all-archs:
|
||||
$(MAKE) clean
|
||||
$(MAKE) everything HOST=i486-sortix
|
||||
$(MAKE) clean
|
||||
$(MAKE) everything HOST=x86_64-sortix
|
||||
|
||||
.PHONY: release-all-archs
|
||||
release-all-archs:
|
||||
$(MAKE) clean
|
||||
$(MAKE) release HOST=i486-sortix
|
||||
$(MAKE) clean
|
||||
$(MAKE) release HOST=x86_64-sortix
|
||||
|
||||
# Initial ramdisk
|
||||
|
||||
$(INITRD): sysroot
|
||||
mkdir -p `dirname $(INITRD)`
|
||||
echo -n > $(INITRD).filter
|
||||
if ! which mkinitrd; then echo You need to install mkinitrd; fi
|
||||
mkinitrd --filter $(INITRD).filter "$(SYSROOT)/$(HOST)/bin" -o $(INITRD)
|
||||
rm -f $(INITRD).filter
|
||||
|
||||
.PHONY: initrd
|
||||
initrd: $(INITRD)
|
||||
|
||||
sortix.initrd: $(INITRD)
|
||||
cp $(INITRD) sortix.initrd
|
||||
|
||||
# Local machine
|
||||
|
||||
install: all
|
||||
cp sortix/sortix.bin /boot
|
||||
cp $(INITRD) /boot
|
||||
.PHONY: install
|
||||
install: sysroot initrd
|
||||
cp "$(SYSROOT)/boot/$(HOST)/sortix.bin" /boot/sortix.initrd
|
||||
cp $(INITRD) /boot/sortix.initrd
|
||||
cp debsrc/etc/grub.d/42_sortix /etc/grub.d/42_sortix
|
||||
chmod +x /etc/grub.d/42_sortix
|
||||
update-grub
|
||||
|
||||
.PHONY: uninstall
|
||||
uninstall:
|
||||
rm -f /boot/sortix.bin
|
||||
rm -f /boot/sortix.initrd
|
||||
rm -f /etc/grub.d/42_sortix
|
||||
|
||||
# Packaging
|
||||
|
||||
deb: debfile debsource
|
||||
$(SORTIX_BUILDS_DIR):
|
||||
mkdir -p $(SORTIX_BUILDS_DIR)
|
||||
|
||||
debfile: all
|
||||
rm -rf $(DEBDIR)
|
||||
mkdir -p $(DEBDIR)
|
||||
mkdir -p $(DEBDIR)/boot
|
||||
cp sortix/sortix.bin $(DEBDIR)/boot
|
||||
cp $(INITRD) $(DEBDIR)/boot
|
||||
expr \( `stat --printf="%s" $(DEBDIR)/boot/sortix.bin` \
|
||||
+ `stat --printf="%s" $(DEBDIR)/boot/sortix.initrd` \
|
||||
+ 1023 \) / 1024 > $(DEBDIR)/boot/deb.size
|
||||
cp -r debsrc/. $(DEBDIR)
|
||||
mkdir -p $(DEBDIR)/boot
|
||||
SIZE=`cat $(DEBDIR)/boot/deb.size`; \
|
||||
$(SORTIX_BUILDS_DIR)/$(BUILD_NAME).tar.xz: sysroot $(INITRD) $(SORTIX_BUILDS_DIR)
|
||||
rm -rf $(SORTIX_BUILDS_DIR)/tardir
|
||||
mkdir -p $(SORTIX_BUILDS_DIR)/tardir
|
||||
mkdir -p $(SORTIX_BUILDS_DIR)/tardir/boot
|
||||
cp "$(SYSROOT)/boot/$(HOST)/sortix.bin" $(SORTIX_BUILDS_DIR)/tardir/boot/sortix.bin
|
||||
cp $(INITRD) $(SORTIX_BUILDS_DIR)/tardir/boot/sortix.initrd
|
||||
cp -R debsrc -T $(SORTIX_BUILDS_DIR)/tardir
|
||||
rm -rf $(SORTIX_BUILDS_DIR)/tardir/DEBIAN
|
||||
tar --create --xz --file $(SORTIX_BUILDS_DIR)/$(BUILD_NAME).tar.xz -C $(SORTIX_BUILDS_DIR)/tardir `ls $(SORTIX_BUILDS_DIR)/tardir`
|
||||
rm -rf $(SORTIX_BUILDS_DIR)/tardir
|
||||
|
||||
.PHONY: tar
|
||||
tar: $(SORTIX_BUILDS_DIR)/$(BUILD_NAME).tar.xz
|
||||
|
||||
$(SORTIX_BUILDS_DIR)/$(DEBNAME).deb: sysroot $(INITRD) $(SORTIX_BUILDS_DIR)
|
||||
rm -rf $(SORTIX_BUILDS_DIR)/$(DEBNAME)
|
||||
mkdir -p $(SORTIX_BUILDS_DIR)/$(DEBNAME)
|
||||
mkdir -p $(SORTIX_BUILDS_DIR)/$(DEBNAME)/boot
|
||||
cp "$(SYSROOT)/boot/$(HOST)/sortix.bin" $(SORTIX_BUILDS_DIR)/$(DEBNAME)/boot/sortix.bin
|
||||
cp $(INITRD) $(SORTIX_BUILDS_DIR)/$(DEBNAME)/boot/sortix.initrd
|
||||
expr \( `stat --printf="%s" $(SORTIX_BUILDS_DIR)/$(DEBNAME)/boot/sortix.bin` \
|
||||
+ `stat --printf="%s" $(SORTIX_BUILDS_DIR)/$(DEBNAME)/boot/sortix.initrd` \
|
||||
+ 1023 \) / 1024 > $(SORTIX_BUILDS_DIR)/$(DEBNAME)/boot/deb.size
|
||||
cp -R debsrc -T $(SORTIX_BUILDS_DIR)/$(DEBNAME)
|
||||
SIZE=`cat $(SORTIX_BUILDS_DIR)/$(DEBNAME)/boot/deb.size`; \
|
||||
cat debsrc/DEBIAN/control | \
|
||||
sed "s/SORTIX_PACKAGE_NAME/$(PACKAGENAME)/g" | \
|
||||
sed "s/SORTIX_PACKAGE_NAME/sortix/g" | \
|
||||
sed "s/SORTIX_VERSION/$(VERSION)/g" | \
|
||||
sed "s/SORTIX_ARCH/all/g" | \
|
||||
sed "s/SORTIX_SIZE/$$SIZE/g" | \
|
||||
cat > $(DEBDIR)/DEBIAN/control
|
||||
rm $(DEBDIR)/boot/deb.size
|
||||
dpkg --build $(DEBDIR) $(DEBFILE)
|
||||
rm -rf $(DEBDIR)/DEBIAN
|
||||
(cd builds/$(DEBNAME) && tar cfz ../$(DEBNAME).tar.gz `ls`)
|
||||
rm -rf $(DEBDIR)
|
||||
cat > $(SORTIX_BUILDS_DIR)/$(DEBNAME)/DEBIAN/control
|
||||
rm $(SORTIX_BUILDS_DIR)/$(DEBNAME)/boot/deb.size
|
||||
dpkg --build $(SORTIX_BUILDS_DIR)/$(DEBNAME) $(SORTIX_BUILDS_DIR)/$(DEBNAME).deb
|
||||
rm -rf $(SORTIX_BUILDS_DIR)/$(DEBNAME)/DEBIAN
|
||||
rm -rf $(SORTIX_BUILDS_DIR)/$(DEBNAME)
|
||||
|
||||
debsource: all
|
||||
rm -rf $(DEBSRCDIR)
|
||||
mkdir -p $(DEBSRCDIR)
|
||||
for D in `ls | grep -v builds | grep -v sysroot`; do cp -r $$D $(DEBSRCDIR); done
|
||||
(cd $(DEBSRCDIR) && make distclean SYSROOT=$(shell pwd)/$(DEBSRCDIR)/sysroot)
|
||||
rm -rf $(DEBSRCDIR)/sysroot
|
||||
(cd builds && tar cfz $(DEBSRCNAME)-src.tar.gz $(DEBSRCNAME)-src)
|
||||
rm -rf $(DEBSRCDIR)
|
||||
.PHONY: deb
|
||||
deb: $(SORTIX_BUILDS_DIR)/$(DEBNAME).deb
|
||||
|
||||
# Bootable images
|
||||
|
||||
$(ISOFILE): all debsource
|
||||
rm -rf $(ISODIR)
|
||||
mkdir -p builds
|
||||
mkdir -p $(ISODIR)
|
||||
cp -r isosrc/. $(ISODIR)
|
||||
cp sortix/sortix.bin $(ISODIR)/boot
|
||||
cp $(INITRD) $(ISODIR)/boot/sortix.initrd
|
||||
cp builds/$(DEBSRCNAME)-src.tar.gz $(ISODIR)
|
||||
grub-mkrescue -o $(ISOFILE) $(ISODIR)
|
||||
rm -rf $(ISODIR)
|
||||
$(SORTIX_BUILDS_DIR)/$(BUILD_NAME).iso: sysroot $(INITRD) $(SORTIX_BUILDS_DIR)
|
||||
rm -rf $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso
|
||||
mkdir -p $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso
|
||||
cp -R isosrc -T $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso
|
||||
cp "$(SYSROOT)/boot/$(HOST)/sortix.bin" $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/sortix.bin
|
||||
cp $(INITRD) $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso/boot/sortix.initrd
|
||||
grub-mkrescue -o $(SORTIX_BUILDS_DIR)/$(BUILD_NAME).iso $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso
|
||||
rm -rf $(SORTIX_BUILDS_DIR)/$(BUILD_NAME)-iso
|
||||
|
||||
iso: $(ISOFILE)
|
||||
$(SORTIX_BUILDS_DIR)/$(BUILD_NAME).iso.xz: $(SORTIX_BUILDS_DIR)/$(BUILD_NAME).iso $(SORTIX_BUILDS_DIR)
|
||||
xz -c $< > $@
|
||||
|
||||
sortix.iso: iso
|
||||
cp $(ISOFILE) $@
|
||||
.PHONY: iso
|
||||
iso: $(SORTIX_BUILDS_DIR)/$(BUILD_NAME).iso
|
||||
|
||||
.PHONY: iso.xz
|
||||
iso.xz: $(SORTIX_BUILDS_DIR)/$(BUILD_NAME).iso.xz
|
||||
|
||||
sortix.iso: $(SORTIX_BUILDS_DIR)/$(BUILD_NAME).iso
|
||||
cp $(SORTIX_BUILDS_DIR)/$(BUILD_NAME).iso $@
|
||||
|
||||
sortix.iso.xz: $(SORTIX_BUILDS_DIR)/$(BUILD_NAME).iso.xz
|
||||
cp $(SORTIX_BUILDS_DIR)/$(BUILD_NAME).iso.xz $@
|
||||
|
||||
# Release
|
||||
|
||||
$(SORTIX_RELEASE_DIR):
|
||||
mkdir -p $@
|
||||
|
||||
$(SORTIX_RELEASE_DIR)/$(VERSION): $(SORTIX_RELEASE_DIR)
|
||||
mkdir -p $@
|
||||
|
||||
$(SORTIX_RELEASE_DIR)/$(VERSION)/builds: $(SORTIX_RELEASE_DIR)/$(VERSION)
|
||||
mkdir -p $@
|
||||
|
||||
$(SORTIX_RELEASE_DIR)/$(VERSION)/builds/$(BUILD_NAME).iso.xz: $(SORTIX_BUILDS_DIR)/$(BUILD_NAME).iso.xz $(SORTIX_RELEASE_DIR)/$(VERSION)/builds
|
||||
cp $< $@
|
||||
|
||||
.PHONY: release-iso.xz
|
||||
release-iso.xz: $(SORTIX_RELEASE_DIR)/$(VERSION)/builds/$(BUILD_NAME).iso.xz
|
||||
|
||||
$(SORTIX_RELEASE_DIR)/$(VERSION)/builds/$(DEBNAME).deb: $(SORTIX_BUILDS_DIR)/$(DEBNAME).deb $(SORTIX_RELEASE_DIR)/$(VERSION)/builds
|
||||
cp $< $@
|
||||
|
||||
.PHONY: release-deb
|
||||
release-deb: $(SORTIX_RELEASE_DIR)/$(VERSION)/builds/$(DEBNAME).deb
|
||||
|
||||
$(SORTIX_RELEASE_DIR)/$(VERSION)/builds/$(BUILD_NAME).tar.xz: $(SORTIX_BUILDS_DIR)/$(BUILD_NAME).tar.xz $(SORTIX_RELEASE_DIR)/$(VERSION)/builds
|
||||
cp $< $@
|
||||
|
||||
.PHONY: release-tar
|
||||
release-tar: $(SORTIX_RELEASE_DIR)/$(VERSION)/builds/$(BUILD_NAME).tar.xz
|
||||
|
||||
.PHONY: release-builds
|
||||
release-builds: release-iso.xz release-deb release-tar
|
||||
|
||||
$(SORTIX_RELEASE_DIR)/$(VERSION)/README: README $(SORTIX_RELEASE_DIR)/$(VERSION)
|
||||
cp $< $@
|
||||
|
||||
.PHONY: release-readme
|
||||
release-readme: $(SORTIX_RELEASE_DIR)/$(VERSION)/README
|
||||
|
||||
.PHONY: release-arch
|
||||
release-arch: release-builds release-readme
|
||||
|
||||
.PHONY: release-shared
|
||||
release-shared: release-readme
|
||||
|
||||
.PHONY: release
|
||||
release: release-arch release-shared
|
||||
|
||||
# Virtualization
|
||||
.PHONY: run-virtualbox
|
||||
run-virtualbox: sortix.iso
|
||||
virtualbox --startvm sortix
|
||||
|
||||
.PHONY: run-virtualbox-debug
|
||||
run-virtualbox-debug: sortix.iso
|
||||
virtualbox --debug --start-running --startvm sortix
|
||||
|
||||
# Statistics
|
||||
.PHONY: linecount
|
||||
linecount:
|
||||
wc -l `find | grep -E '\.h$$|\.h\+\+$$|\.c$$|\.cpp$$|\.c\+\+$$|\.s$$|\.S$$|\.asm$$|Makefile$$' | grep -v sysroot | grep -v sysroot-overlay` | sort -n
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
SOFTWARE_MEANT_FOR_SORTIX=1
|
||||
include ../compiler.mak
|
||||
include ../version.mak
|
||||
include ../dirs.mak
|
||||
|
||||
ifndef OPTLEVEL
|
||||
OPTLEVEL=-O2
|
||||
OPTLEVEL=-g -O2
|
||||
endif
|
||||
|
||||
ifndef CXXFLAGS
|
||||
|
@ -16,24 +17,21 @@ BINARIES:=\
|
|||
benchsyscall \
|
||||
benchctxswitch \
|
||||
|
||||
INSTALLBINARIES:=$(addprefix $(DESTDIR)$(BINDIR)/,$(BINARIES))
|
||||
|
||||
all: $(BINARIES)
|
||||
|
||||
.PHONY: all install uninstall clean
|
||||
|
||||
install: all
|
||||
mkdir -p $(INSTALLBINDIR)/$(HOST)
|
||||
install $(BINARIES) $(INSTALLBINDIR)/$(HOST)
|
||||
mkdir -p $(DESTDIR)$(BINDIR)
|
||||
install $(BINARIES) $(DESTDIR)$(BINDIR)
|
||||
|
||||
uninstall:
|
||||
for FILE in $(INSTALLBINDIR); do \
|
||||
rm -f $(INSTALLBINDIR)/$(HOST)/$$FILE; \
|
||||
done
|
||||
rm -f $(INSTALLBINARIES)
|
||||
|
||||
%: %.cpp
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $< -o $@
|
||||
|
||||
sh: mxsh
|
||||
cp $< $@
|
||||
$(CXX) -std=gnu++11 $(CPPFLAGS) $(CXXFLAGS) $< -o $@
|
||||
|
||||
clean:
|
||||
rm -f $(BINARIES) *.o
|
||||
|
|
113
compiler.mak
113
compiler.mak
|
@ -1,66 +1,113 @@
|
|||
ifndef BITS
|
||||
BITS:=$(shell getconf LONG_BIT)
|
||||
endif
|
||||
COMPILER_MAK_DIR:=$(dir $(lastword $(MAKEFILE_LIST)))
|
||||
include $(COMPILER_MAK_DIR)/platform.mak
|
||||
|
||||
ifndef HOST
|
||||
ifeq ($(BITS),64)
|
||||
HOST:=x86_64-sortix
|
||||
else
|
||||
HOST:=i486-sortix
|
||||
# Warn if default target is used and the software shouldn't be built under Sortix.
|
||||
ifeq ($(BUILD_IS_SORTIX),1)
|
||||
ifeq ($(MAKEFILE_NOT_MEANT_FOR_SORTIX), 1)
|
||||
makefile_not_meant_for_sortix:
|
||||
@echo This makefile isn\'t meant to work under Sortix
|
||||
@exit 1
|
||||
endif
|
||||
MFLAGS:=$(MFLAGS) HOST=$(HOST)
|
||||
endif
|
||||
|
||||
# Warn if default target is used and the software should be built under Sortix.
|
||||
ifeq ($(BUILD_IS_SORTIX),0)
|
||||
ifeq ($(MAKEFILE_MEANT_FOR_SORTIX), 1)
|
||||
makefile_meant_for_sortix:
|
||||
@echo This makefile is meant to work under Sortix, not $(BUILD)
|
||||
@exit 1
|
||||
endif
|
||||
endif
|
||||
|
||||
# Warn if default target is used and the software shouldn't be built for Sortix.
|
||||
ifeq ($(HOST_IS_SORTIX),1)
|
||||
ifeq ($(SOFTWARE_NOT_MEANT_FOR_SORTIX), 1)
|
||||
software_not_meant_for_sortix:
|
||||
@echo This software isn\'t meant to work under Sortix
|
||||
@exit 1
|
||||
endif
|
||||
endif
|
||||
|
||||
# Warn if default target is used and the software should be built for Sortix.
|
||||
ifeq ($(HOST_IS_SORTIX),0)
|
||||
ifeq ($(SOFTWARE_MEANT_FOR_SORTIX), 1)
|
||||
software_meant_for_sortix:
|
||||
@echo This software is meant to work under Sortix, not $(HOST)
|
||||
@echo Attempt was $(MAKE) $(MAKEFLAGS)
|
||||
@echo Try: $(MAKE) $(MAKEFLAGS) HOST=$(UNAME_PLATFORM)-sortix
|
||||
@exit 1
|
||||
endif
|
||||
endif
|
||||
|
||||
# Provide deprecated CPU variable so makefiles can select CPU-specific dirs.
|
||||
ifeq ($(HOST),i486-sortix)
|
||||
MACHINE:=i486
|
||||
CPU:=x86
|
||||
OTHER_PLATFORMS=x86-64-sortix
|
||||
endif
|
||||
ifeq ($(HOST),x86_64-sortix)
|
||||
MACHINE:=x86_64
|
||||
CPU:=x64
|
||||
OTHER_PLATFORMS=i486-sortix
|
||||
endif
|
||||
|
||||
ifndef BUILDCC
|
||||
BUILDCC:=gcc
|
||||
endif
|
||||
ifndef BUILDCXX
|
||||
BUILDCXX:=g++
|
||||
endif
|
||||
ifndef BUILDAR
|
||||
BUILDAR:=ar
|
||||
endif
|
||||
ifndef BUILDAS
|
||||
BUILDAS:=as
|
||||
endif
|
||||
ifndef BUILDLD
|
||||
BUILDAS:=ld
|
||||
endif
|
||||
ifndef BUILDOBJCOPY
|
||||
BUILDOBJCOPY:=objcopy
|
||||
# Determine the prefix for build tools.
|
||||
ifndef BUILD_TOOL_PREFIX
|
||||
BUILD_TOOL_PREFIX:=
|
||||
endif
|
||||
|
||||
# Determine the prefix for host tools.
|
||||
ifndef HOST_TOOL_PREFIX
|
||||
ifeq ($(BUILD),$(HOST))
|
||||
HOST_TOOL_PREFIX:=$(BUILD_TOOL_PREFIX)
|
||||
else
|
||||
HOST_TOOL_PREFIX:=$(HOST)-
|
||||
endif
|
||||
endif
|
||||
|
||||
# Determine the names of the tools that target the build platform.
|
||||
ifndef BUILDCC
|
||||
BUILDCC:=$(BUILD_TOOL_PREFIX)gcc
|
||||
endif
|
||||
ifndef BUILDCXX
|
||||
BUILDCXX:=$(BUILD_TOOL_PREFIX)g++
|
||||
endif
|
||||
ifndef BUILDAR
|
||||
BUILDAR:=$(BUILD_TOOL_PREFIX)ar
|
||||
endif
|
||||
ifndef BUILDAS
|
||||
BUILDAS:=$(BUILD_TOOL_PREFIX)as
|
||||
endif
|
||||
ifndef BUILDLD
|
||||
BUILDAS:=$(BUILD_TOOL_PREFIX)ld
|
||||
endif
|
||||
ifndef BUILDOBJCOPY
|
||||
BUILDOBJCOPY:=$(BUILD_TOOL_PREFIX)objcopy
|
||||
endif
|
||||
|
||||
# Determine the names of the tools that target the host platform.
|
||||
ifndef HOSTCC
|
||||
HOSTCC:=$(HOST)-gcc
|
||||
HOSTCC:=$(HOST_TOOL_PREFIX)gcc
|
||||
endif
|
||||
ifndef HOSTCXX
|
||||
HOSTCXX:=$(HOST)-g++
|
||||
HOSTCXX:=$(HOST_TOOL_PREFIX)g++
|
||||
endif
|
||||
ifndef HOSTAR
|
||||
HOSTAR:=$(HOST)-ar
|
||||
HOSTAR:=$(HOST_TOOL_PREFIX)ar
|
||||
endif
|
||||
ifndef HOSTAS
|
||||
HOSTAS:=$(HOST)-as
|
||||
HOSTAS:=$(HOST_TOOL_PREFIX)as
|
||||
endif
|
||||
ifndef HOSTLD
|
||||
HOSTLD:=$(HOST)-ld
|
||||
HOSTLD:=$(HOST_TOOL_PREFIX)ld
|
||||
endif
|
||||
ifndef HOSTOBJCOPY
|
||||
HOSTOBJCOPY:=$(HOST)-objcopy
|
||||
HOSTOBJCOPY:=$(HOST_TOOL_PREFIX)objcopy
|
||||
endif
|
||||
|
||||
CC:=$(HOSTCC)
|
||||
CXX:=$(HOSTCXX)
|
||||
AR=:$(HOSTAR)
|
||||
AR:=$(HOSTAR)
|
||||
AS:=$(HOSTAS)
|
||||
LD:=$(HOSTLD)
|
||||
OBJCOPY:=$(HOSTOBJCOPY)
|
||||
|
|
165
dirs.mak
165
dirs.mak
|
@ -1,119 +1,56 @@
|
|||
ifndef SYSROOT
|
||||
SYSROOT:=/
|
||||
ifeq ($(HOST_IS_SORTIX),1)
|
||||
DEFAULT_PREFIX=
|
||||
else
|
||||
DEFAULT_PREFIX=/usr/local
|
||||
endif
|
||||
|
||||
# The locations from where the program will be invoked/run on the host machine.
|
||||
# For instance, on Sortix programs are normally run from the /bin union
|
||||
# directory, even though they are actually installed somewhere else.
|
||||
ifndef RUNPREFIXNAME
|
||||
RUNPREFIXNAME:=/
|
||||
ifeq ($(HOST_IS_SORTIX),1)
|
||||
DEFAULT_EXEC_PREFIX=$(PREFIX)/$(HOST)
|
||||
else
|
||||
DEFAULT_EXEC_PREFIX=$(PREFIX)
|
||||
endif
|
||||
RUNPREFIXNAME:=$(shell echo "$(RUNPREFIXNAME)" | sed 's/\/\/*/\//g')
|
||||
|
||||
ifndef RUNPREFIX
|
||||
RUNPREFIX:=/$(RUNPREFIXNAME)
|
||||
endif
|
||||
RUNPREFIX:=$(shell echo "$(RUNPREFIX)" | sed 's/\/\/*/\//g')
|
||||
PREFIX?=$(DEFAULT_PREFIX)
|
||||
EXEC_PREFIX?=$(DEFAULT_EXEC_PREFIX)
|
||||
BINDIR?=$(EXEC_PREFIX)/bin
|
||||
SBINDIR?=$(EXEC_PREFIX)/sbin
|
||||
LIBEXECDIR?=$(EXEC_PREFIX)/libexec
|
||||
BOOTDIR?=$(PREFIX)/boot
|
||||
DATAROOTDIR?=$(PREFIX)/share
|
||||
DATADIR?=$(DATAROOTDIR)
|
||||
SYSCONFDIR?=$(PREFIX)/etc
|
||||
SHAREDSTATEDIR?=$(PREFIX)/com
|
||||
LOCALSTATEDIR?=$(PREFIX)/var
|
||||
RUNSTATEDIR?=$(LOCALSTATEDIR)/run
|
||||
INCLUDEDIR?=$(PREFIX)/include
|
||||
DOCDIR?=$(DATAROOTDIR)/doc
|
||||
INFODIR?=$(DATAROOTDIR)/info
|
||||
HTMLDIR?=$(DOCDIR)
|
||||
DVIDIR?=$(DOCDIR)
|
||||
PSDIR?=$(DOCDIR)
|
||||
PDFDIR?=$(DOCDIR)
|
||||
PSDIR?=$(DOCDIR)
|
||||
LIBDIR?=$(EXEC_PREFIX)/lib
|
||||
LOCALEDIR?=$(DATAROOTDIR/locale
|
||||
MANDIR?=$(DATAROOTDIR)/man
|
||||
MAN1DIR?=$(MANDIR)/man1
|
||||
MAN2DIR?=$(MANDIR)/man2
|
||||
MAN3DIR?=$(MANDIR)/man3
|
||||
MAN4DIR?=$(MANDIR)/man4
|
||||
MAN5DIR?=$(MANDIR)/man5
|
||||
MAN6DIR?=$(MANDIR)/man6
|
||||
MAN7DIR?=$(MANDIR)/man7
|
||||
MAN8DIR?=$(MANDIR)/man8
|
||||
MAN9DIR?=$(MANDIR)/man9
|
||||
MANEXT?=.1
|
||||
MAN1EXT?=.1
|
||||
MAN2EXT?=.2
|
||||
MAN3EXT?=.3
|
||||
MAN4EXT?=.4
|
||||
MAN5EXT?=.5
|
||||
MAN6EXT?=.6
|
||||
MAN7EXT?=.7
|
||||
MAN8EXT?=.8
|
||||
MAN9EXT?=.9
|
||||
|
||||
ifndef RUNBINDIR
|
||||
RUNBINDIR:=$(RUNPREFIX)/bin
|
||||
endif
|
||||
RUNBINDIR:=$(shell echo "$(RUNBINDIR)" | sed 's/\/\/*/\//g')
|
||||
|
||||
ifndef RUNLIBDIR
|
||||
RUNLIBDIR:=$(RUNPREFIX)/lib
|
||||
endif
|
||||
RUNLIBDIR:=$(shell echo "$(RUNLIBDIR)" | sed 's/\/\/*/\//g')
|
||||
|
||||
ifndef RUNINCLUDEDIR
|
||||
RUNINCLUDEDIR:=$(RUNPREFIX)/include
|
||||
endif
|
||||
RUNINCLUDEDIR:=$(shell echo "$(RUNINCLUDEDIR)" | sed 's/\/\/*/\//g')
|
||||
|
||||
ifndef RUNBOOTDIR
|
||||
RUNBOOTDIR:=$(RUNPREFIX)/boot
|
||||
endif
|
||||
RUNBOOTDIR:=$(shell echo "$(RUNBOOTDIR)" | sed 's/\/\/*/\//g')
|
||||
|
||||
# Where the program will be really installed on the host machine. For instance,
|
||||
# on Sortix programs are run from the /bin union directory, but they are
|
||||
# installed somewhere else, these variables tells where. Note that programs must
|
||||
# not depend on being installed here, they should detect the proper directories
|
||||
# at (preferably) runtime, or during the install configuration step when
|
||||
# installed through package management.
|
||||
ifndef PREFIXNAME
|
||||
PREFIXNAME:=/data/local
|
||||
endif
|
||||
PREFIXNAME:=$(shell echo "$(PREFIXNAME)" | sed 's/\/\/*/\//g')
|
||||
|
||||
ifndef PREFIX
|
||||
PREFIX:=$(SYSROOT)/$(PREFIXNAME)
|
||||
endif
|
||||
PREFIX:=$(shell echo "$(PREFIX)" | sed 's/\/\/*/\//g')
|
||||
|
||||
ifndef BINDIR
|
||||
BINDIR:=$(PREFIX)/bin
|
||||
endif
|
||||
BINDIR:=$(shell echo "$(BINDIR)" | sed 's/\/\/*/\//g')
|
||||
|
||||
ifndef LIBDIR
|
||||
LIBDIR:=$(PREFIX)/lib
|
||||
endif
|
||||
LIBDIR:=$(shell echo "$(LIBDIR)" | sed 's/\/\/*/\//g')
|
||||
|
||||
ifndef INCLUDEDIR
|
||||
INCLUDEDIR:=$(PREFIX)/include
|
||||
endif
|
||||
INCLUDEDIR:=$(shell echo "$(INCLUDEDIR)" | sed 's/\/\/*/\//g')
|
||||
|
||||
ifndef BOOTDIR
|
||||
BOOTDIR:=$(PREFIX)/boot
|
||||
endif
|
||||
BOOTDIR:=$(shell echo "$(BOOTDIR)" | sed 's/\/\/*/\//g')
|
||||
|
||||
# Where the program will be installed on the build machine. This is mostly
|
||||
# useful if cross compiling or producing a software distribution image. By
|
||||
# default programs will be installed in the same location as the host machine.
|
||||
ifdef INSTALLPREFIX
|
||||
INSTALLPREFIX_WAS_SPECIFIED=1
|
||||
endif
|
||||
ifndef INSTALLPREFIX
|
||||
INSTALLPREFIX:=$(PREFIX)
|
||||
endif
|
||||
INSTALLPREFIX:=$(shell echo "$(INSTALLPREFIX)" | sed 's/\/\/*/\//g')
|
||||
|
||||
ifndef INSTALLBINDIR
|
||||
ifdef INSTALLPREFIX_WAS_SPECIFIED
|
||||
INSTALLBINDIR:=$(INSTALLPREFIX)/bin
|
||||
else
|
||||
INSTALLBINDIR:=$(BINDIR)
|
||||
endif
|
||||
endif
|
||||
INSTALLBINDIR:=$(shell echo "$(INSTALLBINDIR)" | sed 's/\/\/*/\//g')
|
||||
|
||||
ifndef INSTALLLIBDIR
|
||||
ifdef INSTALLPREFIX_WAS_SPECIFIED
|
||||
INSTALLLIBDIR:=$(INSTALLPREFIX)/lib
|
||||
else
|
||||
INSTALLLIBDIR:=$(LIBDIR)
|
||||
endif
|
||||
endif
|
||||
INSTALLLIBDIR:=$(shell echo "$(INSTALLLIBDIR)" | sed 's/\/\/*/\//g')
|
||||
|
||||
ifndef INSTALLINCLUDEDIR
|
||||
ifdef INSTALLPREFIX_WAS_SPECIFIED
|
||||
INSTALLINCLUDEDIR:=$(INSTALLPREFIX)/include
|
||||
else
|
||||
INSTALLINCLUDEDIR:=$(INCLUDEDIR)
|
||||
endif
|
||||
endif
|
||||
INSTALLINCLUDEDIR:=$(shell echo "$(INSTALLINCLUDEDIR)" | sed 's/\/\/*/\//g')
|
||||
|
||||
ifndef INSTALLBOOTDIR
|
||||
ifdef INSTALLPREFIX_WAS_SPECIFIED
|
||||
INSTALLBOOTDIR:=$(INSTALLPREFIX)/boot
|
||||
else
|
||||
INSTALLBOOTDIR:=$(BOOTDIR)
|
||||
endif
|
||||
endif
|
||||
INSTALLBOOTDIR:=$(shell echo "$(INSTALLBOOTDIR)" | sed 's/\/\/*/\//g')
|
||||
DESTDIR?=
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
SOFTWARE_MEANT_FOR_SORTIX=1
|
||||
include ../compiler.mak
|
||||
include ../version.mak
|
||||
include ../dirs.mak
|
||||
|
||||
ifndef OPTLEVEL
|
||||
OPTLEVEL:=-O2
|
||||
OPTLEVEL:=-g -O2
|
||||
endif
|
||||
|
||||
ifndef CXXFLAGS
|
||||
|
@ -47,32 +48,25 @@ clean:
|
|||
rm -f *.o client/*.o server/*.o
|
||||
|
||||
%.o: %.cpp
|
||||
$(HOSTCXX) -c $< -o $@ $(CPPFLAGS) $(CXXFLAGS)
|
||||
$(HOSTCXX) -std=gnu++11 -c $< -o $@ $(CPPFLAGS) $(CXXFLAGS)
|
||||
|
||||
# Installation into sysroot
|
||||
install: install-headers install-client install-server
|
||||
|
||||
install-include-dirs: headers
|
||||
mkdir -p $(INSTALLINCLUDEDIR)
|
||||
for D in $$(find include/ -type d | sed 's/include\/*//'); do \
|
||||
mkdir -p $(INSTALLINCLUDEDIR)/$$D || exit $?; \
|
||||
done
|
||||
mkdir -p $(DESTDIR)$(INCLUDEDIR)
|
||||
|
||||
install-headers: install-include-dirs headers
|
||||
for SRC in $$(find include/ -type f); do \
|
||||
DEST=`echo $$SRC | sed 's/include\///'`; \
|
||||
cp -P $$SRC $(INSTALLINCLUDEDIR)/$$DEST || exit $?; \
|
||||
done
|
||||
cp -RTv include $(DESTDIR)$(INCLUDEDIR)
|
||||
|
||||
install-client-dirs:
|
||||
mkdir -p $(INSTALLLIBDIR)
|
||||
mkdir -p $(INSTALLLIBDIR)/$(HOST)
|
||||
mkdir -p $(DESTDIR)$(LIBDIR)
|
||||
|
||||
install-client: install-client-dirs
|
||||
cp -P client/libdispd.a $(INSTALLLIBDIR)/$(HOST)
|
||||
install-client: install-client-dirs client
|
||||
cp -P client/libdispd.a $(DESTDIR)$(LIBDIR)
|
||||
|
||||
install-server-dirs:
|
||||
mkdir -p $(INSTALLBINDIR)/$(HOST)
|
||||
mkdir -p $(DESTDIR)$(BINDIR)
|
||||
|
||||
install-server: install-server-dirs
|
||||
install server/dispd $(INSTALLBINDIR)/$(HOST)
|
||||
install-server: install-server-dirs server
|
||||
install server/dispd $(DESTDIR)$(BINDIR)
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
SOFTWARE_MEANT_FOR_SORTIX=1
|
||||
include ../compiler.mak
|
||||
include ../version.mak
|
||||
include ../dirs.mak
|
||||
|
||||
ifndef OPTLEVEL
|
||||
OPTLEVEL=-O2
|
||||
OPTLEVEL=-g -O2
|
||||
endif
|
||||
|
||||
ifndef CXXFLAGS
|
||||
|
@ -18,6 +19,8 @@ conway \
|
|||
snake \
|
||||
asteroids \
|
||||
|
||||
INSTALLBINARIES:=$(addprefix $(DESTDIR)$(BINDIR)/,$(BINARIES))
|
||||
|
||||
LIBS:=-ldispd
|
||||
|
||||
all: $(BINARIES)
|
||||
|
@ -25,19 +28,14 @@ all: $(BINARIES)
|
|||
.PHONY: all install uninstall clean
|
||||
|
||||
install: all
|
||||
mkdir -p $(INSTALLBINDIR)/$(HOST)
|
||||
install $(BINARIES) $(INSTALLBINDIR)/$(HOST)
|
||||
mkdir -p $(DESTDIR)$(BINDIR)
|
||||
install $(BINARIES) $(DESTDIR)$(BINDIR)
|
||||
|
||||
uninstall:
|
||||
for FILE in $(INSTALLBINDIR); do \
|
||||
rm -f $(INSTALLBINDIR)/$(HOST)/$$FILE; \
|
||||
done
|
||||
rm -f $(INSTALLBINARIES)
|
||||
|
||||
%: %.cpp
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $< -o $@ $(LIBS)
|
||||
|
||||
sh: mxsh
|
||||
cp $< $@
|
||||
$(CXX) -std=gnu++11 $(CPPFLAGS) $(CXXFLAGS) $< -o $@ $(LIBS)
|
||||
|
||||
clean:
|
||||
rm -f $(BINARIES) *.o
|
||||
|
|
|
@ -397,7 +397,7 @@ public:
|
|||
private:
|
||||
static const size_t MIN_POLYS = 5;
|
||||
static const size_t MAX_POLYS = 12;
|
||||
static const float MAX_TURN_SPEED = 50.0f;
|
||||
static constexpr float MAX_TURN_SPEED = 50.0f;
|
||||
size_t numpolygons;
|
||||
float slice;
|
||||
float polydists[MAX_POLYS+1];
|
||||
|
|
140
libc/Makefile
140
libc/Makefile
|
@ -1,33 +1,20 @@
|
|||
SOFTWARE_MEANT_FOR_SORTIX=1
|
||||
include ../compiler.mak
|
||||
include ../version.mak
|
||||
include ../dirs.mak
|
||||
|
||||
ifndef OPTLEVEL
|
||||
OPTLEVEL:=-O2
|
||||
endif
|
||||
|
||||
ifeq ($(DEBUG_LIBC),1)
|
||||
FLAGSDEBUG=-g3
|
||||
else
|
||||
FLAGSDEBUG=$(OPTLEVEL)
|
||||
OPTLEVEL:=-g -O2 -fno-omit-frame-pointer
|
||||
endif
|
||||
|
||||
CPUDIR:=$(CPU)
|
||||
|
||||
ifeq ($(HOST),i486-sortix)
|
||||
CPUFLAGS=
|
||||
endif
|
||||
|
||||
ifeq ($(HOST),x86_64-sortix)
|
||||
CPUFLAGS=-fPIC -mno-red-zone
|
||||
endif
|
||||
|
||||
CPPINCLUDES=-I preproc
|
||||
CPPFLAGS=-DLIBC_LIBRARY -U_GNU_SOURCE $(CPUDEFINES) $(CPPINCLUDES)
|
||||
FLAGS=$(CPUFLAGS) -Wall -Wextra -fno-stack-protector $(FLAGSDEBUG)
|
||||
CFLAGS=$(FLAGS) -std=c99
|
||||
CXXFLAGS=$(FLAGS) -std=gnu++0x -fno-exceptions -fno-rtti
|
||||
ASFLAGS=$(CPUASFLAGS)
|
||||
CPPFLAGS=-DLIBC_LIBRARY $(CPPINCLUDES)
|
||||
FLAGS=-Wall -Wextra $(OPTLEVEL)
|
||||
CFLAGS=-std=gnu99
|
||||
CXXFLAGS=-std=gnu++11 -fno-exceptions -fno-rtti
|
||||
ASFLAGS=
|
||||
|
||||
FREEOBJS=\
|
||||
abort.o \
|
||||
|
@ -224,7 +211,6 @@ $(FREEOBJS) \
|
|||
$(HOSTEDOBJS) \
|
||||
|
||||
CRTOBJ=\
|
||||
start.o \
|
||||
crt1.o \
|
||||
crti.o \
|
||||
crtn.o \
|
||||
|
@ -236,16 +222,33 @@ UNPROCHEADERDIRS:=$(shell find include -type d)
|
|||
UNPROCHEADERS:=$(shell find include -type f)
|
||||
HEADERDIRS:=$(patsubst include%,preproc%,$(UNPROCHEADERDIRS))
|
||||
HEADERS:=$(patsubst include%,preproc%,$(UNPROCHEADERS))
|
||||
INSTALLHEADERDIRS:=$(addprefix $(DESTDIR)$(INCLUDEDIR),$(patsubst preproc%,%,$(HEADERDIRS)))
|
||||
INSTALLHEADERS:=$(addprefix $(DESTDIR)$(INCLUDEDIR),$(patsubst preproc%,%,$(HEADERS)))
|
||||
|
||||
SORTIXOBJS:=$(addprefix sortix/,$(FREEOBJS))
|
||||
SORTIXCPPFLAGS:=-DSORTIX_KERNEL
|
||||
SORTIXCPPFLAGS:=$(CPPFLAGS) -DSORTIX_KERNEL
|
||||
SORTIXFLAGS:=$(FLAGS) -ffreestanding
|
||||
SORTIXCFLAGS:=$(CFLAGS)
|
||||
SORTIXCXXFLAGS:=$(CXXFLAGS)
|
||||
ifeq ($(HOST),x86_64-sortix)
|
||||
SORTIXFLAGS:=$(SORTIXFLAGS) -mno-red-zone
|
||||
endif
|
||||
|
||||
BINS=libc.a libg.a libm.a libstdc++.a libc-sortix.a $(CRTOBJ)
|
||||
BINS=libc.a libg.a libm.a libpthread.a libstdc++.a $(CRTOBJ)
|
||||
BINSKERNEL=libc-sortix.a
|
||||
INSTALLLIBS:=$(addprefix $(DESTDIR)$(LIBDIR)/,$(BINS))
|
||||
INSTALLLIBSKERNEL:=$(addprefix $(DESTDIR)$(LIBDIR)/,$(BINSKERNEL))
|
||||
|
||||
all: $(BINS)
|
||||
all: libs libs-kernel
|
||||
|
||||
.PHONY: all headers clean install install-include-dirs install-headers \
|
||||
install-lib-dirs install-libs
|
||||
libs: $(BINS)
|
||||
|
||||
libs-kernel: $(BINSKERNEL)
|
||||
|
||||
.PHONY: all libs headers clean install install-include-dirs install-headers \
|
||||
install-lib-dirs install-libs libs-kernel
|
||||
|
||||
FORCE:
|
||||
|
||||
libc.a: $(OBJS)
|
||||
$(HOSTAR) rcs $@ $(OBJS)
|
||||
|
@ -253,17 +256,17 @@ libc.a: $(OBJS)
|
|||
libc-sortix.a: $(SORTIXOBJS)
|
||||
$(HOSTAR) rcs $@ $(SORTIXOBJS)
|
||||
|
||||
libg.a: libc.a
|
||||
ln -sf $< $@
|
||||
libg.a:
|
||||
$(HOSTAR) rcs $@
|
||||
|
||||
libm.a:
|
||||
$(HOSTAR) rcs $@
|
||||
|
||||
libstdc++.a:
|
||||
libpthread.a:
|
||||
$(HOSTAR) rcs $@
|
||||
|
||||
start.o: $(CPUDIR)/start.o
|
||||
ln -f $< $@
|
||||
libstdc++.a:
|
||||
$(HOSTAR) rcs $@
|
||||
|
||||
crt1.o: $(CPUDIR)/crt1.o
|
||||
ln -f $< $@
|
||||
|
@ -275,63 +278,66 @@ crtn.o: $(CPUDIR)/crtn.o
|
|||
ln -f $< $@
|
||||
|
||||
# header preprocessing
|
||||
$(OBJS) $(SORTIXOBJS): $(HEADERS)
|
||||
|
||||
$(HEADERDIRS):
|
||||
mkdir -p $@
|
||||
|
||||
preproc/%: include/% $(HEADERDIRS)
|
||||
preproc/%: include/%
|
||||
mxmpp -I decl $< -o $@
|
||||
|
||||
$(HEADERS): | $(HEADERDIRS)
|
||||
|
||||
headers: $(HEADERDIRS) $(HEADERS)
|
||||
|
||||
# standard library
|
||||
%.o: %.c headers
|
||||
$(HOSTCC) -c $< -o $@ $(CPPFLAGS) $(CFLAGS)
|
||||
%.o: %.c
|
||||
$(HOSTCC) -c $< -o $@ $(CPPFLAGS) $(FLAGS) $(CFLAGS)
|
||||
|
||||
%.o: %.cpp headers
|
||||
$(HOSTCXX) -c $< -o $@ $(CPPFLAGS) $(CXXFLAGS)
|
||||
%.o: %.cpp
|
||||
$(HOSTCXX) -c $< -o $@ $(CPPFLAGS) $(FLAGS) $(CXXFLAGS)
|
||||
|
||||
%.o: %.s
|
||||
$(HOSTAS) $(ASFLAGS) $< -o $@
|
||||
|
||||
# libc-sortix
|
||||
sortix:
|
||||
mkdir -p sortix
|
||||
sortix/%.o: %.c
|
||||
$(HOSTCC) -c $< -o $@ $(SORTIXCPPFLAGS) $(SORTIXFLAGS) $(SORTIXCFLAGS)
|
||||
|
||||
sortix/%.o: %.c $(HEADERS) sortix
|
||||
$(HOSTCC) -c $< -o $@ $(CPPFLAGS) $(SORTIXCPPFLAGS) $(CFLAGS)
|
||||
|
||||
sortix/%.o: %.cpp $(HEADERS) sortix
|
||||
$(HOSTCXX) -c $< -o $@ $(CPPFLAGS) $(SORTIXCPPFLAGS) $(CXXFLAGS)
|
||||
sortix/%.o: %.cpp
|
||||
$(HOSTCXX) -c $< -o $@ $(SORTIXCPPFLAGS) $(SORTIXFLAGS) $(SORTIXCXXFLAGS)
|
||||
|
||||
clean:
|
||||
rm -f *.o sortix/*.o c/*.o x86/*.o x64/*.o *.a *.so
|
||||
rm -f $(OBJS)
|
||||
rm -rf sortix $(HEADERDIRS)
|
||||
rm -f $(wildcard *.o) $(wildcard */*.o) $(wildcard */*/*.o) $(wildcard *.a)
|
||||
rm -rf $(HEADERDIRS)
|
||||
|
||||
# Installation into sysroot
|
||||
install: install-headers install-libs
|
||||
install: install-headers install-libs install-libs-kernel
|
||||
|
||||
install-include-dirs: headers
|
||||
mkdir -p $(INSTALLINCLUDEDIR)
|
||||
DIRS=$$(echo $(UNPROCHEADERDIRS) | \
|
||||
tr ' ' '\n' | \
|
||||
sed 's/include\/*//'); \
|
||||
for D in $$DIRS; do \
|
||||
mkdir -p $(INSTALLINCLUDEDIR)/$$D || exit $?; \
|
||||
done
|
||||
$(INSTALLHEADERDIRS) $(DESTDIR)$(LIBDIR):
|
||||
mkdir -p $@
|
||||
|
||||
install-headers: install-include-dirs headers
|
||||
for SRC in $(HEADERS); do \
|
||||
DEST=`echo $$SRC | sed 's/preproc\///'`; \
|
||||
cp -P $$SRC $(INSTALLINCLUDEDIR)/$$DEST || exit $?; \
|
||||
done
|
||||
$(DESTDIR)$(INCLUDEDIR)/%: preproc/%
|
||||
cp $< $@
|
||||
|
||||
install-lib-dirs:
|
||||
mkdir -p $(INSTALLLIBDIR)
|
||||
mkdir -p $(INSTALLLIBDIR)/$(HOST)
|
||||
$(INSTALLHEADERS): | $(INSTALLHEADERDIRS)
|
||||
|
||||
install-libs: install-lib-dirs
|
||||
for F in $(BINS); do \
|
||||
cp -P $$F $(INSTALLLIBDIR)/$(HOST) || exit $?; \
|
||||
done
|
||||
$(DESTDIR)$(LIBDIR)/%: %
|
||||
cp -P $< $@
|
||||
|
||||
$(INSTALLLIBS): | $(DESTDIR)$(LIBDIR)
|
||||
|
||||
$(INSTALLLIBSKERNEL): | $(DESTDIR)$(LIBDIR)
|
||||
|
||||
$(DESTDIR)$(INCLUDEDIR) $(DESTDIR)$(LIBDIR) $(INSTALLHEADERS): FORCE
|
||||
|
||||
install-include-dirs: $(INSTALLHEADERDIRS)
|
||||
|
||||
install-headers: $(INSTALLHEADERDIRS) $(INSTALLHEADERS)
|
||||
|
||||
install-lib-dirs: $(DESTDIR)$(LIBDIR)
|
||||
|
||||
install-libs: $(INSTALLLIBS)
|
||||
|
||||
install-libs-kernel: $(INSTALLLIBSKERNEL)
|
||||
|
||||
|
|
|
@ -34,6 +34,11 @@
|
|||
#define __END_DECLS
|
||||
#endif
|
||||
|
||||
/* Sortix system components implicitly use the native API. */
|
||||
#if defined(LIBC_LIBRARY) || defined(SORTIX_KERNEL)
|
||||
#define _SORTIX_SOURCE 1
|
||||
#endif
|
||||
|
||||
/* By default, assume the source is compiled using the native API. */
|
||||
#if !defined(_SORTIX_SOURCE) && \
|
||||
!defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE) && \
|
||||
|
|
0
libc/sortix/.gitignore
vendored
Normal file
0
libc/sortix/.gitignore
vendored
Normal file
|
@ -23,12 +23,6 @@
|
|||
|
||||
*******************************************************************************/
|
||||
|
||||
/* NOTE: This is almost identical to what is in start.s. crt1.s is used when
|
||||
compiling with the real cross compiler, while start.s is used when
|
||||
using the older hacky way of building Sortix. Please try to keep these
|
||||
files alike by doing changes both places until we only build Sortix
|
||||
with real cross compilers. */
|
||||
|
||||
.section .text
|
||||
|
||||
.global _start
|
||||
|
|
|
@ -1,54 +0,0 @@
|
|||
/*******************************************************************************
|
||||
|
||||
Copyright(C) Jonas 'Sortie' Termansen 2011.
|
||||
|
||||
This file is part of the Sortix C Library.
|
||||
|
||||
The Sortix C Library is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
The Sortix C Library is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with the Sortix C Library. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
start.s
|
||||
A stub for linking to the C runtime on Sortix.
|
||||
|
||||
*******************************************************************************/
|
||||
|
||||
/* NOTE: This is almost identical to what is in crt1.s. crt1.s is used when
|
||||
compiling with the real cross compiler, while start.s is used when
|
||||
using the older hacky way of building Sortix. Please try to keep these
|
||||
files alike by doing changes both places until we only build Sortix
|
||||
with real cross compilers. */
|
||||
|
||||
.globl _start
|
||||
|
||||
.section .text
|
||||
|
||||
.type _start, @function
|
||||
_start:
|
||||
|
||||
movq %rcx, environ # envp
|
||||
|
||||
pushq %rsi
|
||||
pushq %rdi
|
||||
|
||||
call initialize_standard_library
|
||||
|
||||
popq %rdi
|
||||
popq %rsi
|
||||
|
||||
# Run main
|
||||
call main
|
||||
|
||||
# Terminate the process with main's exit code.
|
||||
movl %eax, %edi
|
||||
call exit
|
||||
|
|
@ -23,12 +23,6 @@
|
|||
|
||||
*******************************************************************************/
|
||||
|
||||
/* NOTE: This is almost identical to what is in start.s. crt1.s is used when
|
||||
compiling with the real cross compiler, while start.s is used when
|
||||
using the older hacky way of building Sortix. Please try to keep these
|
||||
files alike by doing changes both places until we only build Sortix
|
||||
with real cross compilers. */
|
||||
|
||||
.section .text
|
||||
|
||||
.global _start
|
||||
|
|
|
@ -1,52 +0,0 @@
|
|||
/*******************************************************************************
|
||||
|
||||
Copyright(C) Jonas 'Sortie' Termansen 2011.
|
||||
|
||||
This file is part of the Sortix C Library.
|
||||
|
||||
The Sortix C Library is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
The Sortix C Library is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with the Sortix C Library. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
start.s
|
||||
A stub for linking to the C runtime on Sortix.
|
||||
|
||||
*******************************************************************************/
|
||||
|
||||
/* NOTE: This is almost identical to what is in crt1.s. crt1.s is used when
|
||||
compiling with the real cross compiler, while start.s is used when
|
||||
using the older hacky way of building Sortix. Please try to keep these
|
||||
files alike by doing changes both places until we only build Sortix
|
||||
with real cross compilers. */
|
||||
|
||||
.globl _start
|
||||
|
||||
.section .text
|
||||
|
||||
.type _start, @function
|
||||
_start:
|
||||
|
||||
movl %ecx, environ # envp
|
||||
|
||||
# Arguments for main
|
||||
push %ebx # argv
|
||||
push %eax # argc
|
||||
|
||||
call initialize_standard_library
|
||||
|
||||
# Run main
|
||||
call main
|
||||
|
||||
# Terminate the process with main's exit code.
|
||||
push %eax
|
||||
call exit
|
||||
|
|
@ -1,18 +1,39 @@
|
|||
include ../compiler.mak
|
||||
include ../version.mak
|
||||
include ../dirs.mak
|
||||
|
||||
ifndef OPTLEVEL
|
||||
OPTLEVEL=-g -O2
|
||||
endif
|
||||
|
||||
ifndef CXXFLAGS
|
||||
CXXFLAGS:=$(OPTLEVEL)
|
||||
endif
|
||||
|
||||
SORTIXKERNEL=../sortix
|
||||
LIBC=../libc
|
||||
|
||||
CPPFLAGS=-I../sortix/include
|
||||
CXXFLAGS=-g -Wall -Wextra
|
||||
CPPFLAGS:=$(CPPFLAGS) -I$(SORTIXKERNEL)/include
|
||||
CXXFLAGS:=$(CXXFLAGS) -Wall -Wextra -fno-exceptions -fno-rtti
|
||||
|
||||
BINARIES=mkinitrd initrdfs
|
||||
|
||||
INSTALLBINARIES:=$(addprefix $(DESTDIR)$(BINDIR)/,$(BINARIES))
|
||||
|
||||
all: $(BINARIES)
|
||||
|
||||
.PHONY: all install uninstall clean
|
||||
|
||||
%: %.cpp crc32.cpp rules.cpp $(LIBC)/ioleast.cpp
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $< crc32.cpp rules.cpp $(LIBC)/ioleast.cpp -o $@
|
||||
$(CXX) -std=gnu++11 $(CPPFLAGS) $(CXXFLAGS) $< crc32.cpp rules.cpp $(LIBC)/ioleast.cpp -o $@
|
||||
|
||||
clean:
|
||||
rm -f $(BINARIES)
|
||||
|
||||
install:
|
||||
install: all
|
||||
mkdir -p $(DESTDIR)$(BINDIR)
|
||||
install $(BINARIES) $(DESTDIR)$(BINDIR)
|
||||
|
||||
uninstall:
|
||||
rm -f $(INSTALLBINARIES)
|
||||
|
||||
|
|
1
mxmpp/.gitignore
vendored
Normal file
1
mxmpp/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
mxmpp
|
35
mxmpp/Makefile
Normal file
35
mxmpp/Makefile
Normal file
|
@ -0,0 +1,35 @@
|
|||
include ../compiler.mak
|
||||
include ../version.mak
|
||||
include ../dirs.mak
|
||||
|
||||
ifndef OPTLEVEL
|
||||
OPTLEVEL=-g -O2
|
||||
endif
|
||||
|
||||
ifndef CXXFLAGS
|
||||
CXXFLAGS:=$(OPTLEVEL)
|
||||
endif
|
||||
|
||||
CXXFLAGS:=$(CXXFLAGS) -Wall -Wextra -fno-exceptions -fno-rtti
|
||||
|
||||
BINARIES=mxmpp
|
||||
|
||||
INSTALLBINARIES:=$(addprefix $(DESTDIR)$(BINDIR)/,$(BINARIES))
|
||||
|
||||
all: $(BINARIES)
|
||||
|
||||
.PHONY: all install uninstall clean
|
||||
|
||||
%: %.cpp
|
||||
$(CXX) -std=gnu++11 $(CPPFLAGS) $(CXXFLAGS) $< -o $@
|
||||
|
||||
clean:
|
||||
rm -f $(BINARIES)
|
||||
|
||||
install: all
|
||||
mkdir -p $(DESTDIR)$(BINDIR)
|
||||
install $(BINARIES) $(DESTDIR)$(BINDIR)
|
||||
|
||||
uninstall:
|
||||
rm -f $(INSTALLBINARIES)
|
||||
|
|
@ -1,69 +0,0 @@
|
|||
subdirs = @subdirs@
|
||||
top_srcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
bindir = $(exec_prefix)/bin
|
||||
infodir = $(prefix)/info
|
||||
libdir = $(prefix)/lib/gnudl
|
||||
mandir = $(prefix)/man/man1
|
||||
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PACKAGE_TARNAME = @PACKAGE_NAME@-@PACKAGE_VERSION@
|
||||
CC=@CC@
|
||||
CXX=@CXX@
|
||||
CPPFLAGS=@CPPFLAGS@
|
||||
CXXFLAGS=@CXXFLAGS@ -Wall
|
||||
LDFLAGS=@LDFLAGS@ $(LIBS)
|
||||
LIBS = @LIBS@
|
||||
INSTALL = @INSTALL@
|
||||
EXEEXT = @EXEEXT@
|
||||
HOST = @HOST@
|
||||
BINARY=mxmpp$(EXEEXT)
|
||||
|
||||
DISTDIR:=$(PACKAGE_TARNAME)
|
||||
DISTFILES=config.guess config.h.in config.sub configure configure.ac COPYING README install-sh Makefile.in mxmpp.cpp
|
||||
|
||||
all: $(BINARY)
|
||||
|
||||
$(BINARY): mxmpp.cpp
|
||||
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -o $@ mxmpp.cpp $(LDFLAGS) $(TARGET_ARCH)
|
||||
|
||||
clean:
|
||||
$(RM) $(BINARY)
|
||||
|
||||
distclean: clean
|
||||
$(RM) Makefile config.h config.status config.cache config.log
|
||||
$(RM) -r $(BUILDDIR) $(DISTDIR)
|
||||
|
||||
install: all
|
||||
mkdir -p $(bindir)
|
||||
$(INSTALL) $(BINARY) $(bindir)
|
||||
|
||||
dist: dist-gzip
|
||||
|
||||
dist-all: dist-gzip dist-lzma dist-bzip2 dist-xz
|
||||
|
||||
dist-gzip: $(DISTDIR)
|
||||
$(RM) $(PACKAGE_TARNAME).tar.gz
|
||||
tar -cf - $(DISTDIR) | gzip -9 > $(PACKAGE_TARNAME).tar.gz
|
||||
|
||||
dist-lzma: $(DISTDIR)
|
||||
$(RM) $(PACKAGE_TARNAME).tar.lzma
|
||||
tar -cf - $(DISTDIR) | lzma -9 > $(PACKAGE_TARNAME).tar.lzma
|
||||
|
||||
dist-bzip2: $(DISTDIR)
|
||||
$(RM) $(PACKAGE_TARNAME).tar.bz2
|
||||
tar -cf - $(DISTDIR) | bzip2 -9 > $(PACKAGE_TARNAME).tar.bz2
|
||||
|
||||
dist-xz: $(DISTDIR)
|
||||
$(RM) $(PACKAGE_TARNAME).tar.xz
|
||||
tar -cf - $(DISTDIR) | xz -c > $(PACKAGE_TARNAME).tar.xz
|
||||
|
||||
$(DISTDIR): FORCE
|
||||
mkdir -p $(DISTDIR)
|
||||
cp -rv $(DISTFILES) $(DISTDIR)
|
||||
|
||||
FORCE:
|
||||
|
1502
mxmpp/config.guess
vendored
1502
mxmpp/config.guess
vendored
File diff suppressed because it is too large
Load diff
|
@ -1,152 +0,0 @@
|
|||
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||
|
||||
/* this is an AmigaOS4 platform */
|
||||
#undef AMIGAOS4_HOST
|
||||
|
||||
/* this is an Android platform */
|
||||
#undef ANDROID_HOST
|
||||
|
||||
/* this is a Darwin platform */
|
||||
#undef DARWIN_HOST
|
||||
|
||||
/* this is a FreeBSD platform */
|
||||
#undef FREEBSD_HOST
|
||||
|
||||
/* this is a GNU platform */
|
||||
#undef GNU_HOST
|
||||
|
||||
/* this is a Haiku platform */
|
||||
#undef HAIKU_HOST
|
||||
|
||||
/* Define to 1 if you have the `close' function. */
|
||||
#undef HAVE_CLOSE
|
||||
|
||||
/* Define to 1 if you have the <fcntl.h> header file. */
|
||||
#undef HAVE_FCNTL_H
|
||||
|
||||
/* Define to 1 if you have the `fprintf' function. */
|
||||
#undef HAVE_FPRINTF
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#undef HAVE_INTTYPES_H
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#undef HAVE_MEMORY_H
|
||||
|
||||
/* Define to 1 if you have the `open' function. */
|
||||
#undef HAVE_OPEN
|
||||
|
||||
/* Define to 1 if you have the `perror' function. */
|
||||
#undef HAVE_PERROR
|
||||
|
||||
/* Define to 1 if you have the `printf' function. */
|
||||
#undef HAVE_PRINTF
|
||||
|
||||
/* Define to 1 if you have the `sscanf' function. */
|
||||
#undef HAVE_SSCANF
|
||||
|
||||
/* Define to 1 if stdbool.h conforms to C99. */
|
||||
#undef HAVE_STDBOOL_H
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#undef HAVE_STDINT_H
|
||||
|
||||
/* Define to 1 if you have the <stdio.h> header file. */
|
||||
#undef HAVE_STDIO_H
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#undef HAVE_STDLIB_H
|
||||
|
||||
/* Define to 1 if you have the `strcmp' function. */
|
||||
#undef HAVE_STRCMP
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#undef HAVE_STRINGS_H
|
||||
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#undef HAVE_STRING_H
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#undef HAVE_SYS_STAT_H
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#undef HAVE_SYS_TYPES_H
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#undef HAVE_UNISTD_H
|
||||
|
||||
/* Define to 1 if you have the `write' function. */
|
||||
#undef HAVE_WRITE
|
||||
|
||||
/* Define to 1 if the system has the type `_Bool'. */
|
||||
#undef HAVE__BOOL
|
||||
|
||||
/* this is a Linux platform */
|
||||
#undef LINUX_HOST
|
||||
|
||||
/* this is a NetBSD platform */
|
||||
#undef NETBSD_HOST
|
||||
|
||||
/* this is an OpenBSD platform */
|
||||
#undef OPENBSD_HOST
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#undef PACKAGE_BUGREPORT
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#undef PACKAGE_NAME
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#undef PACKAGE_STRING
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#undef PACKAGE_TARNAME
|
||||
|
||||
/* Define to the home page for this package. */
|
||||
#undef PACKAGE_URL
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#undef PACKAGE_VERSION
|
||||
|
||||
/* this is a Solaris platform */
|
||||
#undef SOLARIS_HOST
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* this is a Win32 platform */
|
||||
#undef WIN32_HOST
|
||||
|
||||
/* this is a WINCE6 platform */
|
||||
#undef WINCE6_HOST
|
||||
|
||||
/* this is a WINCE platform */
|
||||
#undef WINCE_HOST
|
||||
|
||||
/* this is a 64 platform */
|
||||
#undef WORDSIZE
|
||||
|
||||
/* Define for Solaris 2.5.1 so the uint8_t typedef from <sys/synch.h>,
|
||||
<pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
|
||||
#define below would cause a syntax error. */
|
||||
#undef _UINT8_T
|
||||
|
||||
/* this is a 64 bit powerpc */
|
||||
#undef __powerpc64__
|
||||
|
||||
/* Define to `__inline__' or `__inline' if that's what the C compiler
|
||||
calls it, or to nothing if 'inline' is not supported under any name. */
|
||||
#ifndef __cplusplus
|
||||
#undef inline
|
||||
#endif
|
||||
|
||||
/* Define to the type of a signed integer type of width exactly 16 bits if
|
||||
such a type exists and the standard includes do not define it. */
|
||||
#undef int16_t
|
||||
|
||||
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
||||
#undef size_t
|
||||
|
||||
/* Define to the type of an unsigned integer type of width exactly 8 bits if
|
||||
such a type exists and the standard includes do not define it. */
|
||||
#undef uint8_t
|
1714
mxmpp/config.sub
vendored
1714
mxmpp/config.sub
vendored
File diff suppressed because it is too large
Load diff
|
@ -1,110 +0,0 @@
|
|||
# -*- Autoconf -*-
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_PREREQ([2.67])
|
||||
AC_INIT([mxmpp], [0.1], [sortie@maxsi.org])
|
||||
AC_CONFIG_SRCDIR([mxmpp.cpp])
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
|
||||
AC_CANONICAL_BUILD
|
||||
AC_CANONICAL_HOST
|
||||
AC_CANONICAL_SYSTEM
|
||||
|
||||
# Checks for programs.
|
||||
AC_PROG_CXX
|
||||
AC_PROG_CC
|
||||
AC_MINGW32
|
||||
AC_EXEEXT
|
||||
AC_PROG_INSTALL
|
||||
|
||||
dnl Some things you can only do by looking at the platform name.
|
||||
case "${host}" in
|
||||
powerpc-apple-darwin*)
|
||||
AC_DEFINE([__powerpc64__], [1], [this is a 64 bit powerpc])
|
||||
darwin=yes
|
||||
AC_DEFINE([DARWIN_HOST], [1], [this is a Darwin platform])
|
||||
;;
|
||||
*-apple-darwin*)
|
||||
darwin=yes
|
||||
AC_DEFINE([DARWIN_HOST], [1], [this is a Darwin platform])
|
||||
;;
|
||||
dnl Unfortunately, all BSD distributions are not identical, so
|
||||
dnl as tacky as it is to look for the distribution name, we don't
|
||||
dnl have much choice. The use of these should be avoid as much as possible.
|
||||
*-openbsd*)
|
||||
bsd=yes
|
||||
openbsd=yes
|
||||
AC_DEFINE([OPENBSD_HOST], [1], [this is an OpenBSD platform])
|
||||
;;
|
||||
*-freebsd* | *-kfreebsd*)
|
||||
bsd=yes
|
||||
freebsd=yes
|
||||
AC_DEFINE([FREEBSD_HOST], [1], [this is a FreeBSD platform])
|
||||
;;
|
||||
*-netbsd*)
|
||||
bsd=yes
|
||||
netbsd=yes
|
||||
AC_DEFINE([NETBSD_HOST], [1], [this is a NetBSD platform])
|
||||
;;
|
||||
*-*solaris*)
|
||||
solaris=yes
|
||||
AC_DEFINE([SOLARIS_HOST], [1], [this is a Solaris platform])
|
||||
;;
|
||||
*-*linux*)
|
||||
linux=yes
|
||||
AC_DEFINE([LINUX_HOST], [1], [this is a Linux platform])
|
||||
;;
|
||||
*-cygwin* | *-mingw* | *-pw32*)
|
||||
windows=yes
|
||||
AC_DEFINE([WIN32_HOST], [1], [this is a Win32 platform])
|
||||
;;
|
||||
*64-*-*bsd*)
|
||||
bsd_os=bsd
|
||||
AC_DEFINE([WORDSIZE], [64], [this is a 64 platform])
|
||||
;;
|
||||
*-*amigaos*)
|
||||
amigaos4=yes
|
||||
AC_DEFINE([AMIGAOS4_HOST], [1], [this is an AmigaOS4 platform])
|
||||
;;
|
||||
*-*haiku*)
|
||||
haiku=yes
|
||||
AC_DEFINE([HAIKU_HOST], [1], [this is a Haiku platform])
|
||||
;;
|
||||
*-gnu*)
|
||||
gnu=yes
|
||||
AC_DEFINE([GNU_HOST], [1], [this is a GNU platform])
|
||||
;;
|
||||
*-*wince)
|
||||
wince=yes
|
||||
AC_DEFINE([WINCE_HOST], [1], [this is a WINCE platform])
|
||||
;;
|
||||
*-*winmo)
|
||||
wince=yes
|
||||
AC_DEFINE([WINCE_HOST], [1], [this is a WINCE platform])
|
||||
AC_DEFINE([WINCE6_HOST], [1], [this is a WINCE6 platform])
|
||||
;;
|
||||
*-android*)
|
||||
android=yes
|
||||
AC_DEFINE([ANDROID_HOST], [1], [this is an Android platform])
|
||||
;;
|
||||
esac
|
||||
|
||||
HOST="$host"
|
||||
AC_SUBST([HOST])
|
||||
|
||||
# Checks for header files.
|
||||
AC_CHECK_HEADERS([fcntl.h unistd.h sys/types.h sys/stat.h])
|
||||
AC_CHECK_HEADERS([stdint.h stdio.h string.h])
|
||||
|
||||
# Checks for typedefs, structures, and compiler characteristics.
|
||||
AC_HEADER_STDBOOL
|
||||
AC_C_INLINE
|
||||
AC_TYPE_SIZE_T
|
||||
AC_TYPE_UINT8_T
|
||||
AC_TYPE_INT16_T
|
||||
|
||||
# Checks for library functions.
|
||||
AC_CHECK_FUNCS([open write close fprintf strcmp printf sscanf perror])
|
||||
|
||||
AC_CONFIG_FILES([Makefile])
|
||||
AC_OUTPUT
|
322
mxmpp/install-sh
322
mxmpp/install-sh
|
@ -1,322 +0,0 @@
|
|||
#!/bin/sh
|
||||
# install - install a program, script, or datafile
|
||||
|
||||
scriptversion=2004-09-10.20
|
||||
|
||||
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||
# following copyright and license.
|
||||
#
|
||||
# Copyright (C) 1994 X Consortium
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
|
||||
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
# Except as contained in this notice, the name of the X Consortium shall not
|
||||
# be used in advertising or otherwise to promote the sale, use or other deal-
|
||||
# ings in this Software without prior written authorization from the X Consor-
|
||||
# tium.
|
||||
#
|
||||
#
|
||||
# FSF changes to this file are in the public domain.
|
||||
#
|
||||
# Calling this script install-sh is preferred over install.sh, to prevent
|
||||
# `make' implicit rules from creating a file called install from it
|
||||
# when there is no Makefile.
|
||||
#
|
||||
# This script is compatible with the BSD install script, but was written
|
||||
# from scratch. It can only install one file at a time, a restriction
|
||||
# shared with many OS's install programs.
|
||||
|
||||
# set DOITPROG to echo to test this script
|
||||
|
||||
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||
doit="${DOITPROG-}"
|
||||
|
||||
# put in absolute paths if you don't have them in your path; or use env. vars.
|
||||
|
||||
mvprog="${MVPROG-mv}"
|
||||
cpprog="${CPPROG-cp}"
|
||||
chmodprog="${CHMODPROG-chmod}"
|
||||
chownprog="${CHOWNPROG-chown}"
|
||||
chgrpprog="${CHGRPPROG-chgrp}"
|
||||
stripprog="${STRIPPROG-strip}"
|
||||
rmprog="${RMPROG-rm}"
|
||||
mkdirprog="${MKDIRPROG-mkdir}"
|
||||
|
||||
chmodcmd="$chmodprog 0755"
|
||||
chowncmd=
|
||||
chgrpcmd=
|
||||
stripcmd=
|
||||
rmcmd="$rmprog -f"
|
||||
mvcmd="$mvprog"
|
||||
src=
|
||||
dst=
|
||||
dir_arg=
|
||||
dstarg=
|
||||
no_target_directory=
|
||||
|
||||
usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
|
||||
or: $0 [OPTION]... SRCFILES... DIRECTORY
|
||||
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
|
||||
or: $0 [OPTION]... -d DIRECTORIES...
|
||||
|
||||
In the 1st form, copy SRCFILE to DSTFILE.
|
||||
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
|
||||
In the 4th, create DIRECTORIES.
|
||||
|
||||
Options:
|
||||
-c (ignored)
|
||||
-d create directories instead of installing files.
|
||||
-g GROUP $chgrpprog installed files to GROUP.
|
||||
-m MODE $chmodprog installed files to MODE.
|
||||
-o USER $chownprog installed files to USER.
|
||||
-s $stripprog installed files.
|
||||
-t DIRECTORY install into DIRECTORY.
|
||||
-T report an error if DSTFILE is a directory.
|
||||
--help display this help and exit.
|
||||
--version display version info and exit.
|
||||
|
||||
Environment variables override the default commands:
|
||||
CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
|
||||
"
|
||||
|
||||
while test -n "$1"; do
|
||||
case $1 in
|
||||
-c) shift
|
||||
continue;;
|
||||
|
||||
-d) dir_arg=true
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-g) chgrpcmd="$chgrpprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
--help) echo "$usage"; exit 0;;
|
||||
|
||||
-m) chmodcmd="$chmodprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-o) chowncmd="$chownprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-s) stripcmd=$stripprog
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-t) dstarg=$2
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-T) no_target_directory=true
|
||||
shift
|
||||
continue;;
|
||||
|
||||
--version) echo "$0 $scriptversion"; exit 0;;
|
||||
|
||||
*) # When -d is used, all remaining arguments are directories to create.
|
||||
# When -t is used, the destination is already specified.
|
||||
test -n "$dir_arg$dstarg" && break
|
||||
# Otherwise, the last argument is the destination. Remove it from $@.
|
||||
for arg
|
||||
do
|
||||
if test -n "$dstarg"; then
|
||||
# $@ is not empty: it contains at least $arg.
|
||||
set fnord "$@" "$dstarg"
|
||||
shift # fnord
|
||||
fi
|
||||
shift # arg
|
||||
dstarg=$arg
|
||||
done
|
||||
break;;
|
||||
esac
|
||||
done
|
||||
|
||||
if test -z "$1"; then
|
||||
if test -z "$dir_arg"; then
|
||||
echo "$0: no input file specified." >&2
|
||||
exit 1
|
||||
fi
|
||||
# It's OK to call `install-sh -d' without argument.
|
||||
# This can happen when creating conditional directories.
|
||||
exit 0
|
||||
fi
|
||||
|
||||
for src
|
||||
do
|
||||
# Protect names starting with `-'.
|
||||
case $src in
|
||||
-*) src=./$src ;;
|
||||
esac
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
dst=$src
|
||||
src=
|
||||
|
||||
if test -d "$dst"; then
|
||||
mkdircmd=:
|
||||
chmodcmd=
|
||||
else
|
||||
mkdircmd=$mkdirprog
|
||||
fi
|
||||
else
|
||||
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
|
||||
# might cause directories to be created, which would be especially bad
|
||||
# if $src (and thus $dsttmp) contains '*'.
|
||||
if test ! -f "$src" && test ! -d "$src"; then
|
||||
echo "$0: $src does not exist." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test -z "$dstarg"; then
|
||||
echo "$0: no destination specified." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
dst=$dstarg
|
||||
# Protect names starting with `-'.
|
||||
case $dst in
|
||||
-*) dst=./$dst ;;
|
||||
esac
|
||||
|
||||
# If destination is a directory, append the input filename; won't work
|
||||
# if double slashes aren't ignored.
|
||||
if test -d "$dst"; then
|
||||
if test -n "$no_target_directory"; then
|
||||
echo "$0: $dstarg: Is a directory" >&2
|
||||
exit 1
|
||||
fi
|
||||
dst=$dst/`basename "$src"`
|
||||
fi
|
||||
fi
|
||||
|
||||
# This sed command emulates the dirname command.
|
||||
dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
|
||||
|
||||
# Make sure that the destination directory exists.
|
||||
|
||||
# Skip lots of stat calls in the usual case.
|
||||
if test ! -d "$dstdir"; then
|
||||
defaultIFS='
|
||||
'
|
||||
IFS="${IFS-$defaultIFS}"
|
||||
|
||||
oIFS=$IFS
|
||||
# Some sh's can't handle IFS=/ for some reason.
|
||||
IFS='%'
|
||||
set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
|
||||
IFS=$oIFS
|
||||
|
||||
pathcomp=
|
||||
|
||||
while test $# -ne 0 ; do
|
||||
pathcomp=$pathcomp$1
|
||||
shift
|
||||
if test ! -d "$pathcomp"; then
|
||||
$mkdirprog "$pathcomp"
|
||||
# mkdir can fail with a `File exist' error in case several
|
||||
# install-sh are creating the directory concurrently. This
|
||||
# is OK.
|
||||
test -d "$pathcomp" || exit
|
||||
fi
|
||||
pathcomp=$pathcomp/
|
||||
done
|
||||
fi
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
$doit $mkdircmd "$dst" \
|
||||
&& { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
|
||||
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
|
||||
&& { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
|
||||
&& { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
|
||||
|
||||
else
|
||||
dstfile=`basename "$dst"`
|
||||
|
||||
# Make a couple of temp file names in the proper directory.
|
||||
dsttmp=$dstdir/_inst.$$_
|
||||
rmtmp=$dstdir/_rm.$$_
|
||||
|
||||
# Trap to clean up those temp files at exit.
|
||||
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
|
||||
trap '(exit $?); exit' 1 2 13 15
|
||||
|
||||
# Copy the file name to the temp name.
|
||||
$doit $cpprog "$src" "$dsttmp" &&
|
||||
|
||||
# and set any options; do chmod last to preserve setuid bits.
|
||||
#
|
||||
# If any of these fail, we abort the whole thing. If we want to
|
||||
# ignore errors from any of these, just make sure not to ignore
|
||||
# errors from the above "$doit $cpprog $src $dsttmp" command.
|
||||
#
|
||||
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
|
||||
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
|
||||
&& { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
|
||||
&& { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
{ $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
|
||||
|| {
|
||||
# The rename failed, perhaps because mv can't rename something else
|
||||
# to itself, or perhaps because mv is so ancient that it does not
|
||||
# support -f.
|
||||
|
||||
# Now remove or move aside any old file at destination location.
|
||||
# We try this two ways since rm can't unlink itself on some
|
||||
# systems and the destination file might be busy for other
|
||||
# reasons. In this case, the final cleanup might fail but the new
|
||||
# file should still install successfully.
|
||||
{
|
||||
if test -f "$dstdir/$dstfile"; then
|
||||
$doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
|
||||
|| $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
|
||||
|| {
|
||||
echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
|
||||
(exit 1); exit
|
||||
}
|
||||
else
|
||||
:
|
||||
fi
|
||||
} &&
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
$doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
|
||||
}
|
||||
}
|
||||
fi || { (exit 1); exit; }
|
||||
done
|
||||
|
||||
# The final little trick to "correctly" pass the exit status to the exit trap.
|
||||
{
|
||||
(exit 0); exit
|
||||
}
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-end: "$"
|
||||
# End:
|
|
@ -22,7 +22,6 @@
|
|||
|
||||
******************************************************************************/
|
||||
|
||||
#include "config.h"
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <fcntl.h>
|
||||
|
|
67
platform.mak
Normal file
67
platform.mak
Normal file
|
@ -0,0 +1,67 @@
|
|||
UNAME_OS:=$(shell uname -o)
|
||||
UNAME_PLATFORM:=$(shell uname -i)
|
||||
|
||||
# Detect the platform that the software is being built on.
|
||||
ifndef BUILD
|
||||
|
||||
# If the software is being built on Sortix-
|
||||
ifeq ($(UNAME_OS),Sortix)
|
||||
ifeq ($(MAKEFILE_NOT_MEANT_FOR_SORTIX), 1)
|
||||
makefile_not_meant_for_sortix:
|
||||
@echo This makefile isn\'t meant to work under Sortix
|
||||
@exit 1
|
||||
endif
|
||||
ifeq ($(UNAME_PLATFORM),i386)
|
||||
BUILD:=i486-sortix
|
||||
endif
|
||||
ifeq ($(UNAME_PLATFORM),x86_64)
|
||||
BUILD:=x86_64-sortix
|
||||
endif
|
||||
|
||||
# If the softwarte is not built on Sortix.
|
||||
else
|
||||
ifeq ($(MEANT_FOR_SORTIX), 1)
|
||||
makefile_meant_for_sortix:
|
||||
@echo This makefile isn\'t meant to work under $(UNAME_OS)
|
||||
@exit 1
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(UNAME_OS),GNU/Linux)
|
||||
ifeq ($(UNAME_PLATFORM),i386)
|
||||
BUILD:=i386-linux-gnu
|
||||
endif
|
||||
ifeq ($(UNAME_PLATFORM),x86_64)
|
||||
BUILD:=x86_64-linux-gnu
|
||||
endif
|
||||
endif
|
||||
|
||||
MFLAGS:=$(MFLAGS) BUILD=$(BUILD)
|
||||
|
||||
endif
|
||||
|
||||
# Determine the platform the software will run on.
|
||||
ifndef HOST
|
||||
HOST:=$(BUILD)
|
||||
MFLAGS:=$(MFLAGS) HOST=$(HOST)
|
||||
endif
|
||||
|
||||
# Determine the platform the software will target.
|
||||
ifndef TARGET
|
||||
TARGET:=$(HOST)
|
||||
MFLAGS:=$(MFLAGS) TARGET=$(TARGET)
|
||||
endif
|
||||
|
||||
BUILD_IS_SORTIX:=$(if $(shell echo $(BUILD) | grep sortix$),1,0)
|
||||
HOST_IS_SORTIX:=$(if $(shell echo $(HOST) | grep sortix$),1,0)
|
||||
TARGET_IS_SORTIX:=$(if $(shell echo $(TARGET) | grep sortix$),1,0)
|
||||
|
||||
# Hack to allow easy filtering in the initrd.
|
||||
ifeq ($(HOST),i486-sortix)
|
||||
OTHER_PLATFORMS=x86-64-sortix
|
||||
OTHER_PLATFORM_1=x86-64-sortix
|
||||
endif
|
||||
ifeq ($(HOST),x86_64-sortix)
|
||||
OTHER_PLATFORMS=i486-sortix
|
||||
OTHER_PLATFORM_1=i486-sortix
|
||||
endif
|
141
sortix/Makefile
141
sortix/Makefile
|
@ -1,25 +1,44 @@
|
|||
SOFTWARE_MEANT_FOR_SORTIX=1
|
||||
include ../compiler.mak
|
||||
include ../version.mak
|
||||
include ../dirs.mak
|
||||
|
||||
ifndef OPTLEVEL
|
||||
OPTLEVEL:=-O2
|
||||
# Default values in case the user doesn't override these variables.
|
||||
OPTLEVEL?=-g -O2
|
||||
CALLTRACE?=0
|
||||
DISKWRITE?=0
|
||||
ASLFAGS?=
|
||||
CPPFLAGS?=
|
||||
CXXFLAGS?=$(OPTLEVEL)
|
||||
|
||||
# Base compiler options and definitions.
|
||||
|
||||
CPPFLAGS:=$(CPPFLAGS) -I. -Iinclude -DSORTIX_KERNEL
|
||||
CXXFLAGS:=$(CXXFLAGS) -Wall -Wextra -ffreestanding -fbuiltin -std=gnu++11 \
|
||||
-fno-exceptions -fno-rtti
|
||||
|
||||
ifeq ($(PANIC_SHORT),1)
|
||||
CPPFLAGS:=$(CPPFLAGS) -DPANIC_SHORT
|
||||
endif
|
||||
CPPFLAGS:=$(CPPFLAGS) -DENABLE_DISKWRITE=$(DISKWRITE)
|
||||
CPPFLAGS:=$(CPPFLAGS) -DENABLE_CALLTRACE=$(CALLTRACE)
|
||||
ifdef VERSION
|
||||
CPPFLAGS:=$(CPPFLAGS) -DVERSIONSTR=\"$(VERSION)\"
|
||||
endif
|
||||
|
||||
# Architecture-dependent options and definitions.
|
||||
|
||||
BOOTOBJS:=
|
||||
|
||||
ifeq ($(CPU),x86)
|
||||
BUILDID=x86
|
||||
X86FAMILY=1
|
||||
CPUFLAGS=
|
||||
CPULDFLAGS=
|
||||
X86FAMILY:=1
|
||||
CPUOBJS:=$(CPU)/boot.o $(CPU)/base.o $(CPU)/x86.o
|
||||
endif
|
||||
|
||||
ifeq ($(CPU),x64)
|
||||
BUILDID=x64
|
||||
X86FAMILY=1
|
||||
CPUFLAGS=-ffreestanding -mno-red-zone
|
||||
CPULDFLAGS=
|
||||
CPUOBJS:=$(CPU)/base.o $(CPU)/x64.o
|
||||
X86FAMILY:=1
|
||||
CXXFLAGS:=$(CXXFLAGS) -mno-red-zone
|
||||
CPUOBJS:=$(CPU)/boot.o $(CPU)/base.o $(CPU)/x64.o
|
||||
endif
|
||||
|
||||
ifdef X86FAMILY
|
||||
|
@ -38,50 +57,19 @@ ifdef X86FAMILY
|
|||
x86-family/msr.o \
|
||||
x86-family/float.o \
|
||||
x86-family/x86-family.o
|
||||
CPUFLAGS:=$(CPUFLAGS) -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-3dnow
|
||||
# TODO: Are these -m flags even needed in the first place?
|
||||
CXXFLAGS:=$(CXXFLAGS) -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-3dnow
|
||||
endif
|
||||
|
||||
DIRS=. x64 x86 x86-family fs kb kb/layout
|
||||
# Object files that constitute the kernel.
|
||||
|
||||
DEFINES:=-DSORTIX_KERNEL -U_GNU_SOURCE
|
||||
ifeq ($(PANIC_SHORT),1)
|
||||
DEFINES:=$(DEFINES) -DPANIC_SHORT
|
||||
endif
|
||||
ifeq ($(DISKWRITE),1)
|
||||
DEFINES:=$(DEFINES) -DENABLE_DISKWRITE=1
|
||||
else
|
||||
DEFINES:=$(DEFINES) -DENABLE_DISKWRITE=0
|
||||
endif
|
||||
ifeq ($(CALLTRACE),1)
|
||||
DEFINES:=$(DEFINES) -DENABLE_CALLTRACE=1
|
||||
else
|
||||
DEFINES:=$(DEFINES) -DENABLE_CALLTRACE=0
|
||||
endif
|
||||
ifdef VERSION
|
||||
DEFINES:=$(DEFINES) -DVERSIONSTR=\"$(VERSION)\"
|
||||
endif
|
||||
|
||||
INCLUDES=-I. -Iinclude
|
||||
CPPFLAGS=$(INCLUDES) $(DEFINES)
|
||||
ifeq ($(DEBUG_KERNEL),1)
|
||||
FLAGSDEBUG=-g3
|
||||
else
|
||||
FLAGSDEBUG=$(OPTLEVEL)
|
||||
endif
|
||||
FLAGS=$(CPUFLAGS) -Wall -Wall -Wextra -nostdlib -nostartfiles \
|
||||
-nodefaultlibs -fno-stack-protector $(FLAGSDEBUG)
|
||||
CFLAGS=$(FLAGS)
|
||||
CXXFLAGS=$(FLAGS) -std=gnu++0x -fno-exceptions -fno-rtti
|
||||
ASFLAGS=
|
||||
|
||||
STATICLIBS=\
|
||||
LIBS=\
|
||||
-nostdlib \
|
||||
-lc-sortix \
|
||||
-lgcc \
|
||||
|
||||
HEADERDIRS:=$(shell find include -type d)
|
||||
HEADERS:=$(shell find include -type f)
|
||||
|
||||
OBJS=$(CPUOBJS) \
|
||||
OBJS=\
|
||||
$(CPUOBJS) \
|
||||
ata.o \
|
||||
bga.o \
|
||||
calltrace.o \
|
||||
|
@ -143,29 +131,35 @@ ALLOBJS=\
|
|||
$(OBJS) \
|
||||
end.o
|
||||
|
||||
all: sortix.bin
|
||||
# Rules and recipes for building the kernel.
|
||||
|
||||
.PHONY: all headers clean install install-include-dirs install-headers
|
||||
all: kernel
|
||||
|
||||
kernel: sortix.bin
|
||||
|
||||
.PHONY: all kernel headers clean install install-include-dirs install-headers \
|
||||
install-kernel install-kernel-binary
|
||||
|
||||
headers:
|
||||
|
||||
# x64 compilation
|
||||
x64/boot.o: x64/boot.s
|
||||
$(HOSTAS) -64 $< -o $@
|
||||
ifeq ($(CPU),x64)
|
||||
|
||||
sortix-x64.tmp: $(ALLOBJS) x64/boot.o
|
||||
$(HOSTCXX) -nodefaultlibs -nostartfiles -Wl,-N -Wl,-melf_x86_64_sortix -Wl,-Ttext -Wl,100000 -Wl,-z -Wl,max-page-size=0x1000 -o sortix-x64-internal.out x64/boot.o $(OBJS) $(STATICLIBS) end.o
|
||||
$(HOSTOBJCOPY) sortix-x64-internal.out -O elf32-i386 sortix-x64.tmp
|
||||
sortix-x86_64.bin: $(ALLOBJS)
|
||||
$(HOSTCXX) $(CXXFLAGS) -Wl,-Ttext -Wl,100000 -Wl,-z -Wl,max-page-size=0x1000 $(OBJS) $(LIBS) end.o -o $@
|
||||
|
||||
sortix.bin: sortix-x86_64.bin
|
||||
$(HOSTOBJCOPY) $< -O elf32-i386-sortix $@
|
||||
|
||||
endif
|
||||
|
||||
# x86 compilation
|
||||
ifeq ($(CPU),x86)
|
||||
|
||||
sortix-x86.tmp: $(ALLOBJS)
|
||||
$(HOSTCXX) -nodefaultlibs -nostartfiles -Wl,-melf_i386_sortix -Wl,-Ttext -Wl,100000 -o $@ $(OBJS) $(STATICLIBS) end.o
|
||||
sortix.bin: $(ALLOBJS)
|
||||
$(HOSTCXX) $(CXXFLAGS) -Wl,-Ttext -Wl,100000 $(OBJS) $(LIBS) end.o -o $@
|
||||
|
||||
# general rules
|
||||
|
||||
sortix.bin: sortix-$(BUILDID).tmp
|
||||
cp -vu $< $@
|
||||
endif
|
||||
|
||||
%.o: %.cpp
|
||||
$(HOSTCXX) -c $< -o $@ $(CPPFLAGS) $(CXXFLAGS)
|
||||
|
@ -174,29 +168,22 @@ sortix.bin: sortix-$(BUILDID).tmp
|
|||
$(HOSTAS) $< -o $@ $(ASFLAGS)
|
||||
|
||||
clean:
|
||||
for D in $(DIRS); do rm -f $$D/*.o $$D/*.bin $$D/*.out $$D/*.tmp; done
|
||||
rm -f $(ALLOBJS) sortix.bin
|
||||
rm -f $(wildcard *.bin) $(wildcard *.out) $(wildcard *.tmp)
|
||||
rm -f $(wildcard *.o) $(wildcard */*.o) $(wildcard */*/*.o)
|
||||
|
||||
# Installation into sysroot
|
||||
install: install-headers install-kernel
|
||||
|
||||
install-include-dirs: headers
|
||||
mkdir -p $(INSTALLINCLUDEDIR)
|
||||
DIRS=$$(echo $(HEADERDIRS) | \
|
||||
tr ' ' '\n' | \
|
||||
sed 's/include\/*//'); \
|
||||
for D in $$DIRS; do \
|
||||
mkdir -p $(INSTALLINCLUDEDIR)/$$D || exit $?; \
|
||||
done
|
||||
mkdir -p $(DESTDIR)$(INCLUDEDIR)
|
||||
|
||||
install-headers: install-include-dirs headers
|
||||
for SRC in $(HEADERS); do \
|
||||
DEST=`echo $$SRC | sed 's/include\///'`; \
|
||||
cp -P $$SRC $(INSTALLINCLUDEDIR)/$$DEST || exit $?; \
|
||||
done
|
||||
cp -RTv include $(DESTDIR)$(INCLUDEDIR)
|
||||
|
||||
install-kernel: install-kernel-binary
|
||||
|
||||
install-kernel-binary:
|
||||
mkdir -p $(INSTALLBOOTDIR)/$(HOST)
|
||||
cp -P sortix.bin $(INSTALLBOOTDIR)/$(HOST)
|
||||
install-kernel-binary: sortix.bin
|
||||
mkdir -p $(DESTDIR)$(BOOTDIR)/$(HOST)
|
||||
cp sortix.bin $(DESTDIR)$(BOOTDIR)/$(HOST)
|
||||
|
||||
|
|
|
@ -1,15 +1,17 @@
|
|||
SOFTWARE_MEANT_FOR_SORTIX=1
|
||||
include ../compiler.mak
|
||||
include ../version.mak
|
||||
include ../dirs.mak
|
||||
|
||||
ifndef OPTLEVEL
|
||||
OPTLEVEL=-O2
|
||||
OPTLEVEL=-g -O2
|
||||
endif
|
||||
|
||||
ifndef CXXFLAGS
|
||||
CXXFLAGS:=$(OPTLEVEL)
|
||||
endif
|
||||
|
||||
CPPFLAGS:=$(CPPFLAGS) -DVERSIONSTR=\"$(VERSION)\"
|
||||
CXXFLAGS:=$(CXXFLAGS) -Wall -Wextra -fno-exceptions -fno-rtti
|
||||
|
||||
BINARIES:=\
|
||||
|
@ -38,21 +40,21 @@ head \
|
|||
tail \
|
||||
type \
|
||||
|
||||
INSTALLBINARIES:=$(addprefix $(DESTDIR)$(BINDIR)/,$(BINARIES))
|
||||
|
||||
all: $(BINARIES)
|
||||
|
||||
.PHONY: all install uninstall clean
|
||||
|
||||
install: all
|
||||
mkdir -p $(INSTALLBINDIR)/$(HOST)
|
||||
install $(BINARIES) $(INSTALLBINDIR)/$(HOST)
|
||||
mkdir -p $(DESTDIR)$(BINDIR)
|
||||
install $(BINARIES) $(DESTDIR)$(BINDIR)
|
||||
|
||||
uninstall:
|
||||
for FILE in $(INSTALLBINDIR); do \
|
||||
rm -f $(INSTALLBINDIR)/$(HOST)/$$FILE; \
|
||||
done
|
||||
rm -f $(INSTALLBINARIES) $(DESTDIR)$(BINDIR)/install
|
||||
|
||||
%: %.cpp
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $< -o $@
|
||||
$(CXX) -std=gnu++11 $(CPPFLAGS) $(CXXFLAGS) $< -o $@
|
||||
|
||||
sh: mxsh
|
||||
cp $< $@
|
||||
|
|
Loading…
Reference in a new issue