]> git.seodisparate.com - SimpleArchiver/commitdiff
Add `platforms.h` header to determine platform
authorStephen Seo <seo.disparate@gmail.com>
Sat, 29 Jun 2024 07:52:17 +0000 (16:52 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Sat, 29 Jun 2024 07:52:17 +0000 (16:52 +0900)
The platforms.h header will allow for using/implementing OS-specific
code that will differ based on the platform the program is compiled for.

cosmopolitan/Makefile
src/platforms.h [new file with mode: 0644]

index 70299cb5de37b6c5e9486726efb6ce11bf47443d..9f70d86033594627aee2e16d3261b95757195814 100644 (file)
@@ -14,7 +14,8 @@ HEADERS = \
                ../src/parser.h \
                ../src/algorithms/linear_congruential_gen.h \
                ../src/data_structures/linked_list.h \
-               ../src/data_structures/hash_map.h
+               ../src/data_structures/hash_map.h \
+               ../src/platforms.h
 
 OBJECTS = $(addprefix ${OBJDIR}/,$(subst ..,PREVDIR,$(patsubst %.c,%.c.o,${SOURCES})))
 
diff --git a/src/platforms.h b/src/platforms.h
new file mode 100644 (file)
index 0000000..950f683
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2024 Stephen Seo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * `platforms.h` is the header that determines what platform this program is
+ * compiled for.
+ */
+
+// Determine platform macros
+#define SIMPLE_ARCHIVER_PLATFORM_WINDOWS 1
+#define SIMPLE_ARCHIVER_PLATFORM_MAC 2
+#define SIMPLE_ARCHIVER_PLATFORM_LINUX 3
+#define SIMPLE_ARCHIVER_PLATFORM_COSMOPOLITAN 4
+#define SIMPLE_ARCHIVER_PLATFORM_UNKNOWN 0
+
+#if defined __COSMOPOLITAN__
+# define SIMPLE_ARCHIVER_PLATFORM SIMPLE_ARCHIVER_PLATFORM_COSMOPOLITAN
+#elif defined _WIN32
+# define SIMPLE_ARCHIVER_PLATFORM SIMPLE_ARCHIVER_PLATFORM_WINDOWS
+#elif defined __APPLE__
+# define SIMPLE_ARCHIVER_PLATFORM SIMPLE_ARCHIVER_PLATFORM_MAC
+#elif defined __linux__
+# define SIMPLE_ARCHIVER_PLATFORM SIMPLE_ARCHIVER_PLATFORM_LINUX
+#else
+# define SIMPLE_ARCHIVER_PLATFORM SIMPLE_ARCHIVER_PLATFORM_UNKNOWN
+#endif