Skip to content

OSX_Support :: MakeFile and File.h Updates #292

@deacon-mp

Description

@deacon-mp

Makefile::
# Use "make DEBUG=1" for a debug build

# The build artifacts are put in the "build-release" subfolder (or "build-debug" for a debug build).

# Uncomment below as desired to set a particular compiler or force a debug build:
# CXX = g++-12
# DEBUG = 1
# or export those into environment, or pass on the command line e.g.
# make all DEBUG=1 CXX=g++-12

COMMON_FLAGS = -Wall -std=c++20 -v
# -static-libstdc++ -static-libgcc
# -fext-numeric-literals

ifeq ($(DEBUG), 1)

BIN=build-debug

CXXFLAGS = -g $(COMMON_FLAGS)
STRIP=

else

BIN=build-release

CXXFLAGS = -O2 -DNDEBUG $(COMMON_FLAGS)
STRIP=-s

endif

SRCS1 = fs.cpp TuneEntry.cpp Primes.cpp tune.cpp CycleFile.cpp TrigBufCache.cpp Event.cpp Queue.cppTimeInfo.cpp
Profile.cpp bundle.cpp Saver.cpp KernelCompiler.cpp Kernel.cpp gpuid.cpp File.cpp Proof.cpp log.cpp Worktodo.cpp ``common.cpp main.cpp Gpu.cpp clwrap.cpp Task.cpp timeutil.cpp Args.cpp state.cpp Signal.cpp FFTConfig.cpp AllocTrac.cpp sha3.cpp md5.cpp version.cpp

SRCS2 = test.cpp

# SRCS=$(addprefix src/, $(SRCS1))

OBJS = $(SRCS1:%.cpp=$(BIN)/%.o)
DEPDIR := $(BIN)/.d
$(shell mkdir -p $(DEPDIR) >/dev/null)
DEPFLAGS = -MT $@ -MMD -MP -MF $(DEPDIR)/$*.Td
COMPILE.cc = $(CXX) $(DEPFLAGS) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
POSTCOMPILE = @mv -f $(DEPDIR)/$*.Td $(DEPDIR)/$*.d && touch $@

all: prpll

prpll: $(BIN)/prpll

amd: $(BIN)/prpll-amd

#$(BIN)/test: $(BIN)/test.o
# $(CXX) $(CXXFLAGS) -o $@ $< $(LIBPATH) ${STRIP}

$(BIN)/prpll: ${OBJS}
# $(CXX) $(CXXFLAGS) -o $@ ${OBJS} -lpthread -lOpenCL ${STRIP}
$(CXX) $(CXXFLAGS) -o $@ ${OBJS} -lpthread -lOpenCL -lstdc++ ${STRIP}`

# Instead of linking with libOpenCL, link with libamdocl64
$(BIN)/prpll-amd: ${OBJS}
$(CXX) $(CXXFLAGS) -o $@ ${OBJS} -lamdocl64 -L/opt/rocm/lib ${STRIP}

clean:
rm -rf build-debug build-release

$(BIN)/%.o : src/%.cpp $(DEPDIR)/%.d
$(COMPILE.cc) $(OUTPUT_OPTION) $<
$(POSTCOMPILE)

# src/bundle.cpp is just a wrapping of the OpenCL sources (*.cl) as a C string.

src/bundle.cpp: genbundle.sh src/cl/*.cl
./genbundle.sh $^ > src/bundle.cpp

$(DEPDIR)/%.d: ;
.PRECIOUS: $(DEPDIR)/%.d

#src/version.cpp : src/version.inc

src/version.inc: FORCE
echo \"basename `git describe --tags --long --dirty --always --match v/prpll/*`\" > $(BIN)/version.new
diff -q -N $(BIN)/version.new $@ >/dev/null || mv $(BIN)/version.new $@
echo Version: cat $@``

FORCE:

include $(wildcard $(patsubst %,$(DEPDIR)/%.d,$(basename $(SRCS1))))
# include $(wildcard $(patsubst %,$(DEPDIR)/%.d,$(basename $(SRCS2))))

src/File.h::
58 | fsync(fileno(f));

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions