Skip to content
This repository was archived by the owner on Sep 15, 2022. It is now read-only.

Commit 4277963

Browse files
authored
Merge pull request #10 from k06a/fix/macos
Fix macOS compilation and linkage
2 parents a601c72 + dc22f96 commit 4277963

File tree

5 files changed

+32
-2
lines changed

5 files changed

+32
-2
lines changed

Dispatcher.hpp

+7-1
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,17 @@
33

44
#include <stdexcept>
55
#include <fstream>
6-
#include <CL/cl.h>
76
#include <string>
87
#include <vector>
98
#include <mutex>
109

10+
#if defined(__APPLE__) || defined(__MACOSX)
11+
#include <OpenCL/cl.h>
12+
#define clCreateCommandQueueWithProperties clCreateCommandQueue
13+
#else
14+
#include <CL/cl.h>
15+
#endif
16+
1117
#include "SpeedSample.hpp"
1218
#include "CLMemory.hpp"
1319
#include "types.hpp"

Makefile

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
11
CC=g++
22
CFLAGS=-c -std=c++11 -Wall -mmmx -O2
33
CDEFINES=
4-
LDFLAGS=-s -lOpenCL
54
SOURCES=Dispatcher.cpp Mode.cpp precomp.cpp profanity.cpp SpeedSample.cpp
65
OBJECTS=$(SOURCES:.cpp=.o)
76
EXECUTABLE=profanity.x64
87

8+
UNAME_S := $(shell uname -s)
9+
ifeq ($(UNAME_S),Darwin)
10+
LDFLAGS=-framework OpenCL
11+
else
12+
LDFLAGS=-s -lOpenCL
13+
endif
14+
915
all: $(SOURCES) $(EXECUTABLE)
1016

1117
$(EXECUTABLE): $(OBJECTS)

Mode.hpp

+5
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,12 @@
22
#define HPP_MODE
33

44
#include <string>
5+
6+
#if defined(__APPLE__) || defined(__MACOSX)
7+
#include <OpenCL/cl.h>
8+
#else
59
#include <CL/cl.h>
10+
#endif
611

712
class Mode {
813
private:

profanity.cpp

+9
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,13 @@
99
#include <map>
1010
#include <set>
1111

12+
#if defined(__APPLE__) || defined(__MACOSX)
13+
#include <OpenCL/cl.h>
14+
#include <OpenCL/cl_ext.h> // Included to get topology to get an actual unique identifier per device
15+
#else
1216
#include <CL/cl.h>
1317
#include <CL/cl_ext.h> // Included to get topology to get an actual unique identifier per device
18+
#endif
1419

1520
#include "Dispatcher.hpp"
1621
#include "ArgParser.hpp"
@@ -106,13 +111,17 @@ std::vector<std::string> getBinaries(cl_program & clProgram) {
106111
}
107112

108113
unsigned int getUniqueDeviceIdentifier(const cl_device_id & deviceId) {
114+
#if defined(__APPLE__) || defined(__MACOSX)
115+
return 0;
116+
#else
109117
auto topology = clGetWrapper<cl_device_topology_amd>(clGetDeviceInfo, deviceId, CL_DEVICE_TOPOLOGY_AMD);
110118
if (topology.raw.type == CL_DEVICE_TOPOLOGY_TYPE_PCIE_AMD) {
111119
return (topology.pcie.bus << 16) + (topology.pcie.device << 8) + topology.pcie.function;
112120
}
113121
else {
114122
return 0;
115123
}
124+
#endif
116125
}
117126

118127
template <typename T> bool printResult(const T & t, const cl_int & err) {

types.hpp

+4
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@
44
/* The structs declared in this file should have size/alignment hints
55
* to ensure that their representation is identical to that in OpenCL.
66
*/
7+
#if defined(__APPLE__) || defined(__MACOSX)
8+
#include <OpenCL/cl.h>
9+
#else
710
#include <CL/cl.h>
11+
#endif
812

913
#define MP_NWORDS 8
1014

0 commit comments

Comments
 (0)