# Copyright (C) 1999-2001 Konstantin Boldyshev <konst@linuxassembly.org>
#
# MCONFIG -- Configuration stuff for asmutils
#
# $Id: MCONFIG,v 1.5 2001/03/18 07:08:25 konst Exp $

#---------------------------------------------------------------------------#

#			CONFIGURATION PARAMETERS

#---------------------------------------------------------------------------#

# Target Operating System (LINUX/FREEBSD/NETBSD/OPENBSD/BEOS/ATHEOS/LIBC)

OS = LINUX

# Kernel version (1.2 = 12, 2.4 = 24, 3.6 = 36, etc)

KERNEL = 24

# Optimization method (SIZE/SPEED)

OPTIMIZE = SIZE

# Enable debug build

#DEBUG = y

# Include version stamp into binaries

#STAMP = y

# Use custom startup code
# (currently works only with C style main() stack and BeOS)
#STARTUP = y

# LINUX only
#
# ELF hack for smaller binaries
ELF_MACROS = y

#---------------------------------------------------------------------------#

#			DO NOT EDIT BELOW IF NOT SURE

#---------------------------------------------------------------------------#

VERSION = 0.14

${OS} = y

AS := nasm
LD := ld
CC := gcc
MAKE := gmake

#
# avoid using asmutils in the build if PATH has '.'
#

MKDIR := $(shell which mkdir) -p
CHMOD := $(shell which chmod) +x
LN := $(shell which ln) -s
RM := $(shell which rm) -f
CP := $(shell which cp)
ifdef LINUX
CP += -a
else
CP += -Rp
endif

LDFLAGS :=
ASFLAGS := -w+orphan-labels -w+macro-params -i../inc/
DEFINES := -D__$(OS)__ -D__OPTIMIZE__=__O_$(OPTIMIZE)__

ifdef DEBUG
ASFLAGS += -g
ELF_MACROS =
DEFINES += -DDEBUG
endif

ifdef BUILD_LIB
ELF_MACROS =
endif

ifndef LINUX

ELF_MACROS =

ifdef NETBSD
AOUT = y
endif
ifdef OPENBSD
AOUT = y
endif

ifdef LIBC
LD = gcc
DEFINES += -D__LIBC__
ifndef STARTUP
LDFLAGS = -nostartfiles
endif
endif

endif

ifdef STARTUP
DEFINES += -D__STARTUP__
endif
ifdef KERNEL
DEFINES += -D__KERNEL__=$(KERNEL) 
endif
ifdef STAMP
DEFINES += -DSTAMP_VERSION="'asmutils $(VERSION)'" -DSTAMP_DATE="'$(shell date "+%d-%b-%Y %H:%M")'"
endif

ifdef ELF_MACROS

ASFLAGS += -f bin
DEFINES += -D__ELF_MACROS__

%:	%.asm
	$(AS) $(ASFLAGS) $(DEFINES) $<
	$(CHMOD) $*

else

ifdef AOUT
ASFLAGS += -f aoutb
STRIP = strip
ifdef BUILD_SRC
LDFLAGS += -e _start
endif
DEFINES += -D__AOUT__
else
ASFLAGS += -f elf
ifndef DEBUG
LDFLAGS += -s
endif
STRIP = strip -s -R .note -R .comment
#STRIP = sstrip
endif

%.o:	%.asm
	$(AS) $(ASFLAGS) $(DEFINES) $<

%:	%.o
	$(LD) $(LDFLAGS) -o $* $<
ifndef DEBUG
	$(STRIP) $*
endif

endif
