diff options
author | 2020-05-13 01:45:16 +0200 | |
---|---|---|
committer | 2020-05-13 01:45:16 +0200 | |
commit | 1f99e21c23f32fcc4bd2185af6cf1710c98f413a (patch) | |
tree | 4b349f2b21f0448a8526df25a6e06beb3b12b87e | |
parent | c4f15aa3a95d61ebd333b64662164e27d232ec04 (diff) | |
download | cherry-1f99e21c23f32fcc4bd2185af6cf1710c98f413a.tar.gz cherry-1f99e21c23f32fcc4bd2185af6cf1710c98f413a.zip |
Sources, samples and makefile (first alpha version)
-rw-r--r-- | samples/application1/Makefile | 33 | ||||
-rw-r--r-- | samples/application1/application.c | 35 | ||||
-rw-r--r-- | samples/application2/Makefile | 33 | ||||
-rw-r--r-- | samples/application2/application.c | 47 | ||||
-rw-r--r-- | src/cherry.c | 50 | ||||
-rw-r--r-- | src/cherry.h | 44 | ||||
-rw-r--r-- | win32/Makefile | 59 | ||||
-rw-r--r-- | win32/main.c | 37 |
8 files changed, 338 insertions, 0 deletions
diff --git a/samples/application1/Makefile b/samples/application1/Makefile new file mode 100644 index 0000000..7417484 --- /dev/null +++ b/samples/application1/Makefile @@ -0,0 +1,33 @@ +# ------------------------------------------------------------------------------ +# Sample Application makefile +# +# Author: Alessandro Iezzi info@alessandroiezzi.it +# Date : 2020-05-06 +# +# Changelog: +# 2020-05-06 - first version +# ------------------------------------------------------------------------------ + +SRC=src +OBJ=build +BIN=bin + +RM=DEL /Q + +CC=cl +CFLAGS=/c /I..\..\bin\include + +LINKER=link +LFLAGS=/DLL + +application.exe: application.obj + $(LINKER) /out:application.exe application.obj /LIBPATH:"..\..\bin\lib" cherry.lib + copy ..\..\bin\lib\cherry.dll cherry.dll + +application.obj: application.c + $(CC) $(CFLAGS) application.c /Fo"application.obj" + +clean: + if exist application.obj $(RM) *.obj + if exist application.exe $(RM) *.exe + if exist cherry.dll $(RM) *.dll diff --git a/samples/application1/application.c b/samples/application1/application.c new file mode 100644 index 0000000..64133b6 --- /dev/null +++ b/samples/application1/application.c @@ -0,0 +1,35 @@ +/*- + * Copyright (c) 2020 Alessandro Iezzi + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <stdio.h> +#include <cherry.h> + +int main(int argc, char** argv) +{ + CherryApplication* app = cherry_application_new("Sample Application"); + printf("Application name is: %s\n", app->name); + + return 0; +} diff --git a/samples/application2/Makefile b/samples/application2/Makefile new file mode 100644 index 0000000..5d86efa --- /dev/null +++ b/samples/application2/Makefile @@ -0,0 +1,33 @@ +# ------------------------------------------------------------------------------ +# Sample Application makefile +# +# Author: Alessandro Iezzi info@alessandroiezzi.it +# Date : 2020-05-06 +# +# Changelog: +# 2020-05-06 - first version +# ------------------------------------------------------------------------------ + +SRC=src +OBJ=build +BIN=bin + +RM=DEL /Q + +CC=cl +CFLAGS=/c /I..\..\bin\include + +LINKER=link +LFLAGS=User32.lib /LIBPATH:"..\..\bin\lib" cherry.lib + +application.exe: application.obj + $(LINKER) /out:application.exe application.obj $(LFLAGS) + copy ..\..\bin\lib\cherry.dll cherry.dll + +application.obj: application.c + $(CC) $(CFLAGS) application.c /Fo"application.obj" + +clean: + if exist application.obj $(RM) *.obj + if exist application.exe $(RM) *.exe + if exist cherry.dll $(RM) *.dll diff --git a/samples/application2/application.c b/samples/application2/application.c new file mode 100644 index 0000000..6ad3fe7 --- /dev/null +++ b/samples/application2/application.c @@ -0,0 +1,47 @@ +/*- + * Copyright (c) 2020 Alessandro Iezzi + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <stdio.h> +#include <cherry.h> + +int main(int argc, char** argv) +{ + CherryApplication* app; + int result; + + printf("This sample show how application enter in main loop\n"); + + app = cherry_application_new("Sample Application"); + printf("Application name is: %s\n", app->name); + + printf("Trying to call PostQuitMessage()"); + PostQuitMessage(0); + printf("Try to comment PostQuitMessage(), let's see what happens\n"); + + result = cherry_application_run(); + printf("If you comment PostQuitMessage(), you won't read this line\n"); + + return result; +} diff --git a/src/cherry.c b/src/cherry.c new file mode 100644 index 0000000..37b8291 --- /dev/null +++ b/src/cherry.c @@ -0,0 +1,50 @@ +/*- + * Copyright (c) 2020 Alessandro Iezzi + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "cherry.h" +#include <stdlib.h> +#include <string.h> + +CherryApplication *cherry_application_new(const char *name) +{ + CherryApplication *application = + (CherryApplication *) malloc(sizeof(CherryApplication)); + application->name = strdup(name); + + return application; +} + +int cherry_application_run() +{ +#if defined(WIN32) || defined(_WIN64) + MSG msg; + while (GetMessage(&msg, NULL, 0, 0)) { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + + return msg.wParam; +#endif +} diff --git a/src/cherry.h b/src/cherry.h new file mode 100644 index 0000000..1888bb1 --- /dev/null +++ b/src/cherry.h @@ -0,0 +1,44 @@ +/*- + * Copyright (c) 2020 Alessandro Iezzi + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef __CHERRY_H__ +#define __CHERRY_H__ + +#include <stdio.h> + +#ifdef _WIN64 +#include <Windows.h> +#define CHERRY_LIB __declspec(dllexport) +#endif /* WIN32 */ + + +typedef struct CherryApplication { + char *name; +} CherryApplication; + +CHERRY_LIB CherryApplication *cherry_application_new(const char *); +CHERRY_LIB int cherry_application_run(); + +#endif /* __CHERRY_H__ */ diff --git a/win32/Makefile b/win32/Makefile new file mode 100644 index 0000000..a720e83 --- /dev/null +++ b/win32/Makefile @@ -0,0 +1,59 @@ +# ------------------------------------------------------------------------------ +# Generic makefile +# +# Author: Alessandro Iezzi info@alessandroiezzi.it +# Date : 2020-05-06 +# +# Changelog: +# 2020-05-06 - first version +# ------------------------------------------------------------------------------ + +SRC = ..\src +OBJ = ..\build +BIN = ..\bin +RM = DEL /Q +CC = cl +CFLAGS = /c /DUNICODE /D_UNICODE +LINKER = link +LFLAGS = /DLL User32.lib + +OBJECT_FILES = $(OBJ)/cherry.obj \ + $(OBJ)/main.obj +INCLUDE_FILES = $(BIN)/include/cherry.h + +$(BIN)/cherry.dll: $(BIN) $(INCLUDE_FILES) $(OBJECT_FILES) + lib /out:$(BIN)/lib/cherry.lib $(OBJECT_FILES) + @$(LINKER) $(LFLAGS) /out:$(BIN)/lib/cherry.dll $(OBJECT_FILES) + +$(BIN)/include/cherry.h: $(SRC)/cherry.h + copy $(SRC)\cherry.h $(BIN)\include\cherry.h + +$(OBJ)/cherry.obj: $(OBJ) $(SRC)/cherry.c $(SRC)/cherry.h + $(CC) $(CFLAGS) $(SRC)/cherry.c /Fo"$(OBJ)\cherry.obj" + +$(OBJ)/main.obj: $(OBJ) main.c + $(CC) $(CFLAGS) main.c /Fo"$(OBJ)\main.obj" + +all: $(OBJ) $(BIN) + +$(OBJ): + mkdir $(OBJ) + +$(BIN): + mkdir $(BIN) + mkdir $(BIN)\lib + mkdir $(BIN)\include + +clean: +# Remove OBJ directory + if exist $(OBJ) $(RM) $(OBJ) + if exist $(OBJ) rmdir /Q $(OBJ) +# Remove lib directory + if exist $(BIN)\lib $(RM) $(BIN)\lib + if exist $(BIN)\lib rmdir $(BIN)\lib +# Remove include directory + if exist $(BIN)\include $(RM) $(BIN)\include + if exist $(BIN)\include rmdir $(BIN)\include +# Remove BIN directory + if exist $(BIN) $(RM) $(BIN) + if exist $(BIN) rmdir /Q $(BIN) diff --git a/win32/main.c b/win32/main.c new file mode 100644 index 0000000..11ed005 --- /dev/null +++ b/win32/main.c @@ -0,0 +1,37 @@ +/*- + * Copyright (c) 2020 Alessandro Iezzi + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <windows.h> + +BOOL APIENTRY DllMain( HANDLE hinstDLL, DWORD fdwReason, LPVOID lpvReserved ) +{ + switch ( fdwReason ) { + case DLL_PROCESS_ATTACH: + // Here goes the default register class + break; + } + + return TRUE; +} |