Added support for building the shared library (DLL) via Makefile.
This commit is contained in:
parent
aaecd43e2d
commit
2505493534
48
Makefile
48
Makefile
@ -6,13 +6,20 @@ DEBUG ?= 0
|
|||||||
NALYZE ?= 0
|
NALYZE ?= 0
|
||||||
ASAN ?= 0
|
ASAN ?= 0
|
||||||
STATIC ?= 0
|
STATIC ?= 0
|
||||||
|
SHARED ?= 0
|
||||||
FLTO ?= 0
|
FLTO ?= 0
|
||||||
FPGO ?= 0
|
FPGO ?= 0
|
||||||
STRIP ?= 0
|
STRIP ?= 0
|
||||||
CPU ?= 0
|
CPU ?= 0
|
||||||
THREAD ?= 1
|
THREAD ?= 1
|
||||||
|
|
||||||
$(info Options: DEBUG=$(DEBUG), NALYZE=$(NALYZE), ASAN=$(ASAN), STATIC=$(STATIC), FLTO=$(FLTO), FPGO=$(FPGO), STRIP=$(STRIP), CPU=$(CPU), THREAD=$(THREAD))
|
$(info Options: DEBUG=$(DEBUG), NALYZE=$(NALYZE), ASAN=$(ASAN), STATIC=$(STATIC), SHARED=$(SHARED), FLTO=$(FLTO), FPGO=$(FPGO), STRIP=$(STRIP), CPU=$(CPU), THREAD=$(THREAD))
|
||||||
|
|
||||||
|
ifneq ($(SHARED),0)
|
||||||
|
ifneq ($(STATIC),0)
|
||||||
|
$(error Options SHARED=1 and STATIC=1 are mutually exclusive!)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# Directories
|
# Directories
|
||||||
@ -72,6 +79,9 @@ endif
|
|||||||
|
|
||||||
ifneq (,$(firstword $(filter %mingw32 %-windows-gnu %-cygwin %-cygnus,$(MACHINE))))
|
ifneq (,$(firstword $(filter %mingw32 %-windows-gnu %-cygwin %-cygnus,$(MACHINE))))
|
||||||
EXE_SUFFIX := .exe
|
EXE_SUFFIX := .exe
|
||||||
|
LIB_SUFFIX := .$(if $(subst 0,,$(SHARED)),dll,lib)
|
||||||
|
else
|
||||||
|
LIB_SUFFIX := .$(if $(subst 0,,$(SHARED)),$(if $(findstring -apple-darwin,$(MACHINE)),dylib,so),a)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq (,$(firstword $(filter %-w64-mingw32 %w64-windows-gnu,$(MACHINE))))
|
ifneq (,$(firstword $(filter %-w64-mingw32 %w64-windows-gnu,$(MACHINE))))
|
||||||
@ -96,12 +106,26 @@ ifneq (,$(firstword $(filter %-pc-haiku %-unknown-haiku,$(MACHINE))))
|
|||||||
LDFLGS += -lbsd
|
LDFLGS += -lbsd
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
APP_CFLAGS = $(CFLAGS)
|
||||||
|
APP_LDFLGS = $(LDFLGS) -L$(SUBDIR_LIB)/lib -l$(VERSION_LIB)
|
||||||
|
LIB_CFLAGS = $(CFLAGS)
|
||||||
|
LIB_LDFLGS = $(LDFLGS)
|
||||||
|
|
||||||
|
ifneq ($(SHARED),0)
|
||||||
|
LIB_CFLAGS += -fPIC
|
||||||
|
ifneq (,$(firstword $(filter %-w64-mingw32 %w64-windows-gnu,$(MACHINE))))
|
||||||
|
LIB_LDFLGS = -Wl,--out-implib,"$@.a" $(LDFLGS)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
# File names
|
# File names
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
VERSION_LIB := slunkcrypt$(CONFIG)-1
|
||||||
|
|
||||||
OUTNAME_APP := slunkcrypt$(CONFIG)$(EXE_SUFFIX)
|
OUTNAME_APP := slunkcrypt$(CONFIG)$(EXE_SUFFIX)
|
||||||
OUTNAME_LIB := libslunkcrypt$(CONFIG)-1.a
|
OUTNAME_LIB := lib$(VERSION_LIB)$(LIB_SUFFIX)
|
||||||
|
|
||||||
OUTPATH_APP := $(SUBDIR_APP)/bin/$(OUTNAME_APP)
|
OUTPATH_APP := $(SUBDIR_APP)/bin/$(OUTNAME_APP)
|
||||||
OUTPATH_LIB := $(SUBDIR_LIB)/lib/$(OUTNAME_LIB)
|
OUTPATH_LIB := $(SUBDIR_LIB)/lib/$(OUTNAME_LIB)
|
||||||
@ -121,21 +145,27 @@ endif
|
|||||||
# Targets
|
# Targets
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
.PHONY: all clean
|
.PHONY: all build clean
|
||||||
|
|
||||||
all: $(OUTPATH_APP)
|
all: clean build
|
||||||
|
|
||||||
|
build: $(OUTPATH_APP)
|
||||||
|
|
||||||
$(OUTPATH_APP): $(OBJECTS_APP) $(OUTPATH_LIB)
|
$(OUTPATH_APP): $(OBJECTS_APP) $(OUTPATH_LIB)
|
||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
$(CC) $(CFLAGS) $^ -o $@ $(LDFLGS)
|
$(CC) $(APP_CFLAGS) $(OBJECTS_APP) -o $@ $(APP_LDFLGS)
|
||||||
|
|
||||||
$(OUTPATH_LIB): $(OBJECTS_LIB)
|
$(OUTPATH_LIB): $(OBJECTS_LIB)
|
||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
|
ifneq ($(SHARED),0)
|
||||||
|
$(CC) $(LIB_CFLAGS) $^ -shared -o $@ $(LIB_LDFLGS)
|
||||||
|
else
|
||||||
$(AR) rcs $@ $^
|
$(AR) rcs $@ $^
|
||||||
|
endif
|
||||||
|
|
||||||
$(SUBDIR_APP)/obj/%$(CONFIG).o: $(SUBDIR_APP)/src/%.c
|
$(SUBDIR_APP)/obj/%$(CONFIG).o: $(SUBDIR_APP)/src/%.c
|
||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
$(CC) $(CFLAGS) -c $< -o $@
|
$(CC) $(APP_CFLAGS) -c $< -o $@
|
||||||
|
|
||||||
$(SUBDIR_APP)/obj/%.rsrc.o: $(SUBDIR_APP)/res/%.rc
|
$(SUBDIR_APP)/obj/%.rsrc.o: $(SUBDIR_APP)/res/%.rc
|
||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
@ -143,8 +173,8 @@ $(SUBDIR_APP)/obj/%.rsrc.o: $(SUBDIR_APP)/res/%.rc
|
|||||||
|
|
||||||
$(SUBDIR_LIB)/obj/%$(CONFIG).o: $(SUBDIR_LIB)/src/%.c
|
$(SUBDIR_LIB)/obj/%$(CONFIG).o: $(SUBDIR_LIB)/src/%.c
|
||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
$(CC) $(CFLAGS) -c $< -o $@
|
$(CC) $(LIB_CFLAGS) -c $< -o $@
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(RM) $(SUBDIR_APP)/obj/*.o $(SUBDIR_APP)/obj/*.gcda $(SUBDIR_APP)/lib/*.a $(SUBDIR_APP)/bin/*$(EXE_SUFFIX)
|
$(RM) $(SUBDIR_APP)/obj/* $(SUBDIR_APP)/lib/* $(SUBDIR_APP)/bin/*
|
||||||
$(RM) $(SUBDIR_LIB)/obj/*.o $(SUBDIR_LIB)/obj/*.gcda $(SUBDIR_LIB)/lib/*.a $(SUBDIR_LIB)/bin/*$(EXE_SUFFIX)
|
$(RM) $(SUBDIR_LIB)/obj/* $(SUBDIR_LIB)/lib/* $(SUBDIR_LIB)/bin/*
|
||||||
|
@ -18,8 +18,6 @@ fi
|
|||||||
|
|
||||||
rm -rf "out" && mkdir -p "out"
|
rm -rf "out" && mkdir -p "out"
|
||||||
|
|
||||||
gmake CC="${cc_path}" clean
|
|
||||||
|
|
||||||
mk_slunk 32 "i686" "pentiumpro" "pentium3"
|
mk_slunk 32 "i686" "pentiumpro" "pentium3"
|
||||||
mk_slunk 64 "x86_64" "x86-64" "nocona"
|
mk_slunk 64 "x86_64" "x86-64" "nocona"
|
||||||
|
|
||||||
|
@ -15,8 +15,6 @@ fi
|
|||||||
|
|
||||||
rm -rf "out" && mkdir -p "out"
|
rm -rf "out" && mkdir -p "out"
|
||||||
|
|
||||||
$BASH -x -c "make clean"
|
|
||||||
|
|
||||||
mk_slunk "i686" "i686-gnu" "MARCH=pentiumpro MTUNE=pentium3"
|
mk_slunk "i686" "i686-gnu" "MARCH=pentiumpro MTUNE=pentium3"
|
||||||
|
|
||||||
./etc/build/build_info.sh "gcc" > "out/.build_info"
|
./etc/build/build_info.sh "gcc" > "out/.build_info"
|
||||||
|
@ -14,8 +14,6 @@ fi
|
|||||||
|
|
||||||
rm -rf "out" && mkdir -p "out"
|
rm -rf "out" && mkdir -p "out"
|
||||||
|
|
||||||
make clean
|
|
||||||
|
|
||||||
case "${BE_HOST_CPU}" in
|
case "${BE_HOST_CPU}" in
|
||||||
x86_64)
|
x86_64)
|
||||||
mk_slunk "gcc" "x86_64" "x86-64" "nocona"
|
mk_slunk "gcc" "x86_64" "x86-64" "nocona"
|
||||||
|
@ -19,8 +19,6 @@ fi
|
|||||||
|
|
||||||
rm -rf "out" && mkdir -p "out"
|
rm -rf "out" && mkdir -p "out"
|
||||||
|
|
||||||
$BASH -x -c "make clean"
|
|
||||||
|
|
||||||
mk_slunk "x86_64" "x86_64-linux-gnu" "MARCH=x86-64 MTUNE=nocona"
|
mk_slunk "x86_64" "x86_64-linux-gnu" "MARCH=x86-64 MTUNE=nocona"
|
||||||
mk_slunk "i686" "i686-linux-gnu" "MARCH=pentiumpro MTUNE=pentium3"
|
mk_slunk "i686" "i686-linux-gnu" "MARCH=pentiumpro MTUNE=pentium3"
|
||||||
|
|
||||||
|
@ -20,8 +20,6 @@ fi
|
|||||||
|
|
||||||
rm -rf "out" && mkdir -p "out"
|
rm -rf "out" && mkdir -p "out"
|
||||||
|
|
||||||
$BASH -x -c "make clean"
|
|
||||||
|
|
||||||
mk_slunk "x86_64" "MARCH=x86-64 MTUNE=nocona"
|
mk_slunk "x86_64" "MARCH=x86-64 MTUNE=nocona"
|
||||||
mk_slunk "i686" "MARCH=pentiumpro MTUNE=pentium3"
|
mk_slunk "i686" "MARCH=pentiumpro MTUNE=pentium3"
|
||||||
|
|
||||||
|
@ -13,8 +13,6 @@ mk_slunk() {
|
|||||||
|
|
||||||
rm -rf "out" && mkdir -p "out"
|
rm -rf "out" && mkdir -p "out"
|
||||||
|
|
||||||
make CC="${cc_path}" clean
|
|
||||||
|
|
||||||
mk_slunk "x86_64"
|
mk_slunk "x86_64"
|
||||||
mk_slunk "arm64"
|
mk_slunk "arm64"
|
||||||
|
|
||||||
|
@ -18,8 +18,6 @@ fi
|
|||||||
|
|
||||||
rm -rf "out" && mkdir -p "out"
|
rm -rf "out" && mkdir -p "out"
|
||||||
|
|
||||||
gmake CC="${cc_path}" clean
|
|
||||||
|
|
||||||
case "$(uname -m)" in
|
case "$(uname -m)" in
|
||||||
amd64)
|
amd64)
|
||||||
mk_slunk "x86_64" "x86-64" "nocona"
|
mk_slunk "x86_64" "x86-64" "nocona"
|
||||||
|
@ -18,8 +18,6 @@ fi
|
|||||||
|
|
||||||
rm -rf "out" && mkdir -p "out"
|
rm -rf "out" && mkdir -p "out"
|
||||||
|
|
||||||
gmake CC="${cc_path}" clean
|
|
||||||
|
|
||||||
case "$(uname -m)" in
|
case "$(uname -m)" in
|
||||||
amd64)
|
amd64)
|
||||||
mk_slunk "x86_64" "x86-64" "nocona"
|
mk_slunk "x86_64" "x86-64" "nocona"
|
||||||
|
@ -18,8 +18,6 @@ fi
|
|||||||
|
|
||||||
rm -rf "out" && mkdir -p "out"
|
rm -rf "out" && mkdir -p "out"
|
||||||
|
|
||||||
gmake CC="${cc_path}" clean
|
|
||||||
|
|
||||||
mk_slunk 32 "i686" "pentiumpro" "pentium3"
|
mk_slunk 32 "i686" "pentiumpro" "pentium3"
|
||||||
mk_slunk 64 "x86_64" "x86-64" "nocona"
|
mk_slunk 64 "x86_64" "x86-64" "nocona"
|
||||||
|
|
||||||
|
@ -28,8 +28,6 @@ mk_slunk() {
|
|||||||
|
|
||||||
mkdir -p "out/_next_"
|
mkdir -p "out/_next_"
|
||||||
|
|
||||||
make -B CC="${cc_path}" clean
|
|
||||||
|
|
||||||
case "${machine}" in
|
case "${machine}" in
|
||||||
x86_64*)
|
x86_64*)
|
||||||
mk_slunk "x86_64" "x86-64" "nocona"
|
mk_slunk "x86_64" "x86-64" "nocona"
|
||||||
|
Loading…
Reference in New Issue
Block a user