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…
	
	Add table
		Add a link
		
	
		Reference in a new issue