# Compiling the cmm files
# ToDo: should we really include Rts.h here? Required for GNU_ATTRIBUTE().
-SRC_HC_OPTS += \
- -I. \
- -\#include Prelude.h \
- -\#include Rts.h \
- -\#include RtsFlags.h \
- -\#include RtsUtils.h \
- -\#include StgRun.h \
- -\#include Schedule.h \
- -\#include Printer.h \
- -\#include Sanity.h \
- -\#include STM.h \
- -\#include Storage.h \
- -\#include SchedAPI.h \
- -\#include Timer.h \
- -\#include ProfHeap.h \
- -\#include LdvProfile.h \
- -\#include Profiling.h \
- -\#include OSThreads.h \
- -\#include Apply.h \
- -\#include SMP.h
+SRC_HC_OPTS += -I. -\#include HCIncludes.h
ifeq "$(Windows)" "YES"
PrimOps_HC_OPTS += -\#include '<windows.h>' -\#include win32/AsyncIO.h
PrimOps_HC_OPTS += -\#include posix/Itimer.h
endif
+# Otherwise the stack-smash handler gets triggered.
+ifeq "$(TargetOS_CPP)" "openbsd"
+SRC_HC_OPTS += -optc-fno-stack-protector
+endif
+
# -O3 helps unroll some loops (especially in copy() with a constant argument).
# -fno-strict-aliasing is a hack because we often mix StgPtr and StgClosure pointers
# to the same object, and gcc will assume these don't alias. eg. it happens in