Skip to content

Commit

Permalink
issue #15: fix config deps config.inc -> core/config.h
Browse files Browse the repository at this point in the history
changing config.inc now transports the changes over to config.h
cmdline make XX= overrides also, but are not stored in config.inc
this is okay
  • Loading branch information
Reini Urban committed Mar 1, 2013
1 parent 8cd9fbc commit a323333
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 34 deletions.
11 changes: 5 additions & 6 deletions Makefile
Expand Up @@ -79,16 +79,14 @@ config:
@${MAKE} -s -f config.mak

# Force sync with config.inc
core/config.h: core/version.h tools/config.sh config.mak
@${ECHO} MAKE -f config.mak $@
core/config.h: config.inc core/version.h tools/config.sh config.mak
@${MAKE} -s -f config.mak $@

core/version.h: $(shell git show-ref HEAD | ${SED} "s,^.* ,.git/,g")
@${MAKE} -s -f config.mak $@

# bootstrap config.inc
config.inc: tools/config.sh config.mak
@${ECHO} MAKE -f config.mak $@
@${MAKE} -s -f config.mak $@

DEFS = -Wall -fno-strict-aliasing -Wno-return-type -D_GNU_SOURCE
Expand Down Expand Up @@ -157,18 +155,19 @@ potion${EXE}: ${OBJ_POTION} libpotion${DLL} ${LIBHACK}
${STRIP} $@; \
fi

libpotion.a: ${OBJ}
libpotion.a: ${OBJ} core/config.h core/potion.h
@${ECHO} AR $@
@if [ -e $@ ]; then rm -f $@; fi
@${AR} rcs $@ core/*.o > /dev/null

libpotion${DLL}: ${PIC_OBJ}
libpotion${DLL}: ${PIC_OBJ} core/config.h core/potion.h
@${ECHO} LD $@ -fpic
@if [ -e $@ ]; then rm -f $@; fi
@${CC} ${DEBUGFLAGS} -o $@ ${LDDLLFLAGS} \
${PIC_OBJ} ${LIBS} > /dev/null

lib/readline${LOADEXT}: config.inc lib/readline/Makefile lib/readline/linenoise.c \
lib/readline${LOADEXT}: core/config.h core/potion.h \
lib/readline/Makefile lib/readline/linenoise.c \
lib/readline/linenoise.h
@${ECHO} MAKE $@ -fpic
@${MAKE} -s -C lib/readline
Expand Down
49 changes: 30 additions & 19 deletions config.mak
Expand Up @@ -8,19 +8,26 @@ LDDLLFLAGS = -shared -fpic
INCS = -Icore
LIBS = -lm
AR ?= ar
JIT ?= 1
DEBUG ?= 0
EXE =
APPLE =
WIN32 = 0
CLANG = 0
JIT = 0
EXE =
APPLE = 0

CAT = /bin/cat
ECHO = /bin/echo
SED = sed
EXPR = expr
GREG = tools/greg${EXE}

STRIP ?= `./tools/config.sh ${CC} strip`
STRIP ?= `./tools/config.sh "${CC}" strip`
JIT_TARGET ?= `./tools/config.sh "${CC}" jit`
ifneq (${JIT_TARGET},)
JIT = 1
endif

ifeq (${JIT_TARGET},X86)
ifneq (${DEBUG},0)
# http://udis86.sourceforge.net/ x86 16,32,64 bit
# port install udis86
Expand Down Expand Up @@ -63,8 +70,9 @@ endif
endif
endif
endif
endif

ifneq ($(shell ./tools/config.sh ${CC} clang),0)
ifneq ($(shell ./tools/config.sh "${CC}" clang),0)
CLANG = 1
CFLAGS += -Wno-unused-value
endif
Expand All @@ -86,11 +94,11 @@ endif

# CFLAGS += \${DEFINES} \${DEBUGFLAGS}

ifneq ($(shell ./tools/config.sh ${CC} bsd),1)
ifneq ($(shell ./tools/config.sh "${CC}" bsd),1)
LIBS += -ldl
endif
# cygwin is not WIN32
ifeq ($(shell ./tools/config.sh ${CC} mingw),1)
ifeq ($(shell ./tools/config.sh "${CC}" mingw),1)
WIN32 = 1
LDDLLFLAGS = -shared
EXE = .exe
Expand All @@ -100,15 +108,15 @@ ifeq ($(shell ./tools/config.sh ${CC} mingw),1)
LIBS += -Ltools/dlfcn-win32/lib
RUNPOTION = potion.exe
else
ifeq ($(shell ./tools/config.sh ${CC} cygwin),1)
ifeq ($(shell ./tools/config.sh "${CC}" cygwin),1)
CYGWIN = 1
LDDLLFLAGS = -shared
EXE = .exe
LOADEXT = .dll
DLL = .dll
RUNPOTION = ./potion
else
ifeq ($(shell ./tools/config.sh ${CC} apple),1)
ifeq ($(shell ./tools/config.sh "${CC}" apple),1)
APPLE = 1
DLL = .dylib
LOADEXT = .bundle
Expand Down Expand Up @@ -138,10 +146,7 @@ config.inc.echo:
@${ECHO} "CC = ${CC}"
@${ECHO} "DEFINES = ${DEFINES}"
@${ECHO} "DEBUGFLAGS = ${DEBUGFLAGS}"
@${ECHO} -n "CFLAGS = ${CFLAGS} "
@${ECHO} -n "\$$"
@${ECHO} -n "{DEFINES} \$$"
@${ECHO} "{DEBUGFLAGS}"
@${ECHO} "CFLAGS = ${CFLAGS} " "\$$"{DEFINES} "\$$"{DEBUGFLAGS}
@${ECHO} "LDDLLFLAGS = ${LDDLLFLAGS}"
@${ECHO} "LDEXEFLAGS = ${LDEXEFLAGS}"
@${ECHO} "LIBS = ${LIBS}"
Expand All @@ -150,17 +155,23 @@ config.inc.echo:
@${ECHO} "WIN32 = ${WIN32}"
@${ECHO} "CLANG = ${CLANG}"
@${ECHO} "JIT = ${JIT}"
@test -n ${JIT_TARGET} && ${ECHO} "JIT_${JIT_TARGET} = 1"
@${ECHO} "DEBUG = ${DEBUG}"
@${ECHO} "RUNPOTION = ${RUNPOTION}"
@${ECHO} -n "REVISION = "
@${ECHO} $(shell git rev-list --abbrev-commit HEAD | wc -l | ${SED} "s/ //g")
@${ECHO} "REVISION = " $(shell git rev-list --abbrev-commit HEAD | wc -l | ${SED} "s/ //g")

config.h.echo:
@${ECHO} "#define POTION_CC \"${CC}\""
@${ECHO} "#define POTION_CFLAGS \"${CFLAGS}\""
@${ECHO} "#define POTION_JIT ${JIT}"
@${ECHO} "#define POTION_MAKE \"${MAKE}\""
@${ECHO} "#define POTION_PREFIX \"${PREFIX}\""
@${ECHO} "#define POTION_WIN32 ${WIN32}"
@${ECHO} "#define POTION_EXE \"${EXE}\""
@${ECHO} "#define POTION_DLL \"${DLL}\""
@${ECHO} "#define POTION_LOADEXT \"${LOADEXT}\""
@test -n ${JIT_TARGET} && ${ECHO} "#define POTION_JIT_TARGET POTION_${JIT_TARGET}"
@test -n ${JIT_TARGET} && ${ECHO} "#define POTION_JIT_NAME " $(shell echo ${JIT_TARGET} | tr A-Z a-z)
@${ECHO} ${DEFINES} | ${SED} "s,-D\(\w*\),\n#define \1 1,g; s,-I[a-z/:]* ,,g"
@${ECHO}
@./tools/config.sh ${CC}
Expand All @@ -171,12 +182,12 @@ config.inc: tools/config.sh config.mak
@${ECHO} "# -*- makefile -*-" > config.inc
@${ECHO} "# created by ${MAKE} -f config.mak" >> config.inc
@${MAKE} -s -f config.mak config.inc.echo >> $@
@${MAKE} -s -f config.mak -B core/config.h
@${CAT} core/config.h | ${SED} "/POTION_JIT_TARGET /!d;" | \
${SED} "s,\(.*JIT_TARGET \)POTION_\(.*\),JIT_\2 = 1," >> $@
#@${MAKE} -s -f config.mak core/config.h
#@${CAT} core/config.h | ${SED} "/POTION_JIT_TARGET /!d;" | \
# ${SED} "s,\(.*JIT_TARGET \)POTION_\(.*\),JIT_\2 = 1," >> $@

# Force sync with config.inc
core/config.h: core/version.h tools/config.sh config.mak
core/config.h: config.inc core/version.h tools/config.sh config.mak
@${ECHO} MAKE $@
@${CAT} core/version.h > core/config.h
@${MAKE} -s -f config.mak config.h.echo >> core/config.h
Expand Down
19 changes: 10 additions & 9 deletions tools/config.sh
@@ -1,4 +1,5 @@
#!/bin/sh
# helper to generate config.inc and core/config.h

CC=$1
AC="tools/config.c"
Expand All @@ -19,6 +20,7 @@ JIT_X86=`echo "$TARGET" | sed "/86/!d"`
JIT_PPC=`echo "$TARGET" | sed "/powerpc/!d"`
JIT_I686=`echo "$TARGET" | sed "/i686/!d"`
JIT_AMD64=`echo "$TARGET" | sed "/amd64/!d"`
JIT_ARM=`echo "$TARGET" | sed "/arm/!d"`

if [ $MINGW -eq 0 ]; then
EXE=""
Expand Down Expand Up @@ -63,6 +65,14 @@ elif [ "$2" = "bsd" ]; then
else echo "1"; fi
elif [ "$2" = "version" ]; then
cat core/potion.h | sed "/POTION_VERSION/!d; s/\\\"$//; s/.*\\\"//"
elif [ "$2" = "jit" ]; then
if [ "$JIT_X86$MINGW_GCC" != "" -o "$JIT_I686" != "" -o "$JIT_AMD64" != "" ]; then
echo "X86"
elif [ "$JIT_PPC" != "" ]; then
echo "PPC"
elif [ "$JIT_ARM" != "" ]; then
echo "ARM"
fi
elif [ "$2" = "strip" ]; then
if [ $MINGW -eq 0 ]; then
if [ $CYGWIN -eq 0 ]; then
Expand Down Expand Up @@ -107,16 +117,7 @@ else
ARGDIR="1"
fi

if [ "$JIT_X86$MINGW_GCC" != "" -o "$JIT_I686" != "" -o "$JIT_AMD64" != "" ]; then
echo "#define POTION_JIT_TARGET POTION_X86"
elif [ "$JIT_PPC" != "" ]; then
echo "#define POTION_JIT_TARGET POTION_PPC"
fi
echo "#define POTION_PLATFORM \"$TARGET\""
echo "#define POTION_WIN32 $MINGW"
echo "#define POTION_EXE \"$EXE\""
echo "#define POTION_DLL \"$DLL\""
echo "#define POTION_LOADEXT \"$LOADEXT\""
echo "#define POTION_LIBEXT \"$LIBEXT\""
echo
echo "#define PN_SIZE_T $LONG"
Expand Down

0 comments on commit a323333

Please sign in to comment.