From ea919f3eb39ed25c7ac9216c89bedf1a008a0954 Mon Sep 17 00:00:00 2001 From: Stephen Seo Date: Sat, 29 Jun 2024 16:52:17 +0900 Subject: [PATCH] Add `platforms.h` header to determine platform 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 | 3 ++- src/platforms.h | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 src/platforms.h diff --git a/cosmopolitan/Makefile b/cosmopolitan/Makefile index 70299cb..9f70d86 100644 --- a/cosmopolitan/Makefile +++ b/cosmopolitan/Makefile @@ -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 index 0000000..950f683 --- /dev/null +++ b/src/platforms.h @@ -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